Scienceofficial

clinical-trials-database

google-deepmind/science-skills · updated Jun 4, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$npx skills add https://github.com/google-deepmind/science-skills --skill clinical-trials-database
0 commentsdiscussion
summary

### Clinical Trials Database

  • name: "clinical-trials-database"
  • description: "Query ClinicalTrials.gov via APIv2. Use when you want to search for trials by condition, drug, location, status, or phase; retrieve trial details by NCT ID; check eligibility/inclusion criteria; count..."
skill.md
name
clinical-trials-database
description
> Query ClinicalTrials.gov via APIv2. Use when you want to search for trials by condition, drug, location, status, or phase; retrieve trial details by NCT ID; check eligibility/inclusion criteria; count trials across conditions or time periods; identify a sponsor's trial portfolio; find recruiting trials for patient matching.

Clinical Trials Database

Prerequisites

  1. uv: Read the uv skill and follow its Setup instructions to ensure uv is installed and on PATH.
  2. User Notification: If LICENSE_NOTIFICATION.txt does not already exist in this skill directory then (1) prominently notify the user to check the terms at https://clinicaltrials.gov/, then (2) create the file recording the notification text and timestamp.

Overview

Access worldwide clinical trial data from ClinicalTrials.gov via the REST API v2. The CLI script at scripts/clinical_trials_api.py wraps the API with dedicated flags for common filters (phase, age group, status, intervention, sponsor, etc.) so you rarely need to construct raw queries.

Core Rules

  • Use the Wrapper: ALWAYS execute the provided helper scripts to query the database rather than accessing the database directly. The scripts automatically enforce the required rate limit gracefully.
  • Always use --fields — trial JSON records can be very large; restrict to the data points you need.
  • Use --count-total first — check result volume before fetching all records.
  • Paginate large result sets — use --limit with --page-token to iterate.
  • Trust Search Filters: Do not manually re-filter results unless explicitly asked to verify detailed eligibility.
  • Notification: If this skill is used, ensure this is mentioned in the output.

Context Efficiency Warning

Trial JSON records can be very large. Always use the --fields parameter to restrict the response to only the data points you need. After writing to file, read only the fields you need rather than the entire file.

[!TIP] Use references/studies_schema.md to identify exact field paths for --fields.

Response Layout Summary

API responses contain a list of studies (usually in a studies[] array). Each study is split into protocolSection and optional resultsSection.

[!Tip] Use the shorthand aliases below with the --fields parameter to request specific data and keep responses small.

Top-Level Fields

  • totalCount — Total studies matching query (integer)
  • studies[] — Array of study objects
  • nextPageToken — cursor string for pagination

Common Study Fields (and shorthand alias)

  • Identification
    • protocolSection.identificationModule.nctId (NCTId) — Unique trial ID
    • protocolSection.identificationModule.briefTitle (BriefTitle) — Short title
  • Status
    • protocolSection.statusModule.overallStatus (OverallStatus) — Recruitment status
  • Description
    • protocolSection.descriptionModule.briefSummary (BriefSummary) — Short description
  • Arms & Interventions
    • protocolSection.armsInterventionsModule.interventions (ArmsInterventionsModule)
  • Eligibility
    • protocolSection.eligibilityModule.eligibilityCriteria (EligibilityCriteria) — Inclusion/Exclusion
    • protocolSection.eligibilityModule.stdAges (StdAge) — CHILD, ADULT, etc.

Consult references/studies_schema.md for full paths (Locations, Outcomes, Results) and common --fields recipes.

Commands

Search for studies

Use for: finding trials by disease, drug, phase, status, age group, or any combination of these filters.

uv run scripts/clinical_trials_api.py search \
  --condition "<disease>" \
  --intervention "<drug_or_treatment>" \
  --status "<status>" \
  --phase "<phase>" \
  --age-group "<age_group>" \
  --study-type "<study_type>" \
  --sponsor "<sponsor_name>" \
  --has-results \
  --sort "<field>:<asc|desc>" \
  --fields "<fields>" \
  --limit <N> \
  --count-total \
  --page-token "<token>" \
  --output /tmp/search_results.json

All flags are optional and combine via AND logic.

Flag reference:

  • --condition — Disease or condition to search for (e.g. "cystic fibrosis").
  • --intervention — Drug, device, or treatment name (e.g. "pembrolizumab").
  • --status — Recruitment status filter. Values: RECRUITING, COMPLETED, NOT_YET_RECRUITING, ACTIVE_NOT_RECRUITING, ENROLLING_BY_INVITATION, TERMINATED, SUSPENDED, WITHDRAWN.
  • --phase — Trial phase filter. Values: PHASE1, PHASE2, PHASE3, PHASE4, EARLY_PHASE1, NA.
  • --age-group — Patient age group filter. Values: CHILD (0–17), ADULT (18–64), OLDER_ADULT (65+).
  • --study-type — Type of study. Values: INTERVENTIONAL, OBSERVATIONAL, EXPANDED_ACCESS.
  • --sponsor — Lead sponsor or institution name (e.g. "National Cancer Institute").
  • --has-results — Boolean flag (no value needed). When present, filters for studies that have results available on ClinicalTrials.gov.
  • --sort — Sort order as FieldName:asc or FieldName:desc. Common fields: LastUpdatePostDate, EnrollmentCount, StudyFirstPostDate, StartDate.
  • --fields — Comma-separated list of JSON field names to include in the response. Use this to keep responses small (e.g. "NCTId,BriefTitle,OverallStatus,Phase"). See references/studies_schema.md for available field paths.
  • --limit — Maximum number of studies to return per request (1–1000, default 10).
  • --count-total — Boolean flag (no value needed). When present, the response includes a totalCount field showing the total number of matching studies across all pages.
  • --page-token — An opaque cursor string used to fetch the next page of results. Obtain this value from the nextPageToken field in a previous search response. Do not construct this string yourself; always copy it verbatim from the API response. See the Pagination section below.
  • --advanced — Raw Essie filter expression for structured queries beyond the dedicated flags (e.g. "AREA[LocationCountry]United States"). Combined with other flags via AND. See references/clinical_trials_api.md for syntax.
  • --output(Required) File path where the JSON response is written.

Example — actively recruiting Phase 3 pediatric cystic fibrosis trials:

uv run scripts/clinical_trials_api.py search \
  --condition "cystic fibrosis" \
  --status RECRUITING \
  --phase PHASE3 \
  --age-group CHILD \
  --fields "NCTId,BriefTitle,OverallStatus,Phase" \
  --limit 10 \
  --output /tmp/cf_trials.json

Example — recruiting atezolizumab trials for esophageal cancer:

uv run scripts/clinical_trials_api.py search \
  --condition "esophageal cancer" \
  --intervention "Atezolizumab" \
  --status RECRUITING \
  --fields "NCTId,BriefTitle,Phase" \
  --limit 10 \
  --output /tmp/atezolizumab_trials.json

Retrieve a study by NCT ID

Use for: fetching full details of a specific trial when you already have the NCT identifier.

uv run scripts/clinical_trials_api.py get-study \
  <nct_id> [--fields "<fields>"] \
  --output /tmp/study.json

Returns a useful default set of fields if --fields is omitted: NCTId,BriefTitle,OverallStatus,Phase,BriefSummary, ConditionsModule,ArmsInterventionsModule,EligibilityModule

Structure of the default response:

{
  "protocolSection": {
    "identificationModule": {
      "nctId": "NCT00000000",
      "briefTitle": "Study Title"
    },
    "statusModule": {
      "overallStatus": "RECRUITING"
    },
    "descriptionModule": {
      "briefSummary": "This study is about..."
    },
    "conditionsModule": {
      "conditions": [ "Condition Name" ]
    },
    "armsInterventionsModule": {
      "interventions": [ { "type": "DRUG", "name": "Drug Name" } ]
    },
    "eligibilityModule": {
      "eligibilityCriteria": "Inclusion:\n- ...",
      "stdAges": [ "ADULT" ]
    }
  }
}

Get eligibility / inclusion criteria

Use for: pulling inclusion/exclusion rules, age ranges, and sex requirements for patient-matching tasks.

uv run scripts/clinical_trials_api.py \
  get-eligibility <nct_id> \
  --output /tmp/eligibility.json

Shortcut that returns title and the full eligibility module (inclusion/exclusion criteria, age range, sex).

Example — inclusion criteria for NCT04886804:

uv run scripts/clinical_trials_api.py \
  get-eligibility NCT04886804 \
  --output /tmp/eligibility_NCT04886804.json

Count matching studies

Use for: exploring the trial landscape — checking how many trials exist for a condition, phase, or status before fetching full records.

uv run scripts/clinical_trials_api.py count \
  --condition "<disease>" \
  [--status "<status>"] [--phase "<phase>"] ... \
  --output /tmp/count.json

Returns only the total count of clinical trials matching the search criteria without fetching study records. Accepts the same filter flags as search.

Search by location / geography

Use for: narrowing trials to a specific country, state, or city.

Use --advanced with AREA[LocationCountry] or AREA[LocationCity] to restrict results by geography:

uv run scripts/clinical_trials_api.py search \
  --condition "cystic fibrosis" \
  --status RECRUITING \
  --advanced "AREA[LocationCity]New York" \
  --fields "NCTId,BriefTitle" \
  --limit 20 \
  --output /tmp/nyc_cf_trials.json

Search by sponsor / organization

Use for: identifying a sponsor's or institution's trial portfolio.

Use --sponsor to find trials run by a specific institution or company:

uv run scripts/clinical_trials_api.py search \
  --sponsor "National Cancer Institute" \
  --fields "NCTId,BriefTitle,LeadSponsorName" \
  --limit 20 \
  --output /tmp/nci_trials.json

Combined multi-criteria search

Use for: complex queries that layer multiple filters (condition and drug and phase and geography and sponsor, etc.).

All flags combine via AND, so you can layer conditions, interventions, status, phase, geography, and sponsor in a single query:

uv run scripts/clinical_trials_api.py search \
  --condition "pancreatic cancer" \
  --intervention "immunotherapy" \
  --status RECRUITING \
  --phase PHASE3 \
  --advanced "AREA[LocationCountry]United States" \
  --fields "NCTId,BriefTitle,Phase,LeadSponsorName" \
  --limit 20 \
  --output /tmp/panc_trials.json

Raw API query (escape hatch)

Use for: uncommon endpoints or parameter combinations not covered by the dedicated flags.

uv run scripts/clinical_trials_api.py raw-query \
  --endpoint <path> \
  --params '<json_dict>' \
  --output /tmp/raw_result.json

Pagination

When results exceed --limit, the response includes a nextPageToken. Pass it with --page-token to fetch the next page:

uv run scripts/clinical_trials_api.py search \
  --condition "breast cancer" \
  --status RECRUITING \
  --limit 50 --count-total \
  --output /tmp/breast_cancer_p1.json

uv run scripts/clinical_trials_api.py search \
  --condition "breast cancer" \
  --status RECRUITING \
  --limit 50 --page-token "CAo=" \
  --output /tmp/breast_cancer_p2.json

Advanced Querying

For complex filtering beyond the dedicated flags, use --advanced with an Essie expression.

What is an Essie Expression? Essie is the search engine powering ClinicalTrials.gov. An Essie expression is a structured query that targets specific fields (e.g., country, phase) rather than doing general keyword searches.

  • AREA[Field]Value: Targets a specific field.
    • AREA[LocationCountry]United States
    • AREA[Phase]PHASE3
  • Boolean operators: Combine with AND, OR, NOT.
  • RANGE[min, max]: For numeric/date fields (e.g. RANGE[500, MAX]).

See references/clinical_trials_api.md for syntax and available fields.

It is combined with other flags via AND:

uv run scripts/clinical_trials_api.py search \
  --condition "diabetes" \
  --advanced "AREA[LocationCountry]United States \
    AND AREA[EnrollmentCount]RANGE[500, MAX]" \
  --fields "NCTId,BriefTitle,EnrollmentCount" \
  --output /tmp/diabetes_us_large.json

References

  • API parameters, enum values, and Essie syntax: references/clinical_trials_api.md
  • JSON field paths and --fields recipes: references/studies_schema.md
how to use clinical-trials-database

How to use clinical-trials-database on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add clinical-trials-database
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

$npx skills add https://github.com/google-deepmind/science-skills --skill clinical-trials-database

The skills CLI fetches clinical-trials-database from GitHub repository google-deepmind/science-skills and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/clinical-trials-database

Reload or restart Cursor to activate clinical-trials-database. Access the skill through slash commands (e.g., /clinical-trials-database) or your agent's skill management interface.

Security & Verification Notice

We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.

Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

Task Automation & Efficiency

Automate repetitive workflows and reduce manual effort

Example

Generate reports, summarize documents, draft communications

Save 3-5 hours per week on routine tasks

Knowledge Enhancement

Learn new skills, understand complex topics, get expert guidance

Example

Explain concepts, provide examples, suggest learning resources

Accelerate learning and skill development by 2x

Quality Improvement

Enhance output quality through reviews, suggestions, and refinements

Example

Review drafts, suggest improvements, catch errors

Improve work quality by 30-40% with less effort

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client with skill support
  • Clear understanding of task or problem to solve
  • Willingness to iterate and refine outputs

Time Estimate

15-45 minutes depending on use case complexity

Installation Steps

  1. 1.Install skill using provided installation command
  2. 2.Test with simple use case relevant to your work
  3. 3.Evaluate output quality and relevance
  4. 4.Iterate on prompts to improve results
  5. 5.Integrate into regular workflow if valuable

Common Pitfalls

  • Expecting perfect results without iteration
  • Not providing enough context in prompts
  • Using skill for tasks outside its intended scope
  • Accepting outputs without review and validation

Best Practices

✓ Do

  • +Start with clear, specific prompts
  • +Provide relevant context and constraints
  • +Review and refine all outputs before using
  • +Iterate to improve output quality
  • +Document successful prompt patterns

✗ Don't

  • Don't use without understanding skill limitations
  • Don't skip validation of outputs
  • Don't share sensitive information in prompts
  • Don't expect skill to replace human judgment

💡 Pro Tips

  • Be specific about desired format and style
  • Ask for multiple options to choose from
  • Request explanations to understand reasoning
  • Combine AI efficiency with human expertise

When to Use This

✓ Use When

Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.

✗ Avoid When

Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.

Learning Path

  1. 1Familiarize yourself with skill capabilities and limitations
  2. 2Start with low-risk, non-critical tasks
  3. 3Progress to more complex and valuable use cases
  4. 4Build expertise through regular use and experimentation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.533 reviews
  • Shikha Mishra· Dec 20, 2024

    Registry listing for clinical-trials-database matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Ganesh Mohane· Dec 20, 2024

    clinical-trials-database has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Soo Shah· Dec 12, 2024

    clinical-trials-database fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Kabir Gonzalez· Dec 8, 2024

    clinical-trials-database is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Soo Yang· Nov 27, 2024

    Solid pick for teams standardizing on skills: clinical-trials-database is focused, and the summary matches what you get after install.

  • Yash Thakker· Nov 11, 2024

    clinical-trials-database reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Anaya Lopez· Nov 3, 2024

    We added clinical-trials-database from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Soo Brown· Oct 22, 2024

    Solid pick for teams standardizing on skills: clinical-trials-database is focused, and the summary matches what you get after install.

  • Emma Rao· Oct 18, 2024

    We added clinical-trials-database from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Dhruvi Jain· Oct 2, 2024

    I recommend clinical-trials-database for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

showing 1-10 of 33

1 / 4