openswissdataBLOCK
Swiss federal reference data for AI agents: customs tariff (TARES), FINMA register and warnings list, NOGA/NACE/ISIC crosswalks. Free MCP server, no key. Signed dataset files.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Swiss federal reference data for AI agents and developers: the Swiss customs tariff (TARES, 8-digit tariff numbers with MFN duty and preferential regimes), the FINMA register of supervised institutions and the FINMA warnings list, and NOGA / NACE / ISIC activity-code correspondences.
- Free MCP endpoint, no key or sign-up:
https://mcp.openswissdata.com/jsonrpc, four tools (tariff_lookup,kyc_check,company_check,cross_walk), 100 calls per hour per IP address, plus a free trial of the three search tools (tariff_semantic_search,classify_text,finma_search): 20 calls per day per IP address in total. Claude Code:claude mcp add --transport http openswissdata https://mcp.openswissdata.com/jsonrpc. Local-process clients:npx -y @openswissdata/mcp. - Full datasets as signed files: openswissdata.com. Summary for AI agents: llms.txt.
- Read-only REST API, no key:
/api/v1/company/:uid,/api/v1/localities,/api/v1/communes/:bfs_idand/api/v1/sources, limited per network address; see the REST API section of llms.txt and openapi.json. - Unofficial copies: binding decisions belong to the official sources (xtares.admin.ch, finma.ch, the Swiss Federal Statistical Office).
Tools
7b59339b385bOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcp --env OPENSWISSDATA_API_KEY=${OPENSWISSDATA_API_KEY} -- npx -y @openswissdata/[email protected]Exposed tools (4)
4 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
Nom | read | Description |
entity_history | read | 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. |
tariff_changelog | read | Returns the historical changelog of MFN duty rates (and adjacent fields) for a Swiss customs tariff (HS8) code, across every dated release we have archived (history deepens over time from launch). Irreplicable by scraping — xtares.admin.ch only serves the current version. Requires |
tariff_lookup | read | Lookup HS8 |
Trust audit
BLOCKgrade F · trust 60/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (4 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
const SECRETS = ['.env', '.env.*', '.mcpregistry_*', '**/veille-telegram/creds.env', '**/.ibf-*', '**/.ssh/id_*',
const key = secret && secret.length >= 16 ? secret : 'osd-local-visitors-development-only';
const secret = 'cle-fictive-visiteurs-uniquement';
const SECRET='secret-fictif-frontieres',ACCESS='A'.repeat(43),REFRESH='R'.repeat(43),ADMIN='M'.repeat(43);
const PASSWORD = "mot-de-passe-fictif-osd";
const CLIENT='osd_cycle_fictif',SECRET='secret-fictif-cycle-oauth',ACCESS='A'.repeat(43),REFRESH='R'.repeat(43);
noga-2008-sample.xlsx
noga-2025-sample.xlsx
finma-ao-sample.xlsx
finma-asset-manager-individual-sample.xlsx
finma-banks-sample.xlsx
.gitignore.local
.railwayignore
import type { ClassificationLink, ClassificationSource } from "../../src/lib/classification-links.js";import { createEmbeddingExtractor } from "../../src/lib/embedding-model.js";import { createEmbeddingExtractor, EMBEDDING_REVISION } from "../../src/lib/embedding-model.js";import { utils, writeFile } from "../../shared/xlsx.js";import type { ClassificationLink } from "../../src/lib/classification-links.js";it.each(['http://localhost:8765/callback','http://127.0.0.1:8765/callback'])('autorise une boucle locale enregistrée exactement : %s',async uri=>{expect(isAllowedRecipient("x@аdmin.ch")).toBe(false); // а U+0430, pas 'a' U+0061"" +
const withBom = hashCsvShape(Buffer.from("a;b;c\r\n1;2;3", "utf-8"));return splitHeaderColumns(raw.replace(/^/, "").trim());
const bom = opts.bom === false ? "" : "";
const BOM = "";
Gates applied: no_behavioural_pass.
7b59339b385bfull audit observations/trust-audit/mcp-server/cammac-creator__openswissdata.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 7b59339b385b | BLOCK | F | 60 | first audit |
Questions
What is the openswissdata MCP server?
Swiss federal reference data for AI agents: customs tariff (TARES), FINMA register and warnings list, NOGA/NACE/ISIC crosswalks. Free MCP server, no key. Signed dataset files.
What tools does openswissdata expose?
4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is openswissdata safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (60/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.
What credentials does openswissdata need?
It reads ADMIN_SECRET, MCP_BEARER_TOKEN, OAUTH_SIGNING_SECRET, OPENSWISSDATA_API_KEY, OSD_BACKUP_KEY, OSD_SIGNING_KEY_ED25519, OSD_VEILLE_TELEGRAM_TOKEN, PLAUSIBLE_API_KEY, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, RESEND_API_KEY and SESSION_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does openswissdata run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as web at 0.0.1.
How current is this page?
The grade is for one exact copy of the source (7b59339b385b), read on 2026-10-11. The repository is watched and re-audited when it changes.