sniff-mcp — agent-callable canine genomics
The reference layer for dog DNA. A live, open API + MCP server over the Sniff Atlas — breed-stratified allele frequencies for 9,667,790 variants genome-wide across 188 dog breeds (CanFam4), with SnpEff annotation, Pangolin splice values, Zoonomia phyloP conservation, and a variant ⇄ gene ⇄ breed ⇄ disease knowledge graph. It assigns no pathogenicity to any variant. Every response carries its own citation + provenance.
Building anything with dogs, breeds, or canine health? This is the data layer. No key, no signup — point your agent or app at it and go.
- 🔌 MCP endpoint:
https://mcp.sniff.world/mcp/(Streamable HTTP, 15 tools) — includingask, a grounded canine-genetics Q&A that answers only from cited data or honestly abstains (no hallucinated dog-health advice), anddisease_bridge(inherited-disease atoms with ACMG-style pathogenicity grades + the dog⇄human homolog) - 🌐 REST API:
https://api.sniff.world/(OpenAPI docs ·llms.txt) - 📚 Dataset: 10.5281/zenodo.20566358 (CC-BY-4.0)
Add it to your coding agent (copy-paste)
The hosted server is open and needs no auth. Pick your tool:
Claude Code
claude mcp add --transport http sniff https://mcp.sniff.world/mcp/
Cursor / Windsurf / VS Code — add to your MCP config (.cursor/mcp.json, mcp.json, etc.):
{
"mcpServers": {
"sniff": { "url": "https://mcp.sniff.world/mcp/" }
}
}
Claude Desktop or any stdio-only client (uses the hosted server via a local bridge):
{
"mcpServers": {
"sniff": { "command": "npx", "args": ["-y", "sniff-mcp"] }
}
}
That's it. Ask your agent: "What's the frequency of CPT2 5:56189113 across breeds?" or "Find HIGH-impact variants in DLA genes."
Use the REST API (for web apps)
No SDK needed — it's plain HTTP/JSON.
curl https://api.sniff.world/v1/variant/5:56189113
{
"variant_id": "5:56189113", "ref": "A", "alt": "G",
"global_af": 0.0185, "popmax_af": 0.591, "popmax_breed": "akita",
"consequence": "missense_variant", "impact": "MODERATE",
"gene": "CPT2", "phylop_241way": 6.36,
"provenance": { "dataset_doi": "10.5281/zenodo.20566358",
"predicted_disease_relevance": "UNPROVEN", "...": "..." }
}
// JavaScript / TypeScript
const r = await fetch("https://api.sniff.world/v1/variant/5:56189113/context?breed=akita");
const ctx = await r.json(); // frequency + annotations + gene + cross-breed + provenance
| Endpoint | What it returns |
|---|---|
GET /v1/variant/{pos} |
single variant: AF, popmax, consequence, gene, Pangolin, phyloP |
GET /v1/variant/{pos}/context |
the joined query — everything about a variant in one call |
GET /v1/breed/{breed} |
breed profile (top variants, geometry, nearest breeds) |
GET /v1/breed/{breed}/nearest |
genetically nearest breeds (PCA distance) |
GET /v1/gene/{symbol} |
variants in a gene, ranked by impact |
GET /v1/semantic?q= |
natural-language search ("ancient arctic sled dogs") |
GET /v1/search |
filtered discovery across all 9.67M variants |
GET /v1/metadata |
release, DOI, counts, scope banner |
Positions are CanFam4 chrom:pos (e.g. 5:56189113). Full schema: https://api.sniff.world/openapi.json.
Self-host (optional)
uvx sniff-mcp # run the MCP server locally (needs the release data on disk)
pip install sniff-mcp # or install into your env
See ARCHITECTURE.md and Dockerfile. The hosted endpoint is the easy path; self-hosting is for air-gapped or high-volume use.
What it is (and isn't)
Built from CanVAS (14,478 dogs, Beagle-imputed, MAF≥1%) plus projected community cohorts. Annotations are not classifications: every response is flagged predicted_disease_relevance: "UNPROVEN", and Pangolin values are a third-party model's output, not validated in dogs. This is a research and discovery resource, not a clinical diagnostic. The scope (common + low-frequency variants, MAF≥1%) and the UNPROVEN caveat ride in every response's provenance block, so anything an agent quotes stays honest and self-citing.
Citation
Gehring, M. (2026). Sniff Atlas. Zenodo. https://doi.org/10.5281/zenodo.20566358 (CC-BY-4.0)
@dataset{sniff_atlas_2026,
author = {Gehring, Matt},
title = {Sniff Atlas},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.20566358},
url = {https://sniff.world}
}
Code MIT · Data CC-BY-4.0 · world.sniff/sniff-mcp · https://sniff.world
Metadata
Release files for sniff-mcp 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| sniff_mcp-0.1.4.tar.gz | 35.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sniff_mcp-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 73.3 kB
Release files / sniff_mcp-0.1.4.tar.gz
| Download URL | sniff_mcp-0.1.4.tar.gz |
|---|---|
| Size | 35.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ceeb40d28b064c8d35403ab676dedf5396833e87789174aeaa6532291ee3cebf
|
|
BLAKE2b-256 checksum How to use checksums |
319c66e245b6bd3d8df8b4183b03c0267a389077c4ed77f7dfef940dbfc88805
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logRelease files / sniff_mcp-0.1.4-py3-none-any.whl
| Download URL | sniff_mcp-0.1.4-py3-none-any.whl |
|---|---|
| Size | 37.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d3290b02a524581391c14664d048ea3f6f84f0e03859cd24997dd3bcf4f35c4
|
|
BLAKE2b-256 checksum How to use checksums |
3a3b1c40d5e90e9ec8aac778910dcade5f1b5e2dc574bc8c1184224668b97a13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logSecurity for sniff-mcp 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for sniff_mcp-0.1.4.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.