{"openapi":"3.1.0","info":{"title":"Sniff API","summary":"Agent-callable canine genomics over the open Sniff Atlas.","description":"Open, agent-callable canine genomics over the **Sniff Atlas**: breed-stratified allele frequencies for 9,667,790 variants across 188 dog breeds (CanFam4), calibrated ESM2 pathogenicity (AUC 0.935 vs OMIA), Pangolin splice, Zoonomia phyloP, and a variant/gene/breed/disease knowledge graph. No API key.\n\n**Identifiers:** positions are CanFam4 `chrom:pos` (e.g. `5:56189113`).\n**Start with** `/v1/variant/{pos}/context` — the joined query (frequency + pathogenicity + gene + cross-breed + provenance) in one call.\n**Rigor:** every response carries a `provenance` block with the dataset DOI, scope (MAF≥1%, imputed), and `predicted_disease_relevance: UNPROVEN`. Computational predictions, not clinical diagnoses.\n\nMCP server: `https://mcp.sniff.world/mcp/` · Dataset: https://doi.org/10.5281/zenodo.20566358 (CC-BY-4.0)","termsOfService":"https://sniff.world","contact":{"name":"Sniff","url":"https://sniff.world/","email":"matt@sniff.world"},"license":{"name":"Data CC-BY-4.0 / Code MIT","url":"https://creativecommons.org/licenses/by/4.0/"},"version":"0.1.0"},"servers":[{"url":"https://api.sniff.world","description":"Production"}],"paths":{"/":{"get":{"tags":["meta"],"summary":"Service orientation (what this is + where to go)","description":"Machine-readable orientation for agents arriving at the base URL.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"tags":["meta"],"summary":"Plaintext manual for LLMs/agents","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Liveness + release/counts","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/metadata":{"get":{"tags":["discovery"],"summary":"Atlas metadata, DOI, counts, scope banner","operationId":"metadata_v1_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/variant/{position}":{"get":{"tags":["variants"],"summary":"Single variant by CanFam4 position","description":"e.g. `/v1/variant/5:56189113` — ref/alt, global+popmax AF, consequence, gene, ESM2/Pangolin/phyloP.","operationId":"variant_lookup_v1_variant__position__get","parameters":[{"name":"position","in":"path","required":true,"schema":{"type":"string","title":"Position"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/variant/{position}/context":{"get":{"tags":["variants"],"summary":"THE joined query — everything about a variant in one call","description":"Frequency + pathogenicity + gene + cross-breed + provenance. Pass `breed` for that breed's AF + rank.","operationId":"ask_variant_context_v1_variant__position__context_get","parameters":[{"name":"position","in":"path","required":true,"schema":{"type":"string","title":"Position"}},{"name":"breed","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breed"}},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Top N"}},{"name":"cross_breed_full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Cross Breed Full"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breed/{breed}/variant/{position}":{"get":{"tags":["breeds"],"summary":"One breed's frequency for one variant","operationId":"breed_variant_v1_breed__breed__variant__position__get","parameters":[{"name":"breed","in":"path","required":true,"schema":{"type":"string","title":"Breed"}},{"name":"position","in":"path","required":true,"schema":{"type":"string","title":"Position"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/gene/{gene_symbol}":{"get":{"tags":["genes"],"summary":"Variants in a gene, ranked by impact","operationId":"gene_summary_v1_gene__gene_symbol__get","parameters":[{"name":"gene_symbol","in":"path","required":true,"schema":{"type":"string","title":"Gene Symbol"}},{"name":"af_min","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Af Min"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breed/{breed}":{"get":{"tags":["breeds"],"summary":"Breed profile (geometry, top variants, nearest breeds)","operationId":"breed_summary_v1_breed__breed__get","parameters":[{"name":"breed","in":"path","required":true,"schema":{"type":"string","title":"Breed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breeds":{"get":{"tags":["breeds"],"summary":"List all 188 breeds in the atlas","operationId":"breeds_v1_breeds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/breed/{breed}/nearest":{"get":{"tags":["breeds"],"summary":"Genetically nearest breeds (PCA distance)","operationId":"nearest_breeds_v1_breed__breed__nearest_get","parameters":[{"name":"breed","in":"path","required":true,"schema":{"type":"string","title":"Breed"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"K"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breed-similarity":{"get":{"tags":["breeds"],"summary":"Genetic distance between two breeds","operationId":"breed_similarity_v1_breed_similarity_get","parameters":[{"name":"breed_a","in":"query","required":true,"schema":{"type":"string","title":"Breed A"}},{"name":"breed_b","in":"query","required":true,"schema":{"type":"string","title":"Breed B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/semantic":{"get":{"tags":["discovery"],"summary":"Natural-language search over atlas entities","operationId":"semantic_search_v1_semantic_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"e.g. \"ancient arctic sled dogs\"","title":"Q"},"description":"e.g. \"ancient arctic sled dogs\""},{"name":"top_k","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Top K"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/genes":{"get":{"tags":["genes"],"summary":"Top genes by variant count","operationId":"genes_v1_genes_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search":{"get":{"tags":["discovery"],"summary":"Filtered discovery across all 9.67M variants","operationId":"variant_search_v1_search_get","parameters":[{"name":"esm_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Esm Max"}},{"name":"phylop_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Phylop Min"}},{"name":"popmax_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Popmax Min"}},{"name":"gene_in","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Gene In"}},{"name":"consequence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consequence"}},{"name":"impact","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Impact"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/disease/{disease}":{"get":{"tags":["diseases"],"summary":"Disease → genes/variants/breeds","operationId":"disease_links_v1_disease__disease__get","parameters":[{"name":"disease","in":"path","required":true,"schema":{"type":"string","title":"Disease"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"variants","description":"Single-variant lookup and the joined context query."},{"name":"breeds","description":"Breed profiles, genetic geometry, nearest breeds."},{"name":"genes","description":"Variants within a gene."},{"name":"discovery","description":"Filtered search, semantic search, metadata."},{"name":"diseases","description":"Disease → gene/variant/breed links (knowledge graph)."},{"name":"meta","description":"Service orientation, health, agent manual."}]}