# OpenSwissData

> Swiss customs tariff (TARES), FINMA register, NOGA/NACE/ISIC codes. 3 free tools + search trial.

- name: io.github.cammac-creator/openswissdata
- version: 0.3.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 74/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.cammac-creator%2Fopenswissdata
- tools: https://api.protogrid.dev/v1/servers/io.github.cammac-creator%2Fopenswissdata/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "openswissdata": {
      "type": "http",
      "url": "https://mcp.openswissdata.com/jsonrpc"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-21d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 74/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,899 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 17 tool changes in 30 days
- fail `stability.rug_pull`: 4 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: 67 (weight 15)

- pass `deps.known_vulns`: no known advisory in 98 resolved packages
- fail `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
- pass `deps.resolvable`: @openswissdata/mcp@0.1.2 resolved: 98 packages

- tools: 7, about 1,899 tokens to load them all
- tool set hash: 80a598bd60ffd4ac596fca70bbee191c
- tools last changed: 2026-10-11T18:00:49.481Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.cammac-creator/openswissdata.svg)](https://protogrid.dev/servers/io.github.cammac-creator/openswissdata)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-11 `company_check` changed (description)
  - before: Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities and streets directories (swisstopo, when published). No score. Commercial register status (active or deleted), FOSC publications, SECO sanctions and officers are not covered.
  - after: Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities and streets directories (swisstopo, when published). No score. When available, the commercial register status (active, in liquidation or deleted, with the deletion date) is read from Zefix (OFRC). FOSC publications, SECO sanctions and officers are not covered.
- 2026-10-07 `company_check` changed (description)
  - before: Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities directory (swisstopo, when published). No score. Commercial register status (active or deleted), FOSC publications, SECO sanctions and officers are not covered.
  - after: Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities and streets directories (swisstopo, when published). No score. Commercial register status (active or deleted), FOSC publications, SECO sanctions and officers are not covered.
- 2026-10-06 `company_check` added
  - Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities directory (swisstopo, when published). No score. Commercial register status (active or deleted), FOSC publications, SECO sanctions and officers are not covered.
- 2026-10-06 `kyc_check` changed (description)
  - before: Search the FINMA register of supervised institutions and the FINMA warnings list by name (case- and accent-insensitive). Returns the closest top_k authorised entities and warning entries (exact name, then whole word, then substring; all words in any order as a fallback) with the total number of matches. Use it for basic counterparty screening; no result is not a compliance certificate.
  - after: Search the FINMA register of supervised institutions and the FINMA warnings list by name (case- and accent-insensitive). Returns the closest top_k authorised entities and warning entries (exact name, then whole word, then substring; all words in any order as a fallback) with the total number of matches. Only an identical name is reported as a FINMA warning-list match; a merely similar name is listed separately, to verify, and is never called a match. Use it for basic counterparty screening; no result is not a compliance certificate.
- 2026-09-29 `finma_search` added
  - FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the official FINMA register before use. Search the FINMA register by entity name, tolerant of case, accents, legal forms (AG, SA, Sàrl, GmbH, Ltd), ae/oe/ue spellings and one or two typos per word. Results are ranked exact, word start, whole word, prefix, substring, all words in any order, then typo guesses, each labelled with match_type. Set include_warnings=true to also search the FINMA warnings list. Each answer states the FINMA data version.
- 2026-09-29 `classify_text` added
  - FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the NOGA publications of the Federal Statistical Office before use. Classify a business activity description (French, German, Italian or English) into the closest NOGA 2025 subclasses (6 digits) with their class (the NACE 2.1 class), official hierarchy and a similarity score, using a pinned multilingual mpnet model. A NOGA code as text lists its subclasses. Each answer states the index provenance and the classification reference version; combine with cross_walk for NACE, ISIC or NOGA 2008.
- 2026-09-29 `tariff_semantic_search` added
  - FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the official tariff at xtares.admin.ch before use. Find Swiss customs tariff (TARES) lines from a description of the goods in French, German, Italian or English, or from a tariff number. Each line is indexed with its official hierarchy (heading, intermediate texts, 8-digit line) in the four languages; ranking puts shared official words first and uses meaning (pinned multilingual mpnet model) as a tie-breaker and for synonyms. Returns the 8-digit code, its official path, a relative score, the TARES data version and the index provenance. Always inlines a non-official disclaimer.
- 2026-09-28 `finma_search` removed
  - Fuzzy search the FINMA registry by name (tolerates typos and legal-suffix variants like 'UBS Switzerland AG' vs 'UBS AG'). Returns top-K matches with confidence score, including LEI/UID where available. Set include_warnings=true to also surface entries from the FINMA warnings list.
- 2026-09-28 `tariff_semantic_search` removed
  - Semantic search across Swiss customs tariff (TARES) descriptions in French. Uses pre-computed Xenova/paraphrase-multilingual-mpnet-base-v2 embeddings (768d, FR) shipped with the TARES Pro bundle. Returns top-K HS8 codes by cosine similarity. Always inlines a non-official disclaimer.
- 2026-09-28 `entity_history` removed
  - Returns the timeline of changes for a FINMA-supervised entity (registration, authorisation type changes, status mutations, address moves, warning-list flag transitions). Keyed by Swiss UID (CHE-xxx.xxx.xxx). Irreplicable by scraping — finma.ch only publishes the current state.

Full history: https://api.protogrid.dev/v1/servers/io.github.cammac-creator%2Fopenswissdata/changes

## Dependencies

- npm @openswissdata/mcp@0.1.2: resolved, 97 dependencies, MCP SDK @modelcontextprotocol/sdk 1.30.1
  - GHSA-6qxp-vccf-f47h (high) in `` @modelcontextprotocol/sdk@1.30.1 ``, direct, fixed in `` 1.31.0 ``, advisory summary: "MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server" https://osv.dev/vulnerability/GHSA-6qxp-vccf-f47h

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://mcp.openswissdata.com/jsonrpc (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm @openswissdata/mcp@0.1.2 secrets: OPENSWISSDATA_API_KEY

## Tools (7)

- `classify_text`: FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the NOGA publications of the Federal Statistical Office before use. Classify a business activity description (French, German, Italian or English) into the closest NOGA 2025 subclasses (6 digits) with their class (the NACE 2.1 class), official hierarchy and a similarity score, using a pinned multilingual mpnet model. A NOGA code as text lists its subclasses. Each answer states the index provenance and the classification reference version; combine with cross_walk for NACE, ISIC or NOGA 2008.
- `company_check`: Look up a Swiss company by its UID (CHE-xxx.xxx.xxx): commercial register data (LINDAS), FINMA register entries and LEI records (GLEIF), each fact with its source and, when known, the date it was read, plus exact cross-checks between sources and checks of the registered address against the official localities and streets directories (swisstopo, when published). No score. When available, the commercial register status (active, in liquidation or deleted, with the deletion date) is read from Zefix (OFRC). FOSC publications, SECO sanctions and officers are not covered.
- `cross_walk`: Find correspondences between NOGA 2008, NOGA 2025, NACE 2.0, NACE 2.1 and ISIC 4 activity codes (Swiss, EU and UN classifications). Returns the exact or approximate relation, its sources and the documented path. Never chains two non-exact relations; a non-exact correspondence needs expert validation.
- `finma_search`: FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the official FINMA register before use. Search the FINMA register by entity name, tolerant of case, accents, legal forms (AG, SA, Sàrl, GmbH, Ltd), ae/oe/ue spellings and one or two typos per word. Results are ranked exact, word start, whole word, prefix, substring, all words in any order, then typo guesses, each labelled with match_type. Set include_warnings=true to also search the FINMA warnings list. Each answer states the FINMA data version.
- `kyc_check`: Search the FINMA register of supervised institutions and the FINMA warnings list by name (case- and accent-insensitive). Returns the closest top_k authorised entities and warning entries (exact name, then whole word, then substring; all words in any order as a fallback) with the total number of matches. Only an identical name is reported as a FINMA warning-list match; a merely similar name is listed separately, to verify, and is never called a match. Use it for basic counterparty screening; no result is not a compliance certificate.
- `tariff_lookup`: Look up the Swiss customs tariff (TARES). An 8-digit Swiss tariff number (dots allowed) returns the full line: designations in FR/DE/IT/EN, MFN duty, preferential regimes, restrictions and customs relief codes. A 2- to 7-digit HS prefix (for example the international HS6 code) lists the Swiss 8-digit lines under it. Every result carries an unofficial-copy notice that the agent must show to the end user.
- `tariff_semantic_search`: FREE TRIAL without a key: 20 calls per day per IP address in total for tariff_semantic_search, classify_text and finma_search. Each answer states the trial calls left; check every result on the official tariff at xtares.admin.ch before use. Find Swiss customs tariff (TARES) lines from a description of the goods in French, German, Italian or English, or from a tariff number. Each line is indexed with its official hierarchy (heading, intermediate texts, 8-digit line) in the four languages; ranking puts shared official words first and uses meaning (pinned multilingual mpnet model) as a tie-breaker and for synonyms. Returns the 8-digit code, its official path, a relative score, the TARES data version and the index provenance. Always inlines a non-official disclaimer.
