Skip to main content

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 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) — including ask, a grounded canine-genetics Q&A that answers only from cited data or honestly abstains (no hallucinated dog-health advice), and disease_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)

Source distribution for sniff-mcp 0.1.4
File Size Uploaded Provenance
sniff_mcp-0.1.4.tar.gz 35.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for sniff-mcp 0.1.4
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page