Developers
Genome data for your code and your AI assistant
Two ways in. Read our reference data on genes, variants and traits as JSON, with no key and from any origin. Or, as a member, let your AI assistant read your own results through the Genome Manager's MCP server.
Our genomic reference data
Atlas data↓Public facts about genes, variants and traits, as JSON. No account and no key: none of it is about you.
- Atlas data
- https://dantelabs.com
- OpenAPI
- /openapi.json
Your own genome, through AI
MCP server↓Your AI assistant reads your own results once you sign in to the Genome Manager. Read-only, and only ever your data.
- MCP server
- https://mcp.dantelabs.com/mcp
Connect your AI assistant to your own genome with Premium + AI.
A Premium + AI első évre készletenként 200 $ díjjal jár.
Rendelés Premium + AI csomaggalOur genomic reference data
Atlas data
Public facts about genes, variants and traits, as JSON. No account and no key: none of it is about you.
Gene, variant and trait pages and the genome search as JSON: the facts each page shows, every link an absolute url. Public and read-only, with no key; any origin may read it.
Each path is also its page's URL without .json, asked for with Accept: application/json.
These are reference facts about genes, variants and traits, not anyone's results: cite the page's url, and don't present a classification as a diagnosis.
Search
Genes, variant pages and conditions by any name or ID, and what lies at a place in the genome. Search first unless you already have a page's URL: follow each hit's url or json rather than building a path. A query not asked before is a live search, so searches are metered per client.
| Parameter | Description |
|---|---|
qstringRequired | A gene symbol, alias or name, a variant name or rsID, a condition, or a position, range or band. |
build"GRCh38""GRCh37"OptionalDefault "GRCh38" | The reference genome a place is read on. |
library(jsonlite)
url <- "https://dantelabs.com/genes/search.json?q=ABCC7"
page <- fromJSON(url)
page$genes$items$symbolimport requests
url = "https://dantelabs.com/genes/search.json?q=ABCC7"
page = requests.get(url).json()
print([gene["symbol"] for gene in page["genes"]["items"]])curl -H "Accept: application/json" "https://dantelabs.com/genes/search?q=ABCC7"const page = await fetch("https://dantelabs.com/genes/search.json?q=ABCC7").then((response) => response.json());
console.log(page.genes.items.map((gene) => gene.symbol));Responses
| Status | Meaning |
|---|---|
200 | The pages the query names. |
400 | No q. |
429 | Too many searches from this client. |
503 | The search is unavailable for now. |
▶Fields
| Field | Description |
|---|---|
querystring | The query as read: trimmed, its spaces collapsed, at most 100 characters |
urlstring | The search's page |
genesobject | Genes with a page whose symbol, alias, previous symbol or name begins with the query, or that an ID names (HGNC:, Ensembl, NCBI Gene): exact before prefix, symbol before synonym. At most 50 |
genes.itemsarray of object | |
genes.items[].symbolstring | |
genes.items[].namestring | HGNC's approved name, in English |
genes.items[].synonymstringnull | The alias, previous symbol or name it was found by, lower-cased, when not its symbol or an ID |
genes.items[].urlstring | Its page |
genes.items[].jsonstring | The same page as JSON |
genes.moreboolean | More genes match than are listed |
conditionsobject | MONDO diseases whose label or synonym begins with the query, or that a MONDO, OMIM or Orphanet ID names, kept to those a report covers or the panel gives a gene with a page: exact before prefix, label before synonym. At most 50 |
conditions.itemsarray of object | |
conditions.items[].mondoIdstring | |
conditions.items[].namestring | MONDO's label, in English |
conditions.items[].synonymstringnull | The synonym it was found by, lower-cased, when not its label or an ID |
conditions.items[].reportsarray of object | Published disease reports covering it, as one of their diseases or a term below one, in catalog order |
conditions.items[].reports[].namestring | In English |
conditions.items[].reports[].urlstring | Its page |
conditions.items[].genesarray of object | Genes with a page the prioritisation panel names for the term itself (GenCC Definitive or Strong, ClinGen Definitive, Strong or Moderate, ACMG SF), by symbol. At most 12 |
conditions.items[].genes[].symbolstring | |
conditions.items[].genes[].urlstring | Its page |
conditions.items[].geneCountinteger ≥ 0 | How many such genes in all |
conditions.moreboolean | More conditions match than are listed |
variantsobject | Variants with a page the query names: by slug or alias (protein change, HGVS c., rsID, allele ID, ClinVar's other names) or ClinVar variation ID (VCV), anywhere; after a gene ("CFTR F508del", "NM_000492.4(CFTR):c.1521_1523del") only in it, and failing an exact match those whose slug or alias it begins. Most stars first. At most 50 |
variants.totalinteger ≥ 0 | How many variants match in all |
variants.itemsarray of object | |
variants.items[].symbolstring | |
variants.items[].namestring | As commonly written: "F508del", else the HGVS c., else the rsID |
variants.items[].commonNamestringnull | A short name the variant is known by when it has no protein change, from ClinVar's other names: "1717-1G>A". Show it beside name |
variants.items[].classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic" | The most severe of its qualifying classifications |
variants.items[].starsinteger 0–4 | The most stars of its qualifying classifications |
variants.items[].positioninteger ≥ 1null | Its GRCh38 position (1-based, VCF style), so a list can place it on the gene: absent when archivist has no GRCh38 location for it |
variants.items[].grch37Positioninteger ≥ 1null | Its GRCh37 position (1-based, VCF style), for a list shown on that build: absent when archivist has no GRCh37 location for it |
variants.items[].hgvsCstringnull | Its HGVS c. on its transcript, e.g. "c.1521_1523del"; null when it is the name |
variants.items[].partobjectnull | The exon or intron of the gene's MANE Select transcript it falls in, or null outside it |
variants.items[].part.kind"exon""intron" | |
variants.items[].part.numberinteger ≥ 1 | |
variants.items[].urlstring | Its page |
variants.items[].jsonstring | The same page as JSON |
regionobjectnull | What a position ("19:44908684"), range ("chr17:43.0-43.2M"), allele ("19-44908684-T-C", "chr7:117559590:CTT:-"), SPDI ("NC_000007.14:117559589:CTT:") or band ("19q13.32") query was read as: GRCh38 unless it began with GRCh37 or hg19, or build said otherwise. Its genes are those overlapping it, in position order, exact only when it is one position; its variants those lying in it (at that allele when named), in position order, exact when it is one position. Absent for any other query |
region.build"GRCh37""GRCh38" | |
region.chromstring | "1"-"22", "X", "Y" or "MT" |
region.startinteger ≥ 1 | 1-based, inclusive |
region.endinteger ≥ 1 | 1-based, inclusive: the start again for a position |
region.refstringOptional | The reference allele a VCF-style query named |
region.altstringOptional | The alternate allele a VCF-style query named |
region.slugstringOptional | The position slug of the allele an allele or SPDI query named, once archivist normalised it on GRCh38 (start, ref and alt are then the normalised ones): its page is /genes/<gene>/variants/<slug> under a gene listed here, whose snapshot names the canonical gene and slug (a catalog page it is, or itself), or a 404 when it lies in no gene with a page. Absent on GRCh37 and when archivist refuses the allele |
region.bandstringOptional | The cytogenetic band a band query named, e.g. "q13.32" |
region.trackobjectOptional | What to draw of the place: the range itself, or 100,000 bases around a position. Absent for a band the build has no genes for, or when archivist has no annotation |
region.track.startinteger ≥ 1 | The drawing's first base |
region.track.endinteger ≥ 1 | The drawing's last base |
region.track.genesarray of object | Genes Ensembl annotates overlapping the window, in start order. Empty when more than 300 do |
region.track.genes[].symbolstring | HGNC's symbol when Ensembl's gene maps to one, else Ensembl's name |
region.track.genes[].startinteger ≥ 1 | |
region.track.genes[].endinteger ≥ 1 | May lie outside the window: the site clips it |
region.track.genes[].strand"+""-" | |
region.track.genes[].slugstringOptional | Its gene page, when the gene catalog lists it |
region.track.truncatedboolean | More genes overlap than are drawn |
region.track.variantsarray of object | Variant pages lying in the window, counted in 240 equal bins (or bins of one base when narrower), empty bins left out, in position order |
region.track.variants[].startinteger ≥ 1 | |
region.track.variants[].endinteger ≥ 1 | |
region.track.variants[].countinteger ≥ 1 | |
region.track.variants[].genestringOptional | The one page's gene, when the bin holds one |
region.track.variants[].slugstringOptional | The one page's slug, when the bin holds one |
bestnullobject | The one page the query names outright, or null: the variant it identifies, else a gene, else a condition's report |
best.kind"gene""variant""condition" | |
best.genesame as genes.items[]Optional | |
best.variantsame as variants.items[]Optional | |
best.conditionsame as conditions.items[]Optional |
A gene
HGNC's record for the gene and its MANE Select transcript, with the reports, medicines and traits naming it and its variant pages. Under a language prefix (/de/genes/apoe.json) it answers in that language wherever a translation exists.
| Parameter | Description |
|---|---|
genestringRequired | The HGNC symbol, lower-cased. |
library(jsonlite)
url <- "https://dantelabs.com/genes/apoe.json"
page <- fromJSON(url)
page$gene$nameimport requests
url = "https://dantelabs.com/genes/apoe.json"
page = requests.get(url).json()
print(page["gene"]["name"])curl -H "Accept: application/json" "https://dantelabs.com/genes/apoe"const page = await fetch("https://dantelabs.com/genes/apoe.json").then((response) => response.json());
console.log(page.gene.name);Responses
| Status | Meaning |
|---|---|
200 | The record. |
301 | A capitalised or former slug: Location is the current .json URL. |
404 | No such page. |
503 | The genome data is unavailable for now. |
▶Fields
| Field | Description |
|---|---|
urlstring | The gene's page |
geneobject | |
gene.slugstring | The HGNC symbol, lower-cased |
gene.hgncstring | e.g. "HGNC:613" |
gene.symbolstring | |
gene.namestring | HGNC's approved name, in English |
gene.summarystringnull | What the gene does, in plain language: its published gene summary, in this locale, as plain text with no citations |
gene.summaryProseProsenull | The summary as written: italics and citations into references. Present with summary |
gene.referencesobject | What summaryProse cites, by key. Absent when it cites nothing |
gene.locationstringnull | Cytogenetic location, e.g. "19q13.32" |
gene.locusTypestringnull | e.g. "gene with protein product" |
gene.aliasesarray of string | Alias symbols |
gene.previousSymbolsarray of string | |
gene.ensemblIdstringnull | e.g. "ENSG00000130203" |
gene.entrezIdintegernull | |
gene.omimarray of string | HGNC's OMIM gene IDs, bare (no prefix). Empty from an older bundle |
gene.uniprotarray of string | HGNC's UniProt accessions. Empty from an older bundle |
gene.modelGeneModelnull | Absent when the gene has no MANE Select transcript |
gene.model.build"GRCh38" | |
gene.model.releasestring | The MANE release the model comes from, e.g. "v1.4" |
gene.model.chromstring | "1"-"22", "X", "Y" or "MT" |
gene.model.startinteger ≥ 1 | The transcript's first base |
gene.model.endinteger ≥ 1 | The transcript's last base |
gene.model.strand"+""-" | |
gene.model.ensemblTranscriptstring | e.g. "ENST00000252486.9" |
gene.model.refseqTranscriptstring | e.g. "NM_000041.4" |
gene.model.ensemblProteinstringOptional | e.g. "ENSP00000252486.3". Absent for a non-coding transcript or an older bundle |
gene.model.refseqProteinstringOptional | e.g. "NP_000032.1". Absent for a non-coding transcript or an older bundle |
gene.model.proteinMassintegerOptional | The protein's average mass in daltons, unmodified, from MANE's protein sequence, e.g. 36154. Absent for a non-coding transcript or an older bundle |
gene.model.exonsarray of object | In genomic order, whatever the strand |
gene.model.exons[].startinteger ≥ 1 | |
gene.model.exons[].endinteger ≥ 1 | |
gene.model.cdsobjectOptional | Start codon to stop codon (to the last coding base where MANE annotates no stop). Absent for a non-coding transcript |
gene.model.cds.startinteger ≥ 1 | |
gene.model.cds.endinteger ≥ 1 | |
gene.neighbourhoodGeneNeighbourhoodnull | |
gene.neighbourhood.releasestring | The Ensembl release of the annotation, e.g. "116" |
gene.neighbourhood.startinteger ≥ 1 | The window's first base |
gene.neighbourhood.endinteger ≥ 1 | The window's last base |
gene.neighbourhood.genesarray of object | Genes overlapping the window, the gene itself left out, in start order |
gene.neighbourhood.genes[].symbolstring | HGNC's symbol when Ensembl's gene maps to one, else Ensembl's name |
gene.neighbourhood.genes[].ensemblIdstring | e.g. "ENSG00000130203", without a version |
gene.neighbourhood.genes[].biotype"protein_coding""lncRNA""other" | |
gene.neighbourhood.genes[].startinteger ≥ 1 | |
gene.neighbourhood.genes[].endinteger ≥ 1 | May lie outside the window: the site clips it |
gene.neighbourhood.genes[].strand"+""-" | |
gene.neighbourhood.genes[].slugstringOptional | Its gene page, when the gene catalog lists it |
gene.neighbourhood.truncatedboolean | More genes overlap than are listed |
gene.grch37GeneSpannull | Absent when Ensembl has no GRCh37 span for the gene |
gene.grch37.build"GRCh37" | |
gene.grch37.releasestring | The Ensembl release of the annotation, e.g. "87" |
gene.grch37.chromstring | "1"-"22", "X", "Y" or "MT" |
gene.grch37.startinteger ≥ 1 | The gene's first base |
gene.grch37.endinteger ≥ 1 | The gene's last base |
gene.grch37.strand"+""-" | |
gene.reportsarray of object | Published, unretired disease reports covering the gene, in slug order. Empty for a gene only a pharmacogenomics report calls. Those whose diseases are all broad groupings come last |
gene.reports[].slugstring | A disease report. Its name comes from the disease catalog |
gene.reports[].diseasesarray of object | The report's diseases for which the gene is among the genes archivist's panel links to it: GenCC's Definitive or Strong, ClinGen's Definitive, Strong or Moderate, and the ACMG secondary findings list |
gene.reports[].diseases[].mondoIdstring | |
gene.reports[].diseases[].namestring | The name editors give it, in this locale |
gene.reports[].diseases[].genesinteger ≥ 1 | How many genes the panel links to the disease or a term below it, this one included. A broad grouping links many |
gene.reports[].diseases[].inheritance"autosomal-dominant""autosomal-recessive""x-linked-dominant""x-linked-recessive""y-linked""mitochondrial"null | |
gene.reports[].diseases[].descriptionstringnull | As the report describes it, in this locale |
gene.reports[].diseases[].managementstringnull | What knowing changes: surveillance, treatment, family testing |
gene.reports[].diseases[].evidenceGeneEvidencenull | |
gene.reports[].diseases[].sameAsReportboolean | The disease has its report's name, so the report names it |
gene.reports[].diseases[].broadboolean | Linked to more than 50 genes: a broad grouping |
gene.reports[].namestring | The report's name, from its catalogue, in the page's language |
gene.reports[].urlstring | Its page |
gene.pharmacogenomicsarray of object | Published, unretired pharmacogenomics reports calling the gene, in slug order |
gene.pharmacogenomics[].slugstring | A pharmacogenomics report. Its name comes from its catalog |
gene.pharmacogenomics[].titlestring | The report's heading for the gene, in this locale |
gene.pharmacogenomics[].summarystringnull | |
gene.pharmacogenomics[].actionablearray of string | When the result matters, one point each, in this locale |
gene.pharmacogenomics[].caveatstringnull | What the report can’t call for the gene, in this locale |
gene.pharmacogenomics[].allelesarray of object | The alleles the report calls, and the reference, as CPIC defines them |
gene.pharmacogenomics[].alleles[].namestring | e.g. "*17" |
gene.pharmacogenomics[].alleles[].functionstringOptional | CPIC clinical function, e.g. "No function" |
gene.pharmacogenomics[].alleles[].referenceboolean | What a chromosome carrying none of the called alleles is read as |
gene.pharmacogenomics[].phenotypesarray of string | CPIC's phenotypes for the gene, e.g. Poor Metabolizer |
gene.pharmacogenomics[].drugsarray of object | CPIC's gene–drug pairs, strongest CPIC level first, then by name |
gene.pharmacogenomics[].drugs[].namestring | archivist's name for the drug |
gene.pharmacogenomics[].drugs[].cpicLevelstringOptional | |
gene.pharmacogenomics[].drugs[].clinpgxLevelstringOptional | |
gene.pharmacogenomics[].drugs[].pgxTestingstringOptional | e.g. "Actionable PGx" |
gene.pharmacogenomics[].drugs[].guidelineobjectOptional | |
gene.pharmacogenomics[].namestring | The report's name, from its catalogue, in the page's language |
gene.pharmacogenomics[].urlstring | Its page |
gene.traitsarray of object | Published, unretired theme reports reading the gene, in slug order |
gene.traits[].slugstring | A theme report. Its name comes from its catalog |
gene.traits[].traitsarray of object | Its SNP cards and alerts read at a variant archivist places in the gene, in report order |
gene.traits[].traits[].keystring | The SNP card or alert, unique within the report |
gene.traits[].traits[].titlestring | In this locale |
gene.traits[].namestring | The report's name, from its catalogue, in the page's language |
gene.traits[].urlstring | Its page |
gene.phenotypesarray of object | The HPO phenotypic abnormalities HPO links the gene to, through its OMIM and Orphanet diseases, by name. Empty when archivist has no HPO |
gene.phenotypes[].slugstring | The HPO label lower-cased, runs of anything but letters and digits as "-"; the HPO id is appended when two labels would share one |
gene.phenotypes[].namestring | HPO's layperson name when it has one, else its label, in English |
gene.phenotypes[].systemsarray of string | Slugs of the body systems it falls under |
gene.phenotypes[].frequency"obligate""very-frequent""frequent""occasional""very-rare"Optional | HPO's frequency of the feature among people with one of the gene's diseases, the most frequent across them: obligate (100%), very frequent (80-99%), frequent (30-79%), occasional (5-29%) or very rare (1-4%). Absent when HPO gives none |
gene.phenotypes[].urlstring | Its page |
gene.relatedarray of object | Up to 12 other genes with a page linked to the same diseases, most shared first, then by symbol |
gene.related[].slugstring | |
gene.related[].symbolstring | |
gene.related[].namestring | HGNC's approved name, in English |
gene.related[].sharedinteger ≥ 1 | How many of its diseases the two genes share |
gene.related[].urlstring | Its page |
gene.sourcesobjectnull | Releases behind the gene–disease links. Absent when the panel could not be read |
gene.sources.bundleIdstring | The archivist bundle the panel came from |
gene.sources.panelstringnull | The GenCC, ClinGen and ACMG SF release the links come from |
gene.sources.acmgSfstringnull | The ACMG secondary findings list version, e.g. "SF v3.2" |
gene.locusKind"proteinCoding""lncRna""microRna""snRna""snoRna""tRna""rRna""otherRna""pseudogene""immunoglobulin""tCellReceptor""readthrough""retrovirus""other"null | HGNC's locus type, as the kind of gene the page names |
variantsobject | The gene's variant pages, each as its row in the gene's variant list |
variants.totalinteger | How many variant pages the gene has |
variants.urlstringnull | The gene's variant list, or null when it has none |
variants.itemsarray of object | |
variants.items[].symbolstring | |
variants.items[].slugstring | The variant page’s slug within the gene |
variants.items[].namestring | As commonly written: "F508del", else the HGVS c., else the rsID |
variants.items[].commonNamestringnull | A short name the variant is known by when it has no protein change, from ClinVar's other names: "1717-1G>A". Show it beside name |
variants.items[].classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic" | The most severe of its qualifying classifications |
variants.items[].starsinteger 0–4 | The most stars of its qualifying classifications |
variants.items[].positioninteger ≥ 1null | Its GRCh38 position (1-based, VCF style), so a list can place it on the gene: absent when archivist has no GRCh38 location for it |
variants.items[].grch37Positioninteger ≥ 1null | Its GRCh37 position (1-based, VCF style), for a list shown on that build: absent when archivist has no GRCh37 location for it |
variants.items[].hgvsCstringnull | Its HGVS c. on its transcript, e.g. "c.1521_1523del"; null when it is the name |
variants.items[].partobjectnull | The exon or intron of the gene's MANE Select transcript it falls in, or null outside it |
variants.items[].part.kind"exon""intron" | |
variants.items[].part.numberinteger ≥ 1 | |
variants.items[].urlstring | Its page |
A variant
ClinVar's record for the variant, its classification under the ACMG/AMP criteria with the evidence for each, and the reports that read it, in English. A retired page still answers, with status retired, why, and what ClinVar says now.
| Parameter | Description |
|---|---|
genestringRequired | The gene's HGNC symbol, lower-cased. |
variantstringRequired | The variant's slug, as its gene's variants.items list it. A ClinVar variation (vcv7105) or a GRCh38 change (7-117559590-atct-a) also works, answered with a 301 to its page. |
library(jsonlite)
url <- "https://dantelabs.com/genes/cftr/variants/f508del.json"
page <- fromJSON(url)
page$variant$nameimport requests
url = "https://dantelabs.com/genes/cftr/variants/f508del.json"
page = requests.get(url).json()
print(page["variant"]["name"])curl -H "Accept: application/json" "https://dantelabs.com/genes/cftr/variants/f508del"const page = await fetch("https://dantelabs.com/genes/cftr/variants/f508del.json").then((response) => response.json());
console.log(page.variant.name);Responses
| Status | Meaning |
|---|---|
200 | The record. |
301 | A capitalised or former slug: Location is the current .json URL. |
404 | No such page. |
503 | The genome data is unavailable for now. |
▶Fields
| Field | Description |
|---|---|
urlstring | The variant's page |
geneobject | |
gene.slugstring | The gene page |
gene.symbolstring | |
gene.hgncstring | e.g. "HGNC:1884" |
gene.urlstring | Its page |
variantobject | |
variant.status"active""retired" | |
variant.bundleIdstring | The archivist bundle the variants come from |
variant.bundleDatestring | When that bundle was built |
variant.geneobject | |
variant.gene.slugstring | The gene page |
variant.gene.symbolstring | |
variant.gene.hgncstring | e.g. "HGNC:1884" |
variant.slugstring | The variant page’s slug within the gene |
variant.namestring | As commonly written: "F508del", else the HGVS c., else the rsID |
variant.commonNamestringnullOptional | A short name the variant is known by when it has no protein change, from ClinVar's other names: "1717-1G>A". Show it beside name |
variant.classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic""uncertain-significance""conflicting""likely-benign""benign-likely-benign""benign""risk-factor""drug-response""association""protective""affects"Optional | The most severe of its qualifying classifications; on a "clinvar" tier page, ClinVar's aggregate classification of the variation, else its most reviewed one. Absent on a "position" tier page alone |
variant.starsinteger 0–4Optional | The most stars of its qualifying classifications. Absent on a "position" tier page alone |
variant.tier"expert""acmg""clinvar""position"Optional | The catalog's tier; "clinvar" for any other ClinVar variation of one allele, read on request by its position slug (chrom-pos-ref-alt, GRCh38) or, with no position form, vcv<variation ID>; "position" for a small change ClinVar has no variation of, read on request by its position slug. Neither is ever in the catalog: serve them noindex |
variant.clinvarNamestringnullOptional | ClinVar’s preferred name, e.g. "NM_000492.4(CFTR):c.1521_1523del (p.Phe508del)" |
variant.descriptionstringnullOptional | What the variant does, in plain language: its published variant description, in this locale, as plain text with no citations |
variant.descriptionProseProsenullOptional | The description as written: italics and citations into references. Present with description |
variant.referencesobjectOptional | What descriptionProse cites, by key. Absent when it cites nothing |
variant.otherNamesarray of stringOptional | Other names ClinVar records for it, as submitters and the literature write them: "deltaF508", "185delAG" |
variant.aliasesarray of stringOptional | Slugs that redirect here |
variant.formerSlugsarray of object | Pages it had before, for permanent redirects: in another gene when its predicted gene changed. Never another variant’s, and never given out again |
variant.changedAtstringOptional | When what the page shows last changed: the date of the bundle that last changed it |
variant.identifiersobject | |
variant.identifiers.allelestring | archivist’s allele ID: the ClinGen Allele Registry ID where there is one; on a "position" tier page archivist has no allele for, its GRCh38 locus CURIE ("GRCh38:7-117559590-ATCT-A") |
variant.identifiers.rsIdsarray of stringOptional | |
variant.identifiers.clinvarVariationIdintegerOptional | |
variant.identifiers.vcvstringOptional | |
variant.identifiers.clinvarAlleleIdintegerOptional | |
variant.identifiers.spdistringOptional | Canonical SPDI on GRCh38, on a page named by its position: "NC_000007.14:117559590:TCTT:T" |
variant.identifiers.hgvsGstringOptional | HGVS g. on GRCh38, on a page named by its position: "NC_000007.14:g.117559592_117559594del" |
variant.locationsarray of VariantLocationOptional | GRCh38, then GRCh37 when archivist has it |
variant.locations[].build"GRCh37""GRCh38" | |
variant.locations[].chromstring | "1"-"22", "X", "Y" or "MT" |
variant.locations[].posinteger ≥ 1 | 1-based, VCF style |
variant.locations[].refstring | |
variant.locations[].altstring | |
variant.consequenceVariantConsequenceOptional | Predicted on one transcript of the gene (mehari, GRCh38): its MANE Select one where it touches it |
variant.consequence.transcriptstring | RefSeq accession, e.g. "NM_000492.4" |
variant.consequence.maneSelectboolean | The gene's MANE Select transcript |
variant.consequence.hgvsCstringOptional | e.g. "c.1521_1523del" |
variant.consequence.hgvsPstringOptional | e.g. "p.Phe508del" |
variant.consequence.consequencesarray of string | Sequence Ontology terms, most severe first |
variant.consequence.impact"high""moderate""low""modifier" | SnpEff's putative impact |
variant.classificationsarray of objectOptional | ClinVar's qualifying pathogenic and likely pathogenic classifications, most stars first, then by name; on a "clinvar" tier page, every condition ClinVar classifies it for; on a "position" tier page, none |
variant.classifications[].mondoIdstring | |
variant.classifications[].namestring | The report's name for the disease, in this locale, when a report lists exactly this term; else MONDO's label, in English |
variant.classifications[].classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic""uncertain-significance""conflicting""likely-benign""benign-likely-benign""benign""risk-factor""drug-response""association""protective""affects" | Pathogenic or likely pathogenic, except on a "clinvar" tier page |
variant.classifications[].starsinteger 0–4 | ClinVar review stars |
variant.classifications[].vcvstringOptional | ClinVar variation accession |
variant.classifications[].submissionsinteger ≥ 0 | ClinVar submissions (SCVs) behind it |
variant.classifications[].lastEvaluatedstringOptional | When the submissions it rests on were last evaluated (the latest), when ClinVar says |
variant.classifications[].expertPanelstringOptional | The expert panel or practice guideline behind a three- or four-star classification, e.g. "ClinGen ENIGMA BRCA1 and BRCA2 Variant Curation Expert Panel, ClinGen" |
variant.acmgobjectnullOptional | The ACMG/AMP criteria archivist finds the variant meets from its predicted consequence, gnomAD's population frequencies and ClinVar's aggregate classification, and what they combine to: absent when archivist could not evaluate it |
variant.acmg.rulesVersionstring | archivist's ACMG rules version: an evaluation under another was made by other rules |
variant.acmg.classification"pathogenic""likely-pathogenic""uncertain-significance""likely-benign""benign" | What the counted criteria's points combine to on ClinGen SVI's scale (Tavtigian et al. 2020): pathogenic at 10 or more, likely pathogenic 6 to 9, uncertain 0 to 5, likely benign -1 to -6, benign -7 or less; BA1 alone is benign. Not a clinical classification: case-level criteria (segregation, de novo, phase, phenotype), validated functional studies and in-silico predictions are not assessed |
variant.acmg.pointsinteger | The counted criteria's SVI points summed |
variant.acmg.criteriaarray of object | The criteria it meets: counted before uncounted, pathogenic first and strongest first, then benign |
variant.acmg.criteria[].code"PVS1""PS1""PS3""PM1""PM2""PM4""PM5""PP2""PP3""PP5""BA1""BS1""BS2""BS3""BP1""BP3""BP4""BP6""BP7" | |
variant.acmg.criteria[].strength"stand-alone""very-strong""strong""moderate""supporting" | The strength it is applied at |
variant.acmg.criteria[].pointsinteger | Its SVI points: positive for pathogenic, negative for benign, 0 for BA1 and uncounted criteria |
variant.acmg.criteria[].countedboolean | False for PP5 and BP6, which ClinGen SVI retired, and for PM1 beside a strong PP3 (SVI caps the two at strong): shown for context, not counted |
variant.acmg.criteria[].consequencestringOptional | PVS1, PM4, BP3, BP7: the Sequence Ontology term on consequence.transcript (BP7: synonymous_variant, or intron_variant at least 7 bases past the donor and 21 before the acceptor) |
variant.acmg.criteria[].gradingarray of "nmd""nmd-escape-large""nmd-escape-small""splice-frameshift""splice-frameshift-nmd-escape""splice-inframe-large""splice-inframe-small""start-lost""nmd-unknown""splice-unknown""lof-mechanism-likely""lof-mechanism-unchecked"Optional | PVS1: how SVI's decision tree graded it |
variant.acmg.criteria[].clinvarobjectOptional | PP5, BP6: ClinVar's aggregate classification it rests on; PS1, PM5: the related variant's |
variant.acmg.criteria[].relatedobjectOptional | PS1, PM5: the pathogenic ClinVar variant at the same residue, with the same change (PS1) or another (PM5) |
variant.acmg.criteria[].regionstringOptional | BP3: the region track the in-frame change lies in, such as giab:tandem_repeats |
variant.acmg.criteria[].hotspotobjectOptional | PM1: the pathogenic missense variants in ClinVar (one star or more) within the window of residues from to to, which holds no benign one |
variant.acmg.criteria[].splicingnumber ≤ 1Optional | PP3, BP4: the largest of OpenSpliceAI's delta scores on the gene's MANE Select transcript (PP3 at 0.2 or more, BP4 at 0.1 or less) |
variant.acmg.criteria[].missensenumber 0–1Optional | PP3, BP4: AlphaMissense's score, in the bands Bergquist et al. 2025 calibrated (PP3 from 0.792, BP4 at 0.169 or less) |
variant.acmg.criteria[].mechanismobjectOptional | PP2, BP1: the gene's pathogenic and likely pathogenic ClinVar variants (one star or more) that are missense and null; PP2 where half or more are missense in a missense-constrained gene, BP1 where a tenth or fewer are |
variant.acmg.criteria[].populationobjectOptional | PM2, BA1, BS1, BS2: the gnomAD sets it rests on (for PM2, those the variant is absent from) |
variant.acmg.missenseobjectOptional | AlphaMissense's pathogenicity score for a missense SNV (Cheng et al. 2023); absent when not scored |
variant.acmg.missense.transcriptstring | The Ensembl transcript scored, without its version |
variant.acmg.missense.scorenumber 0–1 | |
variant.acmg.expertarray of objectOptional | ClinGen expert panels' interpretations of the variant from the Evidence Repository, newest first: shown alongside, never counted in, the criteria above |
variant.acmg.expert[].panelstring | The ClinGen expert panel (VCEP), such as Familial Hypercholesterolemia VCEP |
variant.acmg.expert[].classification"pathogenic""likely-pathogenic""uncertain-significance""likely-benign""benign" | The panel's classification |
variant.acmg.expert[].diseaseobjectOptional | |
variant.acmg.expert[].inheritancestringOptional | ClinGen's mode of inheritance |
variant.acmg.expert[].criteriaarray of object | The criteria the panel applied, in its order |
variant.acmg.expert[].approvedstringOptional | When the panel approved it |
variant.acmg.expert[].urlstringOptional | The interpretation's page in the ClinGen Evidence Repository |
variant.acmg.frequenciesarray of objectOptional | gnomAD's figures for the variant the criteria were assessed on, exomes then genomes |
variant.acmg.frequencies[].dataset"gnomad-exomes""gnomad-genomes" | |
variant.acmg.frequencies[].versionstring | gnomAD's release, such as 4.1 |
variant.acmg.frequencies[].foundboolean | A carrier was seen |
variant.acmg.frequencies[].filteredboolean | The call failed gnomAD's quality filters, so the frequency criteria ignore it |
variant.acmg.frequencies[].frequencynumber 0–1Optional | |
variant.acmg.frequencies[].alleleCountinteger ≥ 0 | |
variant.acmg.frequencies[].alleleNumberinteger ≥ 0 | |
variant.acmg.frequencies[].homozygotesinteger ≥ 0 | |
variant.acmg.frequencies[].groupMaxobjectOptional | The genetic ancestry group with the highest AF |
variant.acmg.frequencies[].filteringMaxobjectOptional | The group with the highest filtering AF (95% CI), the figure BA1 and BS1 compare |
variant.reportsarray of objectOptional | Published, unretired disease reports covering it, in slug order: none on a "position" tier page |
variant.reports[].slugstring | A disease report. Its name comes from the disease catalog |
variant.reports[].diseasesarray of object | The report's diseases a qualifying classification falls under |
variant.reports[].diseases[].mondoIdstring | |
variant.reports[].diseases[].namestring | The name editors give it, in this locale |
variant.reports[].diseases[].inheritance"autosomal-dominant""autosomal-recessive""x-linked-dominant""x-linked-recessive""y-linked""mitochondrial"Optional | |
variant.difficultRegionsarray of objectOptional | GIAB difficult-region tracks it falls in, where short-read calls deserve caution |
variant.difficultRegions[].idstring | |
variant.difficultRegions[].labelstring | |
variant.sourcesarray of object | The archivist sources and releases it was built from, for credits |
variant.retiredAtstringOptional | The date of the first bundle it no longer qualified in |
variant.retiredReason"below-threshold""left-report""gene-removed""unpredicted"Optional | "below-threshold": ClinVar no longer classifies it pathogenic at enough stars; "left-report": no listed report covers its diseases; "gene-removed": its gene has no page; "unpredicted": mehari no longer places it in a gene |
variant.lastobjectOptional | Its most severe qualifying classification while it had a page |
variant.last.classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic" | ClinVar's classification, most severe first in the vocabulary |
variant.last.starsinteger 0–4 | ClinVar review stars |
variant.clinvararray of objectOptional | ClinVar's aggregate classification of it in this bundle: empty when ClinVar has none |
variant.clinvar[].variationIdintegerOptional | |
variant.clinvar[].classification"pathogenic""pathogenic-likely-pathogenic""likely-pathogenic""uncertain-significance""conflicting""likely-benign""benign-likely-benign""benign""risk-factor""drug-response""association""protective""affects" | |
variant.clinvar[].starsinteger 0–4 | ClinVar review stars |
reportsarray of object | Published, unretired disease reports covering it, in slug order: none on a "position" tier page, named in English; none once it is retired |
reports[].slugstring | A disease report. Its name comes from the disease catalog |
reports[].diseasesarray of object | The report's diseases a qualifying classification falls under |
reports[].diseases[].mondoIdstring | |
reports[].diseases[].namestring | The name editors give it, in this locale |
reports[].diseases[].inheritance"autosomal-dominant""autosomal-recessive""x-linked-dominant""x-linked-recessive""y-linked""mitochondrial"Optional | |
reports[].diseases[].sameAsReportboolean | The disease has its report's name, so the report names it |
reports[].namestring | The report's name, from its catalogue, in the page's language |
reports[].urlstring | Its page |
A trait
A Human Phenotype Ontology term, its broader and narrower terms and the genes linked to it, in English under every language prefix. HPO's licence asks that you name its release wherever you use the data.
| Parameter | Description |
|---|---|
traitstringRequired | The trait's slug. |
library(jsonlite)
url <- "https://dantelabs.com/traits/seizure.json"
page <- fromJSON(url)
page$trait$nameimport requests
url = "https://dantelabs.com/traits/seizure.json"
page = requests.get(url).json()
print(page["trait"]["name"])curl -H "Accept: application/json" "https://dantelabs.com/traits/seizure"const page = await fetch("https://dantelabs.com/traits/seizure.json").then((response) => response.json());
console.log(page.trait.name);Responses
| Status | Meaning |
|---|---|
200 | The record. |
301 | A capitalised or former slug: Location is the current .json URL. |
404 | No such page. |
503 | The genome data is unavailable for now. |
▶Fields
| Field | Description |
|---|---|
urlstring | The trait's page |
traitobject | One HPO phenotypic abnormality and the genes linked to it |
trait.bundleIdstring | The archivist bundle the terms come from |
trait.releasestring | The HPO release, e.g. "2026-09-01" |
trait.slugstring | The HPO label lower-cased, runs of anything but letters and digits as "-"; the HPO id is appended when two labels would share one |
trait.idstring | The HPO term, e.g. "HP:0000256" |
trait.namestring | HPO's layperson name when it has one, else its label, in English |
trait.labelstringOptional | HPO's label, when it differs from the name |
trait.definitionstringOptional | HPO's definition, in English |
trait.synonymsarray of string | HPO's other exact and layperson names, less the name and label |
trait.systemsarray of object | The body systems it falls under; empty for one itself |
trait.systems[].slugstring | The HPO label lower-cased, runs of anything but letters and digits as "-"; the HPO id is appended when two labels would share one |
trait.systems[].namestring | HPO's layperson name when it has one, else its label, in English |
trait.systems[].urlstring | Its page |
trait.broaderarray of object | Its parents in HPO, by name |
trait.broader[].slugstring | The HPO label lower-cased, runs of anything but letters and digits as "-"; the HPO id is appended when two labels would share one |
trait.broader[].namestring | HPO's layperson name when it has one, else its label, in English |
trait.broader[].urlstring | Its page |
trait.narrowerarray of object | Its children in HPO, most genes first, then by name |
trait.narrower[].slugstring | The HPO label lower-cased, runs of anything but letters and digits as "-"; the HPO id is appended when two labels would share one |
trait.narrower[].namestring | HPO's layperson name when it has one, else its label, in English |
trait.narrower[].genesinteger ≥ 0 | How many genes HPO links to the term itself |
trait.narrower[].urlstring | Its page |
trait.genesarray of object | The genes HPO links to the term itself (not its narrower terms), most often seen first |
trait.genes[].slugstring | The gene page's slug: the HGNC symbol, lower-cased |
trait.genes[].symbolstring | |
trait.genes[].hgncstring | |
trait.genes[].namestringOptional | HGNC's approved name, in English |
trait.genes[].frequency"obligate""very-frequent""frequent""occasional""very-rare"Optional | HPO's frequency of the feature among people with one of the gene's diseases, the most frequent across them: obligate (100%), very frequent (80-99%), frequent (30-79%), occasional (5-29%) or very rare (1-4%). Absent when HPO gives none |
trait.genes[].diseasesinteger ≥ 1 | How many OMIM and Orphanet diseases of the gene HPO annotates with the term |
trait.genes[].urlstring | Its page |
For agents and tools
The same data, described for machines: point an agent or a code generator at these.
- /.well-known/api-catalog
api-catalogapplication/linkset+json - /openapi.json
service-descapplication/vnd.oai.openapi+json - /.well-known/agent-skills/dante-labs-genome-data/SKILL.md
service-doctext/markdown - /llms.txt
describedbytext/plain
Your own genome, through AI
MCP server
Your AI assistant reads your own results once you sign in to the Genome Manager. Read-only, and only ever your data.
Read-only tools over a Dante Labs member's own genome, once they sign in and pick a profile.
MCP access comes with Premium + AI. Every tool call checks the membership, so access ends when it does.
https://mcp.dantelabs.com/mcphttps://mcp.dantelabs.com/sseProtocol versions 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07
- 1
Add the server's address to your MCP client.
- 2
Sign in with your Dante Labs account when your browser opens.
- 3
Choose the genome profile the assistant may read, and approve it.
- 4
Ask about your results: the assistant calls the tools below for you.
Connect a client
In claude.ai, ChatGPT and other clients that add a remote server by its address, add a custom connector with the address above.
Run this in a terminal, then /mcp in Claude Code to sign in.
claude mcp add --transport http dante-labs https://mcp.dantelabs.com/mcpAdd this to claude_desktop_config.json and restart Claude Desktop. The mcp-remote helper opens the sign-in for you.
{
"mcpServers": {
"dante-labs": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.dantelabs.com/mcp"
]
}
}
}Tools
whoami
Read-onlyConnected profile
Returns the connected Dante profile (id, name, email) and subscription tier for this MCP session.
get_ancestry
Read-onlyAncestry
Continental genetic ancestry for the connected profile: top population and posterior probabilities (AFR/EUR/EAS/SAS/AMR/OCE). Used to interpret variants and calibrate predictive tools.
list_prioritised_conditions
Read-onlyPrioritised conditions
Top clinically prioritised conditions found in the connected profile genome, ranked by aggregate score. Returns MONDO id, disease name, variant count and scores. Note that one variant can match several MONDO ids, so entries here are not necessarily distinct findings — call list_prioritised_variants and read each variant's mondoMatches to see which rows share a single underlying variant.
| Argument | Description |
|---|---|
topNinteger 1–100OptionalDefault 20 | How many to return, highest scored first |
list_prioritised_variants
Read-onlyPrioritised variants
Top clinically prioritised variants in the connected profile genome. Returns locus, gene, consequence, zygosity (with copies spelling out whether this is one copy or two; this data does not carry the condition's inheritance mode, so one copy is carrier status only if the condition is recessive — for a dominant one it can be enough to cause it), ClinVar id and significance, per-disease mondoMatches with the significance ClinVar assigned for each disease (a variant labelled pathogenic overall may be only a risk factor for a given condition) and, when ClinVar classified it for a subtype of that disease rather than the disease itself, the subtype as classifiedFor, HGVS, gnomAD allele frequency (null when the backend has none) and score. Includes variants on ACMG secondary-findings conditions at any frequency (acmgSecondaryFinding on the match) and other variants only when rare; a rare variant outside the ACMG list has an uncertain link to the person's health and should be presented that way.
| Argument | Description |
|---|---|
topNinteger 1–100OptionalDefault 20 | How many to return, highest scored first |
get_pharmacogenomics
Read-onlyPharmacogenomics
The connected profile's pharmacogenomics report: for each pharmacogene it calls from single-variant (SNV/indel) data, the star alleles carried and the diplotype and (for activity-score genes) activity score behind CPIC's phenotype, what CPIC says that phenotype implies for each drug (drug, population, implication, strength; never a dose), the drugs CPIC pairs with the gene, and PharmGKB's clinical annotations. Read ambiguous and assumedReference before quoting a phenotype: the first means the loci could not be resolved cleanly, the second that no variant was called and the result rests on the reference allele — read it against referenceAllele.function. A gene with no phenotype (VKORC1, CYP4F2) reports its alleles only. notCalledFromThisData names the pharmacogenes this report deliberately does not call (CYP2D6, G6PD, HLA-B, …) and why — do not infer anything about those from a missing entry.
| Argument | Description |
|---|---|
locale"en""de""es""fr""it""ar"OptionalDefault "en" | The language of the report's text |
get_theme_report
Read-onlyWellness theme report
One of the connected profile's wellness theme reports — fitness, nutrigenetics or sleep — laid out as the report itself is: chapters of findings (one variant each: gene, rsID, the reader's genotype, copies of the effect allele, and the result, finding and what the reader can do), alerts, advice that applies to this reader, and notes, with references. Each finding's status says whether it describes the reader (reported), the reader carries an allele the report does not describe (uncharacterised), or the site could not be read (not_analysed). An alert's status is triggered or clear when the reader was assessed, and uncharacterised or not_analysed otherwise. Quote a finding only when reported, and an alert only when triggered or clear.
| Argument | Description |
|---|---|
reportstringRequired | Report slug, e.g. fitness, nutrigenetics or sleep |
locale"en""de""es""fr""it""ar"OptionalDefault "en" | The language of the report's text |
What an assistant tells you from these tools is not a diagnosis. Talk to a doctor or genetic counsellor before acting on a result.
Connect your AI assistant to your own genome with Premium + AI.
A Premium + AI első évre készletenként 200 $ díjjal jár.
Rendelés Premium + AI csomaggalEgy teszt. Egy életen át tartó válaszok.
449 $-tólIngyenes szállítás · Eredmények 6–8 hét alatt