For software
Everything on this site is also a file: JSON records, agent briefs, Croissant, JSON-LD, and search and agent endpoints. No key, no rate limit.
Read limitations before capabilities
Every agent brief puts constraints first for that reason, and every record carries limitations graded by severity. A blocking limitation rules out a class of analysis however the model is specified. Reading them costs one request.
Two flags carry most of the decision weight, both measured from field completeness rather than taken from a description: has_survival_endpoint and has_treatment_response. The analysis_fit array on /api/v1/datasets/{id} extends them to six analyses; its unknown status means the field was not measured for that record and must not be read as absent. A third, has_citable_accession, matters differently: when it is false, reuse could not be traced at all, so a missing reuse count says nothing about the dataset.
Files and endpoints
Everything is a static JSON or Markdown file with permissive CORS. No key, no rate limit, no account. A resource meant to resolve in five years should not depend on a running service.
| Path | Contents |
|---|---|
/data/index.json | One slim row per dataset with the measured capability flags. Start here. |
/data/datasets/{id}.json | The complete record, including an evidence array on every substantive claim. |
/api/v1/datasets/{id} | The same record with analysis_fit added: six analysis verdicts (supported, limited, blocked, or unknown when not measured) derived from field completeness. |
/data/agent/{id}.md | Plain-language brief for a language model. Constraints first, deliberately. |
/data/croissant/{id}.json | MLCommons Croissant, carrying per-field completeness and blocking limitations. |
/data/jsonld/{id}.jsonld | schema.org/Dataset with DCAT terms, for catalog and search-engine ingest. |
/data/facets.json | Browse dimensions with counts. |
/data/search.json | Free text per dataset, split out of the index so the browse page need not ship it. The same text is on index.json as search_text; prefer that one. |
/data/questions.json | Every curated research question, flattened. |
/data/reuse_gap_model.json | Coefficients and diagnostics for the underexplored label, so it can be recomputed. |
/data/stats.json | Corpus-level statistics. |
/llms.txt | Orientation file following the llms.txt convention. |
/openapi.json | OpenAPI 3.1 description of the JSON surface. |
Dataset agent
GET /api/v1/agent?q=... · POST /api/v1/agent {"q": "..."}Describe an analysis in plain language. The response is a ranked shortlist with the reasons each dataset fits and the blockers to check first. Retrieval, the capability checks and the ranking are deterministic, and that is the whole answer whenever the leading dataset meets every need the request stated. Only when none does, so the order turns on which caveat matters most, is the shortlist handed to a language model to rank and explain - and only if the server has an OPENROUTER_API_KEY (deepseek/deepseek-v4.1-flash unless OPENROUTER_MODEL says otherwise). mode says which wrote the wording, and on a rules answer note says why no model did.
Query endpoint
GET /api/v1/searchCapability-first filtering. Parameters: q, modality, site, access, repository, survival, treatment_response, underexplored, showcase, min_cases, min_modalities, limit.
A side-by-side comparison is also a URL: /compare?ids=a,b,c, up to four dataset ids.
# Cohorts where treatment-response analysis is actually possible
curl "/api/v1/search?treatment_response=true&survival=true&min_cases=200"
# Under-used datasets carrying a scarce measurement
curl "/api/v1/search?underexplored=true&modality=ubiquitylome"
# Then read the constraints before planning anything
curl "/data/agent/gdc-fm-ad.md"Runnable workbooks
15 dataset pages carry a workbook executed end to end against the live public APIs. Each ships a receipt recording when it ran, with which package versions, how long it took and a hash of its outputs. So “executed” is a claim you can check.
Audit whether a dataset can answer your research question
Measures clinical completeness and returns a verdict for six analysis classes.
Survival from open data, endpoint derived correctly
Includes the three-field follow-up derivation that a naive version gets wrong.
Treatment response, after checking the field is real
Separates genuine response categories from disease-status codes.
Find and use the scarcest measurements
Ranks analytical fractions by scarcity across the Proteomic Data Commons.
Join the same patients across two repositories
Patient-level intersection of GDC molecular data with IDC imaging.
Select a dataset the way an agent should
Contrasts size-ranked with capability-ranked selection, then emits a task brief.
Source lives in workbooks/python/ as plain scripts in the # %% cell format; executed notebooks and receipts are in workbooks/executed/. Notebooks are build artifacts, not source, because notebook JSON is unreviewable in a diff.
What an agent should not conclude from this data
A missing reuse count is not an absent reuse
378 of 602 datasets have no accession specific enough to search for. For those, reuse is unmeasurable, not zero.
An empty limitations list is not a clean bill of health
Limitations are written by a human reviewer. Records with review_status of machine_only have measured field coverage but no written interpretation. No warning means nobody has looked yet.
A high citation count is not evidence of reuse
Citations to a dataset's publication measure attention to the finding. Both numbers are reported separately so they are not confused.
Coverage percentages describe the repository's harmonized records
A field absent here may still exist in a paper's supplement or in a controlled phenotype file. The page reports what the repository serves.
Full methodology, including where the whole approach is weak, is on the Methods page.