All notable changes to this project are documented here.
The format follows Keep a Changelog, and this project
adheres to Semantic Versioning with one house rule: the
MAJOR version is pinned to the served URL prefix — /v3 ↔ 3.y.z. A breaking change to the
REST or MCP contract means a new prefix (/v4) and a new major (4.0.0), never a silent break
under /v3. See CONTRIBUTING.md for the full policy.
Entries describe user-visible change — endpoints, MCP tools, response shapes, configuration. Refactors, CI, and formatting land in the git history, not here.
Nothing yet.
3.0.0b1 — unreleased
First public release of the v3 API: a rewrite that replaces the v1/v2 service with a single
backend-agnostic core behind two thin adapters (REST + MCP), served from the idc-index Parquet
index queried locally with DuckDB.
This is a beta. The /v3 contract may still change in response to feedback before 3.0.0.
Pin to an exact version if you need stability. Legacy v1/v2 endpoints are unaffected — they are
served by a different backend and v3 lives only under /v3/*.
- REST API, entirely under the
/v3prefix: discovery (/v3/version,/v3/stats,/v3/collections,/v3/analysis_results,/v3/attributes,/v3/tables), cohort building, retrieval (manifests / cohort URLs, viewer URLs), citations and licenses, guarded SQL, and/v3/health. Interactive docs at/v3/docs; the bare domain redirects there. - MCP server over stdio (local) and streamable-http (hosted at
/mcp), exposing the same capabilities as tools —list_collections,get_collection,list_attributes,get_attribute_values,build_cohort,get_cohort_urls,download_cohort,get_viewer_url,run_sql,get_citations,get_licenses, and the clinical/table introspection tools — plus anidc://guideresource describing the data model and workflow. - Guarded SQL (
POST /v3/sql,run_sql): read-only DuckDB with external access and extension loading disabled, single-statement enforcement, a server row cap, and a timeout. See SECURITY.md. - Specialized indices joinable to
indexonSeriesInstanceUID(seg_index,ann_index,ct_index,mr_index,pt_index,sm_index, …) and per-collection clinical tables under aclinicalschema, both fetched fromidc-indexreleases at build time. - Software version reporting, distinct from the IDC data version:
/v3/versionreturnsapi_version(andbuild, when a deploy stampsIDC_API_BUILD); the same string appears in the OpenAPIinfo.versionand the MCPinitializehandshake (serverInfo.version). - Structured audit logging — one JSON line per REST request and MCP tool call.
IDC_API_SQL_LOG_MODEselects how the guarded SQL query is rendered (snippetorhash).