Nuclide

Open API

The whole corpus is published as static files under /api/v1/ with permissive CORS: JSON per entity and per kind, one-line-per-record NDJSON, CSV for spreadsheets, and a JSON Schema. No key, no rate limit beyond the CDN. Licence CC BY-NC 4.0.

Attribution required

The data are free for non-commercial, educational and research use under CC BY-NC 4.0; commercial use needs a paid licence. If you use the API or the files, name Nuclide and link to nuclide.cc wherever the data or text derived from it appears, for example: Data from Nuclide (nuclide.cc), CC BY-NC 4.0. Logos remain their owners' trademarks and molecule structures keep their PubChem and RCSB terms. The same notice is in /api/v1/meta.json, as the first line of every CSV and inside every JSON download from the site's tables.

Files

PathContents
/api/v1/all.jsonAll 862 entities, fully resolved with defaults, plus an incoming map of backlinks per id.
/api/v1/all.ndjsonThe same entities, one JSON object per line with its route, for streaming tools (jq -c, DuckDB, pandas read_json(lines=True)).
/api/v1/schema.jsonJSON Schema (draft 2020-12) of one entity, generated from the Zod schema that validates the corpus at build time.
/api/v1/openapi.jsonOpenAPI 3.1 description of every file here and the feeds, generated at build time from the same layout that writes them.
/api/v1/search.jsonCompact documents (id, kind, name, tldr, route) used by the site search.
/api/v1/indications.json · .csv51 indications. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/isotopes.json · .csv37 isotopes. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/fronts.json · .csv12 fronts. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/technologies.json · .csv69 technologies. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/targets.json · .csv36 targets. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/drugs.json · .csv100 drugs. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/companies.json · .csv90 companies. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/institutions.json · .csv60 institutions. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/pathways.json · .csv4 pathways. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/terms.json · .csv76 terms. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/trials.json · .csv136 trials. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/pairings.json · .csv14 pairings. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/roadmaps.json · .csv8 roadmaps. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/ideas.json · .csv36 ideas. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/collections.json · .csv12 collections. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/people.json · .csv47 people. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/bottlenecks.json · .csv14 bottlenecks. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/opportunities.json · .csv13 opportunities. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/key papers.json · .csv23 key papers. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/journals.json · .csv24 journals. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell.
/api/v1/entities/<id>.jsonOne entity with its neighbours, e.g. pluvicto.json, psma.json.
/api/v1/my-indications.jsonEvery indication as id, name, route and hub group: the chooser list the site fetches on demand.
/api/v1/ranking.jsonInstitution ranking rows with the score components.
/api/v1/meta.jsonBuild date, counts, schema version, the list of files and feeds.

Every table on the site also has CSV and JSON buttons that export exactly the rows shown after filtering, and the landscape grid exports the grid.

Feeds

Atom 1.0 feeds for the parts of Nuclide that move. Subscribe in any feed reader; the entries link back to the page and to the primary source.

FeedContents
/feeds/changelog.xml
Changelog
One entry per release of the site.
/feeds/regulatory.xml
Regulatory events
Designations, filings, approvals, complete response letters, withdrawals and label changes, newest first (100).
/feeds/calendar.xml
Readout calendar
Regulatory dates, advisory committees, expected readouts and congresses; expected dates are marked as editorial estimates.
/feeds/pulse.xml
Research pulse
What the leading journals, regulators and news sources are saying, item by item with links.

Bulk download and citation

Each tagged version of Nuclide is published as a GitHub release with the whole /api/v1/ tree attached as a tarball, the CSVs as a zip, the NDJSON, and SHA-256 checksums, so a paper or a pipeline can pin an exact snapshot. The repository carries a .zenodo.json so that Zenodo can archive each release and mint a DOI once archiving is switched on for the repository; until then, cite the release tag and commit.

Nuclide contributors. Nuclide: a public, cited map of radiopharmaceuticals. Version <tag>, <date>. https://nuclide.cc (data CC BY-NC 4.0). https://github.com/casadesante/Nuclide/releases/tag/<tag>

MCP and CLI

The same files, two more ways in. nuclide is a command-line tool for terminals and shell pipelines; nuclide-mcp is a Model Context Protocol server that gives Claude, Cursor and other assistants the corpus as tools, with a citation on every fact. Both read /api/v1/ directly (no key, no checkout), run on Node 20 or later, and end every output with the attribution line. nuclide ask and the MCP ask tool run the same pipeline as Ask Nuclide, so the three give the same cited answer.

Command or toolWhat it does
nuclide search <query> [--kind]Word plus concept search, fused as the site does it; each hit says why it matched.
nuclide get <id|route> [--json]One record: TL;DR, summary, key fields, connected records, sources.
nuclide list <kind> [--filter key=value]Every record of a kind, filtered on any field.
nuclide ask "<question>" [--region UK]The cited, templated Ask Nuclide answer.
nuclide context <id> · nuclide kinds · nuclide export <kind> --csv|--jsonMarkdown context for a record, the kinds with counts, a kind as CSV or JSON.
MCP toolssearch, get_entity, list_kind, ask, context, compare; resources nuclide://kinds and nuclide://kinds/{kind}; prompt nuclide-brief for a patient or clinician summary.
# CLI
npx nuclide search "PSMA-positive prostate cancer" --kind drug
npx nuclide get pluvicto
npx nuclide ask "What did VISION show for 177Lu-PSMA-617?" --region UK
npx nuclide export indication --csv > indications.csv
NUCLIDE_API=./out/api/v1 npx nuclide kinds          # any copy of /api/v1, including a local build

# MCP: Claude Code
claude mcp add nuclide -- npx -y nuclide-mcp

# MCP: Claude Desktop or Cursor (claude_desktop_config.json, .cursor/mcp.json)
{ "mcpServers": { "nuclide": { "command": "npx", "args": ["-y", "nuclide-mcp"] } } }

Source and full references: packages/nuclide-cli and packages/nuclide-mcp in the repository, and docs/ACCESS.md. A larger MCP server with biomarker matching, calendar and live trial lookup runs from a checkout with npm run mcp.

Schema

Every entity shares base fields (id, kind, name, aka, tldr, summary, status, asOf, wikipedia, links, tags) and relationship arrays (related, indications, sections, technologies, targets, drugs, companies, institutions, pathways, terms, trials) holding ids. Kind-specific fields are documented in src/lib/schema.ts in the repository, which is the source of truth and is enforced at build time; schema.json is generated from it.

Examples

# one entity and its neighbouring products
curl -s https://nuclide.cc/api/v1/entities/psma.json | jq '.entity.name, .neighbours.drug[].name'

# every approved product as CSV, in a spreadsheet or DuckDB
curl -sO https://nuclide.cc/api/v1/drugs.csv
duckdb -c "select name, modality, status from read_csv('drugs.csv', header=true, skip=1) where status='approved'"

# stream the whole corpus one record at a time
curl -s https://nuclide.cc/api/v1/all.ndjson | jq -c 'select(.kind=="trial") | {id, name, status}'