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.0.tar.gz (20.6 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.0-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sniff_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 20.6 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.0.tar.gz
Algorithm Hash digest
SHA256 185a9524c33197a9f12403920cb7338d58de1f80c62ddf72bea607351bd586d4
MD5 0c2e74dde74175233ccadb14af929cfd
BLAKE2b-256 3b5e3c9ad9ee777a9670f66a25c1286a71cf7ac32bf7c30711b3111ed96a8430

See more details on using hashes here.

Provenance

The following attestation bundles were made for sniff_mcp-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: sniff_mcp-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 052bb44011195f48d2ab7cb64292a2ea6b1f2bad8725d493b32557f3c814613e
MD5 6e1726e6ea87c4a7f2f7f4d4ba5a3daa
BLAKE2b-256 380d054bb02e654da6742170a7c059936ca8343218f2cc2f589307db85c83693

See more details on using hashes here.

Provenance

The following attestation bundles were made for sniff_mcp-0.1.0-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