Clinical trial intelligence over MCP

Bring approved trial intelligence into your AI workflow.

Connect ChatGPT, Claude, or your own software to shortlist trials, classify eligibility, retrieve approved profiles and documents, and extract structured variables.

Streamable HTTP endpoint
https://mcp.trialagents.com/mcp
Service online
Quick start

One analysis, one reusable ID

Every MCP workflow begins with an approved report run created in Intel Agent. The first tool call turns that run into a 60-minute analysis lease; every later call uses the returned analysis_id.

!
Public connector sign-in is not enabled yet.

The MCP endpoint currently accepts only TrialAgents-issued private service credentials. ChatGPT and Claude require a public OAuth flow before customers can connect safely. The platform steps below are ready for that release; do not paste an internal service token into either product.

01

Create a report run

Open Intel Agent, configure the report, and complete plan approval.

02

Connect your client

Add the remote MCP URL and complete TrialAgents authorization when available.

03

Start the analysis

Call start_analysis once with the app-created report_run_id.

04

Use the tools

Pass the returned analysis_id to every filter, profile, document, classification, or extraction call.

Connect

Exact setup by client

Select a client for its current setup path. ChatGPT and Claude use hosted connectors; software integrations use the standard MCP SDK over Streamable HTTP.

Awaiting TrialAgents OAuth

Connect from ChatGPT

Custom MCP apps are managed through ChatGPT developer mode. Workspace permissions and plan availability apply.

  1. Ask your workspace admin to enable Developer mode / Create custom MCP connectors under Workspace Settings → Permissions & Roles → Connected data.
  2. Open Workspace Settings → Apps → Create.
  3. Name the app TrialAgents Intel and enter the MCP URL shown here.
  4. Complete the TrialAgents OAuth sign-in. This step will work after public authorization launches.
  5. Publish or enable the app, then select it in a new conversation and use the starter prompt.
Official ChatGPT setup guide ↗
MCP server URL
https://mcp.trialagents.com/mcp
Starter prompt

Use TrialAgents Intel. Start the approved report run RUN_ID, shortlist phase 2 solid-tumor oncology trials recruiting in Germany, and return the EU trial number, title, and sponsor for each match.

Awaiting TrialAgents OAuth

Connect from Claude

Claude supports public remote MCP servers as custom connectors across its web and desktop surfaces.

  1. On Pro or Max, open Customize → Connectors. On Team or Enterprise, an Owner first opens Organization settings → Connectors.
  2. Click +, choose Add custom connector (or Custom → Web for an organization), and enter the MCP URL.
  3. Name it TrialAgents Intel, save it, then click Connect.
  4. Complete the TrialAgents OAuth sign-in. This step will work after public authorization launches.
  5. In a chat, use the + menu → Connectors and enable TrialAgents Intel for that conversation.
Official Claude setup guide ↗
Remote MCP server URL
https://mcp.trialagents.com/mcp
Starter prompt

Use TrialAgents Intel to start report run RUN_ID. Filter the approved trial profiles first, classify the shortlist against my criteria, then retrieve full profiles only for eligible trials.

Private integration beta

Connect from your software

Use a TrialAgents-issued bearer credential with the official Python MCP SDK. Never commit the credential or send it to a browser.

  1. Obtain a private integration credential from TrialAgents and store it as TRIALAGENTS_ACCESS_TOKEN.
  2. Install Python 3.11+ and the MCP SDK with the command on the right.
  3. Copy the example, replace run_... with an approved Intel Agent report run ID, and execute it.
  4. Keep the returned analysis_id and pass it to every later tool call for that analysis.
MCP Streamable HTTP specification ↗
Install
python -m pip install "mcp>=2,<3"
Python · connect and call a tool
import asyncio
import os

import httpx2
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client

MCP_URL = "https://mcp.trialagents.com/mcp"

async def main():
    headers = {
        "Authorization": f"Bearer {os.environ['TRIALAGENTS_ACCESS_TOKEN']}"
    }
    async with httpx2.AsyncClient(headers=headers) as http:
        async with streamable_http_client(MCP_URL, http_client=http) as streams:
            read_stream, write_stream = streams
            async with ClientSession(read_stream, write_stream) as session:
                await session.initialize()
                result = await session.call_tool(
                    "start_analysis",
                    {"report_run_id": "run_..."},
                )
                print(result.structured_content)

asyncio.run(main())
Tool map

Use the lightest tool that answers the question

Start with deterministic filtering. Classify only a focused shortlist, retrieve full profiles only for selected trials, and load document text only when the profile does not contain the answer.

start_analysis01

Open the analysis lease

Turns an approved report run into the active analysis ID used by every other tool.

One active 60-minute lease
filter_trials02

Build a shortlist

Applies structured filters and returns only EU number, trial title, and sponsor—not document inventory.

Up to 100 results per page
classify_trials03

Classify eligibility

Sends each complete contact-redacted profile to Terra, then returns only eligible, ineligible, and uncertain ID buckets.

Up to 25 trials per call
get_profiles04

Read complete profiles

Returns selected approved profiles, including the six document-category arrays and their exact filenames.

Up to 10 trials per call
get_documents05

Read one document

Uses an exact filename from the trial profile and returns extracted text in bounded continuation parts.

One document per call
extract_variables05

Extract typed values

Sends one complete profile and its single profile-listed protocol to Terra, returning only the requested values.

Up to 20 variables per call
Document filenames live in Trial Profiles. Call get_profiles first and copy the exact name from available_extracted_documents before calling get_documents. Empty categories are returned as empty arrays.
Copyable calls

A complete analysis sequence

These are MCP tool arguments—not raw HTTP request bodies. Paste them into an MCP inspector, use them with session.call_tool(), or give the equivalent instruction to ChatGPT or Claude.

1. Start analysis

Use the report run created and approved in Intel Agent.

start_analysis
{
  "report_run_id": "run_..."
}

2. Filter trials

Different fields combine with AND. Page with offset if needed.

filter_trials
{
  "analysis_id": "ana_...",
  "filters": {
    "therapeutic_areas": {
      "operator": "contains_any",
      "values": ["Solid Tumor Oncology"]
    },
    "phase": {"operator": "contains_any", "values": [2]},
    "countries": [{
      "country_codes": {"operator": "contains_any", "values": ["DE"]},
      "recruitment_statuses": {
        "operator": "contains_any",
        "values": ["Authorised"]
      }
    }]
  },
  "limit": 20,
  "offset": 0
}

3. Classify shortlist

Use identical criteria across batches of no more than 25 trial IDs.

classify_trials
{
  "analysis_id": "ana_...",
  "trial_ids": ["2024-500001-00-00"],
  "inclusion_criteria": [
    "The trial includes adults with unresectable locally advanced disease"
  ],
  "exclusion_criteria": [
    "The trial is restricted to healthy volunteers"
  ]
}

4. Get profiles

Retrieve full profiles for selected trials; inspect exact document names here.

get_profiles
{
  "analysis_id": "ana_...",
  "trial_ids": ["2024-500001-00-00"]
}

5a. Get a document

Use an exact profile-listed filename. Follow next_part until it is null.

get_documents
{
  "analysis_id": "ana_...",
  "trial_id": "2024-500001-00-00",
  "document_name": "Clinical Trial Protocol v3",
  "part": 1
}

5b. Extract variables

Prefer targeted typed extraction when you need facts rather than complete text.

extract_variables
{
  "analysis_id": "ana_...",
  "trial_id": "2024-500001-00-00",
  "variables": [
    {
      "name": "planned_sample_size",
      "instruction": "Return the planned randomized population.",
      "value_type": "integer"
    },
    {
      "name": "central_imaging_review",
      "instruction": "Is central imaging review required?",
      "value_type": "boolean"
    }
  ]
}
Security & behavior

Bounded by approved data and allowances

All clinical reads use current approved Trial Profiles. Filtering returns lean shortlist metadata; classification receives the complete contact-redacted profile but does not expose it in the result. Document text is retrieved only by an exact profile-listed filename.

Calls are scoped to a time-limited analysis and metered by the plan approved in Intel Agent. Exact retries are deduplicated where the tool contract allows it.