MCP App Store
by KeenEthics
Health-Life-Sciences
Seqout icon

Seqout

by Saket Lab

Overview

Seqout lets you search, discover and access sequencing datasets from GEO, SRA, ENA, DRA, GEA, GSA & ArrayExpress. Seqout harmonises sample metadata, publication details and offers read-derived metadata such as bacterial or viral content in samples, sex and species.

Tools

bulk_project_samples_metadata

Claude
Return project title/description/overall_design/source plus flattened sample rows for project accessions (GSE, SRP, ERP, DRP).

classify_accession

Claude
Pattern-match an accession and report which database family it belongs to and what entity it names (study/series/experiment/sample/run/bioproject). Format validation only — does not query the DB. Returns {valid: false} for unrecognized strings.

convert_accession

Claude
Resolve any accession (run/sample/experiment/project, any archive) to its canonical project, then list linked projects in the other archives (GEO/SRA/ENA/ArrayExpress/GSA). Cross-database links are project-level; to reach runs/experiments/samples in a target archive, call /project/{study}/runs|experiments|samples on a returned project. Pass db= to also get a flat targets list for that archive.

convert_accessions

Claude
Batch form of /convert/{accession}. POST {"accessions": [...], "db": "sra"}. Each input resolves to its project plus linked projects in other archives. Max 200 accessions per request.

download_pentimento_detections_csv

Claude
One row per sample per organism, at full taxon resolution: class, kingdom, breadth tier, genome breadth, covered bases, reads, k-mer mass and unitigs. A screened sample with nothing found emits one row with an empty organism, so absence is distinguishable from never having been scanned. all_rows=true returns every panel organism including trace and background hits; the default returns only rows at or above the low-breadth reporting tier.

download_study_script

Claude
Return a bash script to download all runs in a study using the specified source: fastq (EBI FASTQ via wget; paired single-FASTQ runs are converted from SRA/SRA Lite with sracha), sra (SRA normalized via wget), sra_lite (SRA Lite via wget), s3 (AWS S3 via aws cli), or gcs (Google Cloud via gsutil).

download_supplementary_script

Claude
Return a bash script to download all supplementary / processed data files for a GEO (GSE) or ArrayExpress (E-MTAB) project using curl.

find_geo_series_samples

Claude
Look up one sample accession across every sample in a GEO series or ArrayExpress/GEA experiment, not just the page the grid has loaded. Backs the samples grid's accession filter on large series.

find_publication

Claude
Reverse lookup from a publication (PMID or DOI) to every project linked to it across GEO, SRA, ArrayExpress, ENA, DRA, and GEA. Provide either pmid or doi as a query parameter. Each project carries via, naming the table the link came from — the inverse of how a project page resolves its publication. Returns {..publication fields.., projects: [{accession, source, title, summary, published_at, via, center_name, country_code}], total_projects}.

find_study_experiments

Claude
Look up one experiment accession across every experiment in a study, not just the page the grid has loaded. Backs the experiments grid's accession filter so it stays correct on large studies.

find_study_runs

Claude
Resolve the runs grid's column filters against every run in a study, not just the 500-run preview, so the filters stay correct on large studies. Returns up to 500 matches; capped is true when more exist.

get_ae_experiment_samples

Claude
List all samples for an ArrayExpress experiment accession (E-XXXX-NNN).

get_common_name_by_scientific_name

Claude
Return matching common names from the common_names table for a scientific name.

get_common_names_by_scientific_names

Claude
Batch variant of /common-name: pass scientific_name repeatedly to resolve a whole list in one request. Missing names are simply absent from the result (no 404).

get_country_accessions

Claude
Return distinct project accessions from unified_metadata for a given country, optionally filtered by organism and assay. Returns a plain newline-separated text list of accessions.

get_country_facets

Claude
Study counts per organism, assay category, archive, year and single-cell status for one country. Precomputed, capped to the top 40 values per facet. Values feed the filters of /country/{code}/projects.

get_country_pis

Claude
Return investigators for a whole country, ranked by project count descending. This is the map sidebar's ranking and takes no topic. For any question that names a research topic ('single cell', 'CRISPR'), use get_search_investigators instead; do NOT pull this unfiltered list and filter it yourself. An investigator is any author of a project's linked publication, or a GEO/ArrayExpress contributor when the project has no linked PMID. Returns {pis, covered_projects, total, took_ms}.

get_country_points

Claude
Rounded lat/lng clusters with study counts for this country's submitting institutions, for map rendering (e.g. the OG image). Built by seqout-ingestion's sql/matviews/create_country_matview.sh.

get_country_projects

Claude
One row per study submitted from this country: organism, assay category, archive, sample/experiment counts, single-cell status, FASTQ and .sra availability (NULL means unknown), and publication year. Filters take values from /country/{code}/facets. q matches title or study_accession (case-insensitive substring). Sort with sort= and order=. total is the filtered study count; count is this page.

get_country_summary

Claude
Corpus-wide totals for studies submitted from one country (ISO-3166-1 alpha-2 code, e.g. IN, US), across every archive and technology.

get_disease_aliases

Claude
GARD and NORD names

get_disease_facets

Claude
Study counts per disease category, clinical specialty and assay. Precomputed; the live join is ~80 s.

get_disease_projects

Claude
One row per study with its per-sample rollup: title, organism, sample and cell counts, assay category, both sex measurements, the catalogue disease it matched and the MONDO ancestry the enrichment recorded. A null cell count means unmeasured, and blank ancestry means unrecorded. has_fastq and has_sra are NULL when the study is absent from the download-links table, which means unknown, not unavailable; filtering on them accepts only true for that reason. inheritance is the mode of inheritance from HPO and Orphanet, plus GARD's own where it publishes one; a disease can carry more than one, and 'Not applicable' means the disease has no Mendelian pattern rather than that nobody looked. ancestries is the submitter-reported ethnicity field verbatim, not inferred genetic ancestry, and is present on 13% of studies. n_samples counts the samples that matched this collection, not the study's total, so controls and out-of-scope samples are not in it. total is the filtered study count; count is this page. Filters take values from /disease/{collection}/facets and are rejected if the collection does not carry them. q matches title or study_accession (case-insensitive substring). Sort with sort= and order=. scope defaults to human_primary (human material that is neither an immortalized line nor a derived model); use patient_derived_model, cell_line, or all to see what that excludes. Every row carries the full set of scope counters either way, so nothing is hidden. A free-text term (not rare/nord) is paginated by cursor: pass cursor_sort/cursor_acc from the previous page's next_cursor (null on the last page).

get_disease_summary

Claude
Corpus-wide totals for studies with at least one sample annotated with a disease in this collection, resolved through MONDO ids and their descendants. rare is NIH GARD, matched by exact MONDO xref; nord is NORD, matched by name and so a looser set.

get_enriched_column

Claude
Return the most common values (with counts) for one enriched column (e.g. tissue, cell_type, disease, assay). Reads the enriched_column_top_values materialized view.

get_enriched_coverage

Claude
Return how many projects and samples carry AI-enriched ontology metadata, split by archive (geo, sra, ena, arrayexpress, gsa, dra, gea), by organism, by assay and by assay_category. Archive totals are planner row estimates, so the percentages are approximate. A project with several organisms or assays counts under each, so those rows sum past the corpus total. The organism and assay lists are capped at limit; distinct_values carries the full counts. Reads the enriched_coverage materialized view.

get_enriched_crosstab

Claude
Return counts of one standardised column (breakdown) within each value of another (group) — e.g. group=organism&breakdown=tissue gives the tissues seen per organism, with a distinct-tissue count per organism. Both axes must be in the curated crosstab column set. Reads the enriched_crosstab materialized view.

get_enriched_stats

Claude
Return how many projects and samples have AI-enriched ontology metadata, plus per-column fill count and distinct-value count. Reads the enriched_summary materialized view.

get_experiment

Claude
Return experiment metadata (library, platform, instrument, parent study, linked samples) plus runs for an SRA or ENA experiment accession (SRX/ERX/DRX). Use /experiment/{accession}/runs to fetch just the runs.

get_experiment_enriched

Claude
Return the ontology-enriched sample record(s) for a single SRA/ENA experiment (SRX/ERX/DRX), scoped from the parent study's enriched metadata. Same fields as /project/{accession}/enriched.

get_experiment_metadata_rows

Claude
Return per-run JSON metadata rows for a single SRA/ENA experiment (SRX/ERX/DRX), in the same row format as /project/{accession}/metadata/rows but scoped to this experiment's runs.

get_experiment_runs

Claude
Return run download links and layout for an SRX/ERX/DRX experiment.

get_geo_series_samples

Claude
List all samples for a GEO series (GSE) or ArrayExpress experiment (E-XXXX-NNN).

get_global_contribution_filters

Claude
Return distinct values for organism, assay_l1, and assay_l2 filters, ordered by count descending. When country is provided, counts are scoped to that country. Global and country-scoped results are cached for 7 days.

get_global_contributions

Claude
Return aggregated project/experiment/sample counts per geographic location (latitude/longitude rounded to 2 decimal places) from the unified_metadata table. Includes source breakdown (GEO/SRA/ArrayExpress/ENA), city, country, and top 5 organisms per location. Unfiltered and filtered results are cached for 7 days.

get_growth_stats

Claude
Return monthly counts of projects, experiments, or data volume per database. modes: projects (studies/series count), experiments (samples count), bases (nucleotide bases for ENA, FASTQ/SRA bytes for SRA). Counts are per-month (not cumulative). Returns {mode, series: {db: [{month, count}]}, took_ms}.

get_last_updated

Claude
Return the date of the newest record in the index. With ?db=<source> (geo|sra|arrayexpress|ena|gsa|dra|gea) returns that source's latest date; without it, the overall maximum. Cached for 7 days. Returns {db, last_updated, by_source}.

get_longread_facets

Claude
Study counts per technology, platform, instrument model, library strategy, organism, archive, chemistry, has_exact_chemistry, assay category, year and long-read-only status. Values feed the filters of /longread/projects.

get_longread_projects

Claude
One row per study with a PacBio or Oxford Nanopore experiment: technologies, platforms, instrument models, library strategies, organisms, the archives it appears in, long-read experiment count against the study's total (long_read_only is NULL when no experiment rows exist to compare), sample and run counts, FASTQ and .sra availability (NULL means unknown), assay category, year, and chemistries/n_chemistry_exact (per-run PacBio/ONT chemistry, see /longread/summary). Filters take values from /longread/facets; year is the publication year. chemistry= filters on a value from the chemistry facet; has_exact_chemistry=true restricts to studies with at least one BAM-header-measured run. q matches title or study_accession (case-insensitive substring). Sort with sort= and order=. total is the filtered study count; count is this page.

get_longread_summary

Claude
Corpus-wide totals for studies with at least one PacBio or Oxford Nanopore experiment, across GEO, SRA, ENA, DDBJ DRA and GSA. A study mirrored in more than one archive counts once. studies_hybrid are studies that also sequenced on a short-read platform; studies_long_read_only had no other platform; the remainder have no experiment rows to judge by (GEO-only entries). studies_exact_chemistry had at least one run whose chemistry came from the submitted BAM's own header, not a model/date guess.

get_organism_growth

Claude
Return monthly and cumulative experiment/sample counts for a given organism across GEO, SRA, ArrayExpress, and ENA databases. The organism parameter should be a scientific name (e.g. 'Homo sapiens'). mode=absolute returns raw counts; mode=percentage returns the organism's share of total experiments per month per database. Returns {organism, mode, series: {db: [{month, count, cumulative}]}, took_ms}.

get_organism_totals

Claude
Return total experiment/sample counts per organism across GEO, SRA, ArrayExpress, and ENA. Optionally filter by publication year range. Returns {organisms: [{organism, geo, sra, arrayexpress, ena, total}], year_from, year_to, total_organisms, took_ms}.

get_pentimento_overview

Claude
Counts of samples scanned from the reads themselves: sex verdicts, assay calls, and validated microbial detections.

get_perturbation_facets

Claude
Study counts per perturbation type, confidence, data availability, genetic subtype, perturbation method, compound, organism, tissue, readout assay and year, top 100 values per facet. Values feed the filters of /perturbation/projects.

get_perturbation_projects

Claude
One row per single-cell study with genetic (CRISPR KO/i/a, RNAi, ORF, base/prime editing), chemical (small-molecule or biologic drug) or other-stimulus perturbation evidence. perturbation_type is genetic, chemical, both or other. confidence is high, medium or low: high needs a named method (Perturb-seq, CROP-seq, sci-Plex, ...) or corroborated guide libraries or a compound design with a control arm; low is a single weak signal. Use min_confidence for 'at least' (medium keeps high and medium); confidence matches one tier exactly. evidence lists the signals that fired. data_availability is both, matrix_only, fastq_only or neither, from has_matrix and has_fastq. readout_assays are the sample-level assay categories in the study. compounds are ChEBI-matched names from sample treatment values, empty for designs whose drug arms live in supplementary files (e.g. sci-Plex). title_compounds are compounds matched in the study's own title text, populated whenever the title matches, independently of whether compounds is also populated; title evidence alone never reaches medium/high, so a row whose only chemical evidence is title_compounds is chemical/low. cell_lines and sample_types describe the material (named cell lines; cell line/primary tissue/organoid/xenograft/iPSC-derived and similar from the sample metadata), not the perturbation. is_long_read marks a study that also has PacBio or Oxford Nanopore sequencing. Filters take values from /perturbation/facets; year is the publication year. q matches title or study_accession. total is the filtered study count; count is this page.

get_perturbation_summary

Claude
Corpus-wide totals for single-cell studies with genetic or chemical perturbation evidence (same population as /perturbation/projects). Detection is rule-based. studies_high_medium counts the studies whose evidence is strong enough to rely on.

get_platform_filters

Claude
Return available organisms, assays, and countries for a platform. Used to populate filter dropdowns in the sequencing technology stats card.

get_platform_growth

Claude
Return monthly experiment or project counts for a sequencing platform. Optionally filter by instrument_model. Returns {platform, mode, series: {db: [{month, count, cumulative}]}, took_ms}.

get_platform_instruments

Claude
Return instrument models for a platform with experiment counts.

get_platform_totals

Claude
Return total experiment counts per sequencing platform across databases. Also available at /platforms.

get_project

Claude
Return a GEO series (GSE), SRA study (SRP/DRP/ERP), ENA project (PRJ), or ArrayExpress project (E-) record by accession. For single-cell studies single_cell carries the per-sample (GSM) breakdown: cells, genes, nnz and the experiment_accessions (SRX/DRX/ERX) behind each sample. cells is a matrix COLUMN count: when unfiltered is set those columns are 10x barcodes, not cells, and must not be summed. The list is capped at 200 samples; when truncated is true, page the rest via /project/{accession}/single-cell, which also carries the read-derived calls and microbe flags. single_cell is null when the study is not in the Pentimento. library_strategies lists the distinct assay types (RNA-Seq, ChIP-Seq, etc.) across the study's experiments. For GEO/GEA rows this resolves through the linked SRP/ERP/DRP in alias, since those archives carry no experiments of their own; it is [] when no such study is found (e.g. ArrayExpress).

get_project_cite

Claude
Return BibTeX citation(s) for a project accession. By default returns the original publication (smallest PMID). Use type=all to get BibTeX for every linked publication.

get_project_enriched

Claude
Return structured metadata extracted by LLM with ontology mappings. Fields include tissue, cell_type, disease, assay, development_stage each with standardised ontology IDs (UBERON, CL, MONDO, EFO). Falls back through the embedding-only tier ('version': 'fast') to legacy enriched_samples ('version': 'v1') if the LLM pipeline has no row for this accession. Use alongside metadata/rows when raw run/sample fields or FASTQ links are also needed.

get_project_longread_chemistry

Claude
Every PacBio/Oxford Nanopore run in the study, independent of single-cell status and Pentimento linkage. chemistry_confidence is exact when read from the submitted BAM's own header, declared (ONT only) when parsed from the depositor's own protocol text, bucket when inferred from instrument_model alone (never publication date), unknown otherwise. chemistry_confidence_label spells the same tier for display (bucket -> "estimated"); sort or filter on the raw value instead. runs is [], not a 404, when the study has no long-read runs.

get_project_metadata

Claude
Return only title and description for a GEO series (GSE), SRA study (SRP/DRP/ERP), ENA project (PRJ), or ArrayExpress experiment (E-) accession.

get_project_metadata_rows

Claude
Return paginated JSON metadata rows for a project. SRA/ENA studies return one row per run with experiment metadata, sample metadata, flattened sample_attribute:* columns, FASTQ/SRA download links, byte sizes, and MD5 fields. GEO and ArrayExpress projects return flattened sample rows. Prefer this structured JSON endpoint over CSV downloads for MCP use.

get_project_overlap

Claude
Stats of how many projects each archive holds and how they intersect

get_project_similar

Claude
Return the nearest studies to a project based on the precomputed 2D embedding (geo_series.neighbors / sra_studies.neighbors). Each result includes accession, distance, title, organisms, and source. Useful for 'find studies like X' / 'what else is similar to this dataset'.

get_project_single_cell

Claude
Per-sample cell/gene counts joined to read-derived (preflightx) species, sex and assay calls and to viral/microbial presence flags. 404s when the study is not in the Pentimento. sc_stats adds matrix-grained QC from the sc_stats sweep: one entry per matrix with median counts and genes per cell. The _f_ columns are filtered at min_counts; the unfiltered pair counts ambient barcodes in raw droplet space, which is_raw_barcode_space flags. sc_stats_scanned is false only when the sweep never reached the sample, and sc_stats_study is null only when it never reached the study. longread_chemistry lists every PacBio/Oxford Nanopore run in the study: chemistry_confidence is exact when read from the submitted BAM's own header, declared (ONT only) when parsed from the depositor's own protocol text, bucket when inferred from instrument_model alone (never publication date, which does not reflect sequencing date), unknown otherwise. chemistry_confidence_label spells the same tier for display (bucket -> "estimated"). Empty when the study has no long-read runs.

get_project_single_cell_status

Claude
Resolves any GSE/SRP/ERP and reports the cached single_cell_status label.

get_project_single_cell_summary

Claude
Summary of single cell projects at the sample level

get_project_xref

Claude
Discover cross-references for a study across GEO, SRA, ArrayExpress and ENA by following cross-reference links, SRA aliases, and E-GEOD naming conventions. When a project has no direct link to a sequence-bearing study, this also resolves through its publication (PMID) and returns those with source='pmid' and a via_pmid field. Those are inferred from a shared paper, not declared cross-references, so present them as such -- a paper can cover several studies. Returns {accession: string, xref: [{accession, link_type, source, via_pmid?, title?}]}.

get_run

Claude
Return FASTQ/SRA download links and layout for one run accession (SRR/ERR/DRR). fastq_ftp, fastq_bytes, and fastq_md5 are semicolon-joined for paired-end FASTQs. If a paired-layout run has one ENA FASTQ, fastq_is_interleaved is true and SRA/SRA Lite conversion should be used. Use get_run_checksums when you need parsed per-file FASTQ URLs, byte sizes, and MD5 checksums. Returns 404 if the run is unknown.

get_run_checksums

Claude
Return per-file FASTQ and SRA download URLs with their byte size and MD5 checksum for a run accession (SRR/ERR/DRR), parsed into structured records so callers do not need to split semicolon-joined FASTQ fields. For paired-layout runs with one ENA FASTQ, flags indicate that SRA/SRA Lite conversion is required and which source should be used.

get_run_enriched

Claude
Return the ontology-enriched sample record for a single run accession (SRR/ERR/DRR), resolved via run → experiment → sample. Same fields as /project/{accession}/enriched.

get_run_metadata_rows

Claude
Return the single JSON metadata row for one run accession (SRR/ERR/DRR), in the same row format as /project/{accession}/metadata/rows.

get_sample

Claude
Return an SRA/ENA sample (SRS/DRS/ERS/SAM*) by accession.

get_sample_detail

Claude
Return full metadata for a sample or experiment accession (GSM, SRX/DRX/ERX, SRS/DRS/ERS, SAM*). Includes parent project metadata, sample attributes, experiment info, and run download links.

get_sample_experiments

Claude
Return the SRA/ENA experiment accession(s) that reference a sample (SRS/ERS/DRS/SAM*). Inverse of /experiment/{accession}'s samples list.

get_sc_quality

Claude
One point per (year, technology, evidence): the 25th, 50th and 75th percentile of per-matrix median UMI counts (ncount) and detected genes (nfeature) across single-cell matrices released that year. Quantiles come from the filtered (_f_) matrix columns, so they describe cells that clear the matrix's own min_counts threshold. year is the study's first published date across archives. technology collapses chemistry versions to the family a reader compares, splitting 10x 3' from 10x 5' because the two capture different ends. evidence is read where Pentimento called the chemistry off the FASTQs, and declared where that call was absent and the submitter's own assay string supplied it.Thin cells are dropped; the thresholds actually applied are on the response as min_matrices and min_studies.

get_sc_quality_samples

Claude
One point per matrix, giving that matrix's median UMI count (ncount) and detected genes (nfeature), its release year and its technology. These are the matrices /stats/sc-quality aggregates, so a dot here and a percentile there describe one population. The response is a stratified subsample: each (year, technology) contributes at most per_technology_year rows, chosen by a stable hash so repeat calls return the same dots. n_shown and n_total give the sampling rate.

get_search_investigators

Claude
Rank the investigators behind an arbitrary full-text search, across GEO, SRA, ENA, ArrayExpress, GSA, DRA and GEA. Use this for 'who are the top people working on X' questions instead of searching and then looking up contributors project by project. Answers 'top researchers / scientists / PIs / labs working on X', optionally within one country. Prefer this over ranking people yourself from search results. PICK THE MODE FROM THE QUESTION'S WORDING. Use senior_only=false when it asks about 'researchers', 'scientists', 'authors', 'people' or 'who works on'. This counts everyone who worked on the data. Use senior_only=true (the default) only when it explicitly asks for 'PIs', 'principal investigators', 'senior authors', 'labs' or 'who leads' -- this counts last authors, so lab members are excluded. The two modes give different people; do not present one as the other. q uses /search syntax. country must be a normalised name such as 'United States' or 'India', never a raw value like 'USA'. Counts already cover the complete match set, so never page results and tally them yourself; limit only truncates the returned list. country is where the project was deposited and center_name is its centre -- neither is the person's own affiliation, so name the centre rather than asserting someone's nationality. Counts are data deposits, not papers. Answer with the ranking itself; mention covered_projects only when it is small enough to make the ranking unreliable.

get_single_cell_overview

Claude
Study counts by type (fastq only, matrix only, fastq+matrix), total samples/cells, and top tissues/organisms across those studies.

get_singlecell_facets

Claude
Study counts per chemistry, organism, tissue, modality, assay category, year, and has_matrix/has_fastq/is_long_read status. Values feed the filters of /single-cell/projects.

get_singlecell_projects

Claude
One row per study with matrix or read-derived single-cell evidence, or a declared single-cell classification: modality, chemistries (read-derived barcode chemistry), cell_or_nucleus (read-derived from intron fraction / mito %, independent of chemistry; null when never scanned or ambiguous), tissues, organisms, sample count, matrix availability (has_matrix/n_cells), FASTQ/.sra availability, and whether the study also has long-read sequencing. perturbation_method is a detected named-method mention (Perturb-seq, CROP-seq, ECCITE-seq, Mosaic-seq, sci-Plex, CRISPR-detect) in the study's own title/description text, not a confirmed experimental design; null means no named method was detected, not that the study has none. intervention_kind (genetic/chemical) and is_pooled follow from which method matched, never from how many genes/compounds were named. Filters take values from /single-cell/facets; year is the publication year. q matches title or study_accession (case-insensitive substring). Sort with sort= and order=. total is the filtered study count; count is this page.

get_singlecell_summary

Claude
Corpus-wide totals for studies with matrix or read-derived single-cell evidence, or a declared single-cell classification (same population as /single-cell/projects). cells excludes studies whose only matrix is unfiltered (raw 10x barcodes, not real cells).

get_source_totals

Claude
Return total project and sample counts for GEO, SRA, ArrayExpress, and ENA. Cached for 7 days. Returns {geo: {projects, samples}, sra: {...}, ...}.

get_spatial_facets

Claude
Study counts per platform, resolution, data availability, organism, tissue, readout assay, cell line, sample type and year, top 100 values per facet. Values feed the filters of /spatial/projects.

get_spatial_projects

Claude
One row per study flagged single-cell modality 'Spatial Transcriptomics'. platforms are the platform names (Visium, Xenium, MERFISH, CosMx, Slide-seq, Slide-seqV2, Curio Seeker, Stereo-seq, GeoMx DSP, DBiT-seq, STARmap, osmFISH, HDST, Tomo-seq, Pixel-seq, Molecular Cartography, ...) found in the study's own title, summary, overall_design, SRA abstract or experiment metadata; often null when the study only says 'spatial transcriptomics' generically. A named platform reflects a text mention, e.g. a comparison paper naming a platform it did not run. /perturbation/projects documents the same caveat for title_compound. resolution groups platforms into single-cell (Xenium, MERFISH, CosMx, STARmap, osmFISH, Molecular Cartography), spot (coarser than single-cell: Visium, Slide-seq, Slide-seqV2, Curio Seeker, Stereo-seq, DBiT-seq, HDST, Tomo-seq, Pixel-seq) or roi (GeoMx DSP, not single-cell resolution despite reaching this population); null when no platform was named. technology is imaging, sequencing or hybrid (GeoMx DSP: optical ROI selection, sequencing/nCounter readout); tracks resolution one-to-one (imaging~single-cell, sequencing~spot, hybrid~roi) but is a separate column. data_availability is both, matrix_only, fastq_only or neither, from has_matrix and has_fastq. Filters take values from /spatial/facets; year is the publication year. q matches title or study_accession. total is the filtered study count; count is this page.

get_spatial_summary

Claude
Corpus-wide totals for studies flagged single-cell modality 'Spatial Transcriptomics' (same population as /spatial/projects). studies_named_platform counts studies whose own text names a specific platform (Visium, Xenium, MERFISH, ...); the rest only say 'spatial transcriptomics' generically.

get_study_bams

Claude
Return direct download links for original submitted BAM files in an SRA study. BAM files are extracted from the ncbi_files JSONB column where supertype is 'Original'. Not all studies have BAM files — returns total_bams=0 when none exist.

get_study_download_manifest

Claude
Return paginated JSON file entries for downloading an SRA/ENA study. This is the preferred MCP tool for complete per-file FASTQ retrieval. For paired-layout runs with one ENA FASTQ, mode=fastq returns an SRA/SRA Lite source plus sracha conversion command. Modes: fastq, sra, sra_lite, s3, or gcs. Each entry includes URL, target path, checksum/size when available, and run/experiment metadata.

get_study_experiments

Claude
List all experiments for a study accession (SRP/DRP/ERP/PRJ). For ENA (PRJ), returns one row per experiment_accession (first run only).

get_study_runs

Claude
Return FASTQ/SRA download links for runs in an SRA/ENA study. Returns summary statistics plus a preview of up to 500 runs; pass full=true for every run instead (used by the UI's link export). FASTQ fields are semicolon-joined for paired-end runs. If a paired-layout run has one ENA FASTQ, fastq_is_interleaved is true and SRA/SRA Lite conversion should be used. For complete paginated per-file entries, use get_study_download_manifest.

get_study_samples

Claude
Return distinct samples referenced by any experiment in an SRA study (SRP/DRP/ERP). PRJ accessions are resolved to their SRA study first.

get_supplementary_files

Claude
Return structured supplementary / processed data file links for a GEO (GSE) or ArrayExpress (E-*) project.

get_tissue_facets

Claude
Study counts per organism, assay category, archive, journal, submitter country, year, FASTQ/single-cell/long-read status for studies matching term. Values feed the filters of /tissue/{term}/projects.

get_tissue_microbes

Claude
One cell per (tissue, organism): positives samples of screened carry that organism, over samples the Pentimento actually quantified. positives_confirmed is the high-breadth subset. Cells need 2 or more contributing studies and a tissue with 200 or more screened samples. Contaminants are labelled, not withheld: is_background marks an organism the prevalence sweep flags (E. coli, C. acnes), class of culture marks cell-culture organisms such as M. hyorhinis, and is_endogenous marks retroviruses read off the host genome.

get_tissue_projects

Claude
One row per study with a sample annotated with a tissue matching term. has_fastq/has_sra are NULL when the study is absent from the download-links table, which means unknown. n_samples_with_tissue counts every sample the study has any resolved tissue for; /tissue/{term}/summary's matched_samples gives the matching count. q matches title or study_accession (case-insensitive substring). Sort with sort= and order=; total is the filtered study count, count is this page. Paginated by cursor: pass cursor_sort/cursor_acc from the previous page's next_cursor (null on the last page), as with /search's sortby pagination.

get_tissue_summary

Claude
Corpus-wide totals for studies with at least one sample annotated with a tissue matching term, resolved through UBERON ids and their descendants (e.g. 'blood' also reaches 'whole blood', 'peripheral blood mononuclear cell', ...). resolution says whether the term matched an UBERON label exactly or only as a substring; matched_labels lists the matches. matched_samples counts samples resolved to one of the matched ids; samples is the matching studies' total across all annotations.

list_centers

Claude
Return the top submission centers from sra_submissions + ena_studies, sorted by frequency. Use to discover values for search_structured(center=...).

list_instrument_models

Claude
Return every instrument_model seen in sra_experiments with a count, sorted by frequency. Use to discover valid values for search_structured(instrument_model=...).

list_journals

Claude
Return the top journals appearing in linked publications, sorted by frequency. Use to discover valid values for search_structured(journal=...).

list_library_strategies

Claude
Return every library_strategy seen in sra_experiments with a count, sorted by frequency. Use to populate filter dropdowns or to discover valid values for search_structured(library_strategy=...).

list_single_cell_studies

Claude
Studies carrying at least min_evidence of the three independent measurements (counted matrix, barcode-whitelist hit, R1 length structure).

ontology_term

Claude
Look up one term in the ontology graph and return its source identifiers (xrefs), its MAPS_TO synonym cluster, and its hierarchy children. max_hops (default 2) bounds the synonym walk only — children are always the DIRECT children of the resulting synonym cluster, as the deep-dive explorer defines them. Set children=false to skip the children query entirely, which is much cheaper. xrefs are source CURIEs (UBERON:0002107, HGNC:5, MeSH:D008099, CVCL_0030) and are returned for the queried term, every synonym, and every child. Synonyms capped at 500 (synonym_total gives the true count), children at 300 (children_truncated flags the cap). 404 if the term is not in the graph.

resolve_accession_project

Claude
Resolve a sample/experiment/run accession (GSM/SRS/DRS/ERS/SRX/ERX/DRX/SRR/ERR/DRR) to its parent project accession (GSE or SRP/DRP/ERP). A run resolves via its experiment.

resolve_prj_project

Claude
Resolve a PRJ accession to its project accession. PRJNA checks GEO series then SRA studies; PRJEB/PRJDA checks SRA only.

resolve_submission_studies

Claude
List the SRA/ENA/DDBJ studies (SRP/ERP/DRP) filed under a submission accession (SRA######, ERA######, DRA######). Usually one, sometimes many.

search_all

Claude
Unified search across GEO, SRA, ENA, ArrayExpress, GSA, DDBJ DRA and DDBJ GEA. Optionally restrict by db=geo|sra|arrayexpress|ena|gsa|dra|gea. Optionally sort by sortby=citations|journal|year with order=desc(default)|asc. For default relevance sort, use cursor_rank + cursor_acc for pagination. For custom sortby, use cursor_sort + cursor_acc for pagination. Returns {results: object[], total: int, took_ms: float, next_cursor: {rank, accession} or {sort_value, accession} | null}.

search_author_projects

Claude
Given a person's name, find every dataset they authored across all four databases. Matches the name (first + last, tolerant of middle initials) against publication author lists, then resolves the linked studies. Returns project rows compatible with the search result cards. Only studies linked to a PubMed publication are findable.

search_by_author

Claude
Case-insensitive substring search across publication author lists, ranked by citation count. Each result is a publication (PMID, title, journal, DOI, authors, citation count) plus its linked dataset accessions across GEO, SRA, ArrayExpress, and ENA. Only studies with a linked PubMed publication are findable here.

search_enriched_samples

Claude
Find SAMPLES matching ontology-enriched criteria across the whole corpus and return the sample accessions, not the studies containing them.

search_expansion

Claude
Explain the synonym expansion that a plain-keyword search runs: per query term, the synonyms that actually reached the search, and how many that term has in total (they differ when the variant cap truncates the expansion). Structured/boolean queries are not expanded, so chunks is empty for them. Returns {query, structured, variants, variant_cap, chunks: [{term, synonyms, total}], took_ms}.

search_highlight

Claude
Return the surface words in one project's title, summary and overall design that the query matched — stemmed, synonym-expanded and tokenised by the same Postgres text search the results came from. Intended for highlighting the query on a project page arrived at from a search. derived maps a word to the expanded term that put it there, for the words the typed query does not itself explain; words absent from it came from the query as typed. Returns {accession, query, words: [...], derived: {word: term}, took_ms}.

search_nl

Claude
Parse a plain-English query into structured filters (organism, library_strategy, source, date range) and run the structured search. Rule-based, deterministic, no LLM. Unrecognized words become the full-text query. The response echoes parsed so callers see exactly how the sentence was interpreted. Set dry_run=true to parse only. Example: 'human transcriptome data published between 2020 and 2022'.

search_organisms

Claude
Search for organisms by partial name match (case-insensitive). Returns up to limit organisms sorted by total experiment count. Use this for typeahead/autocomplete in organism selectors.

search_structured

Claude
Search across GEO, SRA, ArrayExpress, and ENA with structured filters (organism, library_strategy, platform, country, center, year range, journal, instrument_model, assay_l1/assay_l2, geo_* location fields, published_after/published_before (study release date), pub_date_after/pub_date_before (linked-paper publication date), multi_platform, and enriched sample filters sample_tissue/sample_disease/sample_cell_type) optionally combined with full-text search. At least one of q or a filter parameter is required. Use cursors (rank + accession) for pagination. Returns {results: object[], total: int, took_ms: float, next_cursor: {rank: float, accession: string} | null}.

search_suggest

Claude
Return spelling correction suggestions for a query. Useful when a search returns 0 results due to typos.

App Stats

109

Tools

Claude

Platforms

Works with

Claude

Data refreshed daily