Skip to main content

Agent-callable canine genomics — open MCP server + REST API over the Sniff Atlas: breed-stratified allele frequencies for 9.67M variants across 188 dog breeds, calibrated AI pathogenicity, and a variant/gene/breed/disease knowledge graph.

Project description

sniff-mcp — agent-callable canine genomics

PyPI npm MCP Registry DOI Data: CC-BY-4.0

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 across 188 dog breeds (CanFam4), calibrated AI pathogenicity (ESM2, AUC 0.935 vs OMIA), Pangolin splice, Zoonomia phyloP conservation, and a variant ⇄ gene ⇄ breed ⇄ disease knowledge graph. 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.


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", "esm2_llr": -6.1, "deleteriousness_tier": "...",
  "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 + pathogenicity + gene + cross-breed + provenance
Endpoint What it returns
GET /v1/variant/{pos} single variant: AF, popmax, consequence, gene, ESM2/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. Pathogenicity is computational — every prediction is flagged predicted_disease_relevance: "UNPROVEN". 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sniff_mcp-0.1.2.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sniff_mcp-0.1.2-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file sniff_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: sniff_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sniff_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 72f0e831fde93906a5fc57188350e5af12d2663745b8613a82356d7e34865128
MD5 eac94ce7ea741f89e5fdd94c2c6469a7
BLAKE2b-256 e71fe82963462a80bab7efc58f167e595631a4ac2e33e038512f74b67301c0f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sniff_mcp-0.1.2.tar.gz:

Publisher: release.yml on Sniffscore/sniff-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sniff_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sniff_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sniff_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c338d14e84b72a642fddeb392cbdd401071c25dc8542df2fcc70620600977672
MD5 84c5ee6fa0fe1dfc3f8d23aedd82e44d
BLAKE2b-256 9cb3e4f645a15888444f421233b413b3609676a78010e22d8806eb1472d1d687

See more details on using hashes here.

Provenance

The following attestation bundles were made for sniff_mcp-0.1.2-py3-none-any.whl:

Publisher: release.yml on Sniffscore/sniff-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page