Skip to main content
Glama

Ct Search

ct_search
Read-onlyIdempotent

Search ClinicalTrials.gov for clinical trials — find trials and look up a NAMED trial by keyword, condition, drug/therapy, status (e.g. 'Recruiting'), or phase (e.g. 'Phase 2'). Use for "clinical trials for <disease/drug>", or to locate a specific study like "the FLOW trial", "semaglutide kidney outcomes trial" (use ct_get_study for its full design/results). Returns NCT IDs, titles, status, enrollment, and sponsor info for the current page, PLUS conditions_summary — a condition-by-condition breakdown across ALL matches (not just this page), so "how many trials and what conditions do they cover" is answerable from one call. To see studies past the first page, call again with the SAME query/status/phase/sponsor and page_token set to the previous response's next_page_token.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of results (1-100, default 10)
phaseNoFilter by phase: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 (or NA). Roman numerals ("Phase III") and comma-separated unions ("PHASE2,PHASE3") are accepted.
queryYesThe SUBJECT of the search — a condition, drug, or keyword (e.g., "GLP-1 receptor agonist", "breast cancer immunotherapy"). Prefer the topic alone over a full sentence: put status in `status` and phase in `phase` rather than in the text. Conversational framing is stripped automatically, and the term actually searched is echoed back as `query_used`.
statusNoFilter by overall status: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, ENROLLING_BY_INVITATION, SUSPENDED, NOT_YET_RECRUITING. Several may be combined as a comma-separated union, e.g. "RECRUITING,NOT_YET_RECRUITING".
sponsorNoFilter by the trial's registered LEAD sponsor (e.g., "Pfizer", "Novo Nordisk"). Widen to trials the company only partners on with sponsor_match: "lead_or_collaborator".
page_tokenNoPass the previous call's `next_page_token` here, with the SAME query/status/phase/sponsor arguments, to fetch studies past the first page. Omit it for a fresh search. A "continue listing"/"next page" follow-up means: re-call with this set, not a new query.
sponsor_matchNoWhich sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list the company as a collaborator — typically academic trials of the company's drug. Every returned study carries sponsor_match_field naming which one matched.

Output Schema

NameRequiredDescriptionDefault
studiesYesList of formatted trial summaries
total_countYesTotal number of matching trials

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / page_token
      Added value: +{
      +  "description": "Pass the previous call's `next_page_token` here, with the SAME query/status/phase/sponsor arguments, to fetch studies past the first page. Omit it for a fresh search. A \"continue listing\"/\"next page\" follow-up means: re-call with this set, not a new query.",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / sponsor / description
      Previous value: -"Filter by sponsor name (e.g., \"Pfizer\", \"Novo Nordisk\")"New value: +"Filter by the trial's registered LEAD sponsor (e.g., \"Pfizer\", \"Novo Nordisk\"). Widen to trials the company only partners on with sponsor_match: \"lead_or_collaborator\"."
    • addedInput schema / properties / sponsor_match
      Added value: +{
      +  "description": "Which sponsor role the name must fill. \"lead\" (the default) returns only trials whose registered LEAD sponsor is that company. \"lead_or_collaborator\" also returns trials led by someone else that list the company as a collaborator — typically academic trials of the company's drug. Every returned study carries sponsor_match_field naming which one matched.",
      +  "enum": [
      +    "lead",
      +    "lead_or_collaborator"
      +  ],
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / phase / description
      Previous value: -"Filter by phase: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4"New value: +"Filter by phase: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 (or NA). Roman numerals (\"Phase III\") and comma-separated unions (\"PHASE2,PHASE3\") are accepted."
    • changedInput schema / properties / query / description
      Previous value: -"Search term (e.g., \"GLP-1 receptor agonist\", \"breast cancer immunotherapy\")"New value: +"The SUBJECT of the search — a condition, drug, or keyword (e.g., \"GLP-1 receptor agonist\", \"breast cancer immunotherapy\"). Prefer the topic alone over a full sentence: put status in `status` and phase in `phase` rather than in the text. Conversational framing is stripped automatically, and the term actually searched is echoed back as `query_used`."
    • changedInput schema / properties / status / description
      Previous value: -"Filter by overall status: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, ENROLLING_BY_INVITATION, SUSPENDED, NOT_YET_RECRUITING"New value: +"Filter by overall status: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, ENROLLING_BY_INVITATION, SUSPENDED, NOT_YET_RECRUITING. Several may be combined as a comma-separated union, e.g. \"RECRUITING,NOT_YET_RECRUITING\"."
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "studies": {
      +      "description": "List of formatted trial summaries",
      +      "items": {
      +        "properties": {
      +          "collaborators": {
      +            "description": "List of collaborator names",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "completion_date": {
      +            "description": "Final completion date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "conditions": {
      +            "description": "List of trial conditions",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "enrollment": {
      +            "description": "Target enrollment count",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "enrollment_type": {
      +            "description": "Enrollment type (e.g., Actual, Anticipated)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "interventions": {
      +            "description": "List of interventions",
      +            "items": {
      +              "properties": {
      +                "description": {
      +                  "description": "Intervention description",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "name": {
      +                  "description": "Intervention name",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "type": {
      +                  "description": "Intervention type",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "nct_id": {
      +            "description": "NCT identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "official_title": {
      +            "description": "Official trial title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "phase": {
      +            "description": "Trial phase(s) comma-separated",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "primary_completion_date": {
      +            "description": "Primary completion date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "sponsor": {
      +            "description": "Lead sponsor name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "sponsor_class": {
      +            "description": "Sponsor class",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "start_date": {
      +            "description": "Trial start date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Overall trial status",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "description": "Brief trial title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_count": {
      +      "description": "Total number of matching trials",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total_count",
      +    "studies"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "limit": 20,
      +    "phase": "PHASE2",
      +    "query": "GLP-1 receptor agonist",
      +    "status": "RECRUITING"
      +  },
      +  {
      +    "limit": 10,
      +    "query": "breast cancer immunotherapy",
      +    "sponsor": "Pfizer"
      +  }
      +]
  6. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely new behavioral facts: results are page-scoped while conditions_summary aggregates across ALL matches, and page_token requires identical filters. Slightly redundant with the output schema, but the page-vs-aggregate distinction is a real disclosure.

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

Conciseness4/5

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

Purpose and scope are front-loaded in the first sentence, and each following sentence addresses a distinct concern (use cases, return shape, pagination). It is dense but not padded; the pagination sentence does duplicate the page_token schema text, a minor inefficiency.

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

Completeness5/5

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

With an output schema present and full annotation coverage, the remaining burden is guidance, and the description supplies it: when to use, what comes back per page vs aggregate, and how to continue. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes beyond by explaining the intent behind query (topic alone, not a sentence, status/phase belong in their own params) and sponsor_match (lead vs collaborator, with sponsor_match_field echo). It largely restates page_token and sponsor_match semantics already in the schema, which caps it below 5.

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 verb and resource (search ClinicalTrials.gov for clinical trials) plus the supported query facets (keyword, condition, drug, status, phase). It explicitly names the sibling boundary — ct_get_study for full design/results — and positions itself against the many other ct_* tools by being the entry-point search.

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

Usage Guidelines5/5

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

Gives concrete invocation patterns ("clinical trials for <disease/drug>", "the FLOW trial", "semaglutide kidney outcomes trial") and routes to the alternative tool when the goal is study detail. The pagination paragraph also tells the agent exactly what a "next page" follow-up means and that filters must be reused.

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.