npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

swissyphus

v1.0.3

Published

Swissyphus, the Swiss public-data rollup for AI agents: 66 public sources in one MCP server and REST API. 151 tools, zero API keys, and every answer cited down to the exact upstream request.

Readme


Install

Claude Code

claude mcp add --scope user swissyphus -- npx -y swissyphus

Or as a plugin, from this repository's marketplace (plugin/):

/plugin install swissyphus --marketplace cwellbournewood/swissyphus

Claude Desktop, Cursor, VS Code, Windsurf and any MCP client

{
  "mcpServers": {
    "swissyphus": { "command": "npx", "args": ["-y", "swissyphus"] }
  }
}

One click for Claude Desktop: download swissyphus.mcpb and open it.

Docker

docker run -i --rm ghcr.io/cwellbournewood/swissyphus --stdio

Node.js 20+. No signup, no keys. Presets, optional keys and troubleshooting: docs/INSTALL.md.

Ask anything Swiss

Next train from Bern to Lugano, and is there snow in Zermatt?

Who is Nestlé in the commercial register, and what did it publish in the SOGC this year?

Screen "Rotenberg" against the Swiss sanctions list.

What zoning and building restrictions apply to the parcel at this address?

Is SR 235.1 still in force, and what changed recently?

How did canton Ticino vote on June 14?

Which school-building tenders were awarded in Zürich this month, and to whom?

How is the flu developing in canton Bern, and what do the wastewater loads say?

Find data on road noise in Aargau.

Three ready-made MCP prompts: company_due_diligence, address_full_report, mountain_conditions.

Every answer is cited

Every one of the 151 tools returns the same envelope. A real response:

{
  "data": { "currency": "EUR", "rate_chf": 0.92841, "month": "2026-10" },
  "source": {
    "name": "SNB Data Portal: CHF exchange rates (monthly)",
    "operator": "Swiss National Bank",
    "url": "https://data.snb.ch",
    "licence": "SNB data portal terms, free use with attribution",
    "attribution": "© Swiss National Bank, data.snb.ch"
  },
  "retrieved_at": "2026-11-08T18:17:50.788Z",
  "data_as_of": "2026-10",
  "cache_status": "miss",
  "provenance": {
    "upstream": [
      { "url": "https://data.snb.ch/api/cube/devkum/data/json/en?fromDate=2026-08&toDate=2026-11",
        "cache_status": "miss", "retrieved_at": "2026-11-08T18:17:50.788Z" }
    ]
  }
}
  • source: who publishes the data, under which licence, and the attribution to show.
  • data_as_of: the publisher's own timestamp. null when it publishes none, never the fetch time in disguise. retrieved_at is when we fetched it.
  • cache_status: fresh, cached, or stale with its age when a source is down.
  • provenance.upstream: the exact requests behind this answer, so anyone can check it. Credentials are always redacted.

The licence register for all 66 sources is one call away: list_sources. How it works: docs/ARCHITECTURE.md.

Why Swissyphus

  • Answers you can cite and defend. Provenance on every answer, a licence register, and a hosted preset that leaves out data whose terms forbid redistribution.
  • Catalogues, not just endpoints. find_data searches opendata.swiss, ~900 federal map layers, every BFS table, the LINDAS cubes, cantonal and SBB portals, the SNB, I14Y and Wikidata at once, and returns the exact call that fetches the data. Agents can then filter and aggregate inside the datasets: 15'000+ of them.
  • Due diligence built in. Sanctions screening (SECO), UID register and VAT validation, the commercial register and SOGC, court decisions, public tenders and federal law, in one server.
  • Small context when you want it. --preset discovery keeps 7 tools in context and still reaches all 151.
  • Always running. Caching, circuit breakers that back off on the first rate limit, the last good answer when a source is down (clearly marked), and a nightly canary against every live source.

What's inside

| Area | Modules | Sources include | |---|---|---| | Mobility | transport · mobility · trails · postcode | Swiss timetable, opentransportdata.swiss, sharedmobility.ch, ASTRA, Swiss Post | | Weather & environment | weather · hydrology · avalanche · snow · earthquakes · airquality · glaciers · alerts | MeteoSwiss, FOEN, SLF, SED/ETH, NABEL, GLAMOS, Alertswiss | | Places & property | geo · geodata · coords · buildings · cadastre · energy · waste | swisstopo, geo.admin.ch (~900 layers + STAC), GWR, ÖREB cadastres, ElCom, SFOE, ERZ | | Business & compliance | companies · uid · sanctions · procurement · courts · fx | ZEFIX, SOGC, UID register, SECO, simap.ch, entscheidsuche.ch, SNB | | Law & politics | law · parliament · voting · localpolitics | Fedlex, Curia Vista, BFS vote results, OpenParlData.ch | | Statistics & catalogues | statistics · bfs · cubes · portals · i14y · lindas · wikidata | opendata.swiss, EnviDat, BFS STAT-TAB, LINDAS, Opendatasoft portals, I14Y, Wikidata | | Society | health · holidays · news · libraries | FOPH, OpenHolidays, SRF, swisscovery | | Discovery | meta | find_data, find_tools, describe_tool, call_tool, list_sources, check_source_health |

Every tool, with its sources and licences: docs/TOOLS.md. Topic presets (outdoor, business, legal, compliance, property, …): docs/INSTALL.md.

Self-host the REST API

docker run -p 8000:8000 ghcr.io/cwellbournewood/swissyphus
curl "localhost:8000/v1/tools/get_connections?from=Bern&to=Lugano"

The same tools over REST, an OpenAPI 3.1 spec and a remote MCP endpoint (POST /mcp). No accounts or API keys; a hosted server applies a per-IP rate limit. Production setup with automatic TLS in deploy/. Reference: docs/HOSTING.md.

Documentation

Versioning and stability

Swissyphus follows semantic versioning. The public interface (tool names and parameters, the response envelope, CLI flags, presets, environment variables and REST paths) changes incompatibly only in a new major version. Fields and optional parameters may be added in minor versions. Upstream data and availability are outside the promise: if a source shuts down for good, its tools keep their names and return an unavailable error that says why until the next major version.

Licence and data

Swissyphus is MIT-licensed. The data keeps its own licences: every response states which one applies and how to credit it. Most sources are Swiss open government data (free use with attribution); some are non-commercial or need permission for commercial use, and say so.

Swissyphus is an independent open-source project. It is not operated or endorsed by the Swiss Confederation, any canton or any data provider. Please respect the publishers' fair-use limits: they are public infrastructure.