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.
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
| Path | Contents |
|---|---|
| /api/v1/all.json | All 862 entities, fully resolved with defaults, plus an incoming map of backlinks per id. |
| /api/v1/all.ndjson | The same entities, one JSON object per line with its route, for streaming tools (jq -c, DuckDB, pandas read_json(lines=True)). |
| /api/v1/schema.json | JSON Schema (draft 2020-12) of one entity, generated from the Zod schema that validates the corpus at build time. |
| /api/v1/openapi.json | OpenAPI 3.1 description of every file here and the feeds, generated at build time from the same layout that writes them. |
| /api/v1/search.json | Compact documents (id, kind, name, tldr, route) used by the site search. |
| /api/v1/indications.json · .csv | 51 indications. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/isotopes.json · .csv | 37 isotopes. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/fronts.json · .csv | 12 fronts. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/technologies.json · .csv | 69 technologies. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/targets.json · .csv | 36 targets. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/drugs.json · .csv | 100 drugs. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/companies.json · .csv | 90 companies. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/institutions.json · .csv | 60 institutions. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/pathways.json · .csv | 4 pathways. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/terms.json · .csv | 76 terms. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/trials.json · .csv | 136 trials. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/pairings.json · .csv | 14 pairings. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/roadmaps.json · .csv | 8 roadmaps. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/ideas.json · .csv | 36 ideas. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/collections.json · .csv | 12 collections. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/people.json · .csv | 47 people. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/bottlenecks.json · .csv | 14 bottlenecks. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/opportunities.json · .csv | 13 opportunities. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/key papers.json · .csv | 23 key papers. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/journals.json · .csv | 24 journals. The CSV flattens each record: lists of ids joined with “; ”, nested tables as JSON in the cell. |
| /api/v1/entities/<id>.json | One entity with its neighbours, e.g. pluvicto.json, psma.json. |
| /api/v1/my-indications.json | Every indication as id, name, route and hub group: the chooser list the site fetches on demand. |
| /api/v1/ranking.json | Institution ranking rows with the score components. |
| /api/v1/meta.json | Build 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.
| Feed | Contents |
|---|---|
| /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 tool | What 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|--json | Markdown context for a record, the kinds with counts, a kind as CSV or JSON. |
| MCP tools | search, 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}'