Skip to main content
Glama

Open data: clinical trials, EU tenders, companies, fuel prices

ClinicalTrials.gov Study Monitor

clinical-trials-monitor
Read-onlyIdempotent

Studies from the official ClinicalTrials.gov API v2 for a condition, phase and status, returning only the studies whose status, phase, enrollment or last update changed since your last run. Read from clinicaltrials.gov when called. Each result: nct_id, title, sponsor, phase, status, enrollment, start_date, completion_date, last_update_date, conditions, lead_intervention, first_country. Needs a RapidAPI key for this API (https://rapidapi.com/IanGregory/api/clinical-trials-eu-tenders-open-data-api), sent as the X-RapidAPI-Key header; the listing has a free plan.

Input Schema

NameRequiredDescriptionDefault
limitNoAt most this many results (default 100).
phaseNoStudy phase to follow. Example: "PHASE2".
statusNoRecruitment status to follow. Example: "RECRUITING".
conditionNoDisease or condition to follow (for example breast cancer, type 2 diabetes, Alzheimer). Example: "breast cancer".
updated_sinceNoOnly studies whose record was last updated on or after this date (YYYY-MM-DD). Example: "2025-01-01".

Output Schema

NameRequiredDescriptionDefault
countYeshow many results came back
itemsYesthe results, one object each
partialNosome of the source's requests failed: the results are incomplete
productNo
sourcesNowhere the data came from: each source's name, licence and the attribution to show with it
fetched_atNowhen the source was read (Unix seconds)
truncated_fromNothe answer was cut to fit: this many results came back in all

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / sources
      Added value: +{
      +  "description": "where the data came from: each source's name, licence and the attribution to show with it",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "description": "how many results came back",
      +      "type": "integer"
      +    },
      +    "fetched_at": {
      +      "description": "when the source was read (Unix seconds)",
      +      "type": "integer"
      +    },
      +    "items": {
      +      "description": "the results, one object each",
      +      "items": {
      +        "properties": {
      +          "completion_date": {
      +            "description": "completion_date (date)"
      +          },
      +          "conditions": {
      +            "description": "conditions (list)"
      +          },
      +          "enrollment": {
      +            "description": "enrollment (integer)"
      +          },
      +          "first_country": {
      +            "description": "first_country (text)"
      +          },
      +          "last_update_date": {
      +            "description": "last_update_date (date)"
      +          },
      +          "lead_intervention": {
      +            "description": "lead_intervention (text)"
      +          },
      +          "nct_id": {
      +            "description": "nct_id (id)"
      +          },
      +          "phase": {
      +            "description": "phase (list)"
      +          },
      +          "sponsor": {
      +            "description": "sponsor (text)"
      +          },
      +          "start_date": {
      +            "description": "start_date (date)"
      +          },
      +          "status": {
      +            "description": "status (text)"
      +          },
      +          "title": {
      +            "description": "title (text)"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "partial": {
      +      "description": "some of the source's requests failed: the results are incomplete",
      +      "type": "boolean"
      +    },
      +    "product": {
      +      "type": "string"
      +    },
      +    "truncated_from": {
      +      "description": "the answer was cut to fit: this many results came back in all",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "count",
      +    "items"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that the tool reads live from clinicaltrials.gov, returns only changed studies, requires a RapidAPI key via X-RapidAPI-Key, and lists result fields. The meaning of 'since your last run' relative to the updated_since parameter is not fully clarified, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and change-detection behavior are front-loaded, and the auth requirement is useful. However, the 11-field result list is redundant with the output schema, and the RapidAPI listing/free-plan details add bulk without helping invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, open-world monitor with annotations, a complete input schema, and an output schema, the description is sufficient: it covers filters, auth, live lookup, and change-detection intent. The only notable gap is the ambiguous relationship between 'since your last run' and the updated_since parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are already well documented by the input schema. The description adds domain context for condition, phase, and status but does not materially clarify limit, updated_since semantics, or the 'last run' baseline beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (ClinicalTrials.gov studies), specific filters (condition, phase, status), and specific return scope (only studies whose status, phase, enrollment or last update changed). The domain and change-detection behavior distinguish it from sibling search/monitor tools without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for monitoring trials matching a condition/phase/status that changed since a prior run, but it gives no explicit when-not-to-use guidance or named alternative among sibling tools. Usage is inferable but not comparably documented.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources