Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.1.0",
"info": {
"title": "Dante Labs genome data",
"version": "1.0.0",
"description": "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.\n\nEach path is also its page's URL without `.json`, asked for with `Accept: application/json`. A gene answers under the site's language prefixes too, in that language; variants and traits are English."
},
"externalDocs": {
"url": "https://dantelabs.com/.well-known/agent-skills/dante-labs-genome-data/SKILL.md"
},
"servers": [
{
"url": "https://dantelabs.com"
}
],
"security": [],
"paths": {
"/genes/search.json": {
"get": {
"operationId": "searchGenome",
"summary": "Genes and variants by any name, or a genomic position",
"parameters": [
{
"name": "q",
"in": "query",
"required": true,
"description": "A gene symbol, alias or name, a variant name or rsID, or a position.",
"schema": {
"type": "string"
}
},
{
"name": "build",
"in": "query",
"description": "The build a position is on.",
"schema": {
"type": "string",
"enum": [
"GRCh38",
"GRCh37"
],
"default": "GRCh38"
}
}
],
"responses": {
"200": {
"description": "The pages the query names.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchResults"
}
}
}
},
"400": {
"description": "No `q`.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Too many searches from this client.",
"headers": {
"Retry-After": {
"description": "Seconds to wait before asking again.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "The search is unavailable for now.",
"headers": {
"Retry-After": {
"description": "Seconds to wait before asking again.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/genes/{gene}.json": {
"get": {
"operationId": "getGene",
"summary": "A gene, its reports, traits and variants",
"parameters": [
{
"name": "gene",
"in": "path",
"required": true,
"description": "The HGNC symbol, lower-cased.",
"schema": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
}
],
"responses": {
"200": {
"description": "A gene, its reports, traits and variants",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Gene"
}
}
}
},
"301": {
"description": "A capitalised or former slug: `Location` is the current `.json` URL."
},
"404": {
"description": "No such page.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "The genome data is unavailable for now.",
"headers": {
"Retry-After": {
"description": "Seconds to wait before asking again.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/genes/{gene}/variants/{variant}.json": {
"get": {
"operationId": "getVariant",
"summary": "A variant, its classifications and the reports that read it",
"parameters": [
{
"name": "gene",
"in": "path",
"required": true,
"description": "The gene's HGNC symbol, lower-cased.",
"schema": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
},
{
"name": "variant",
"in": "path",
"required": true,
"description": "The variant's slug, as its gene's `variants.items` list it.",
"schema": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
}
],
"responses": {
"200": {
"description": "A variant, its classifications and the reports that read it",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Variant"
}
}
}
},
"301": {
"description": "A capitalised or former slug: `Location` is the current `.json` URL."
},
"404": {
"description": "No such page.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "The genome data is unavailable for now.",
"headers": {
"Retry-After": {
"description": "Seconds to wait before asking again.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/traits/{trait}.json": {
"get": {
"operationId": "getTrait",
"summary": "An HPO trait and the genes linked to it",
"parameters": [
{
"name": "trait",
"in": "path",
"required": true,
"description": "The trait's slug.",
"schema": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
}
],
"responses": {
"200": {
"description": "An HPO trait and the genes linked to it",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Trait"
}
}
}
},
"301": {
"description": "A capitalised or former slug: `Location` is the current `.json` URL."
},
"404": {
"description": "No such page.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "The genome data is unavailable for now.",
"headers": {
"Retry-After": {
"description": "Seconds to wait before asking again.",
"schema": {
"type": "integer"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Error": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string"
}
}
},
"SearchHit": {
"type": "object",
"required": [
"url",
"json"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"json": {
"type": "string",
"format": "uri",
"description": "The hit's page as JSON."
}
}
},
"SearchResults": {
"type": "object",
"required": [
"query",
"url",
"best",
"genes",
"variants",
"region"
],
"properties": {
"query": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"best": {
"description": "The one page the query names outright, if any.",
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"gene",
"variant"
]
}
}
}
]
},
"genes": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchHit"
}
},
"more": {
"type": "boolean"
}
}
},
"variants": {
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchHit"
}
}
}
},
"region": {
"description": "The genes around a position, when the query is one.",
"type": [
"object",
"null"
]
}
}
},
"Gene": {
"type": "object",
"required": [
"url",
"gene",
"variants"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"gene": {
"type": "object",
"description": "HGNC's record for the gene, with the reports, medicines and traits naming it, each with its page's `url`."
},
"variants": {
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"url": {
"type": [
"string",
"null"
],
"format": "uri"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
}
}
}
}
}
}
}
},
"Variant": {
"type": "object",
"required": [
"url",
"gene",
"variant",
"reports"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"gene": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
}
}
},
"variant": {
"type": "object",
"description": "ClinVar's record for the variant: names, identifiers, locations, consequence and classifications."
},
"reports": {
"type": "array",
"items": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
}
}
}
}
}
},
"Trait": {
"type": "object",
"required": [
"url",
"trait"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"trait": {
"type": "object",
"description": "HPO's term, its broader and narrower terms and the genes linked to it, each with its page's `url`."
}
}
}
}
}
}