🇨🇭 Switzerland — Zefix — Zentraler Firmenindex / Federal Registry of Commerce (Bundesamt für Justiz)
Access Switzerland's official company register in real time via the OpenRegistry MCP endpoint. Unified schema, source-linked, live passthrough (no caching).
Data license: OGD Open use — must provide source (https://opendata.swiss/en/terms-of-use#terms_by)
Real-time: yes — every call hits upstream
Caching notes: Search + profile caches: 10 seconds (de-duplicates rapid repeated calls within a single AI turn). Pass fresh=true to bypass.
Switzerland — the official government federal commercial register. company_id is the Swiss UID 'CHE-NNN.NNN.NNN'; the internal register ID and legacy CH-ID format are also accepted. Officers and limited-liability-company shareholders are publication deltas, not snapshots.
Company ID format
Swiss UID: CHE-NNN.NNN.NNN, e.g. 'CHE-105.962.553' (Nestlé S.A.). Punctuation is optional; unpunctuated CHENNNNNNNNN is accepted. Numeric-only EHRA-ID and CH-ID (legacy CHNNN...) are also accepted.
id_formatinfo — company_id is the Swiss UID 'CHE-NNN.NNN.NNN' (punctuation optional; unpunctuated form works). The numeric internal register ID and the legacy 'CHNNN...' format are also accepted.
searchinfo — search_companies is strict prefix match with a minimum of 3 characters. The adapter auto-retries with wildcard patterns (trailing '*', last-char '*', vowel-replaced '*') to rescue accent/casing variants like 'Nestle' vs 'Nestlé'. A UID / register-ID query short-circuits to a single-row identifier lookup.
officerswarning — get_officers returns an array of official gazette publications, newest-first. Each entry is a DELTA (e.g. 'X appointed', 'Y resigned'), NOT a snapshot. To reconstruct the current board the client must replay from the oldest entry (usually a first-entry publication carrying the founding roster) forward through every organ-change mutation. Pure address/name/purpose/capital/auditor-only mutations are filtered out. The raw DE/FR/IT legal prose sits in jurisdiction_data.message — the client parses names, roles, and signature authorities.
officerswarning — The publication window is rolling (typically ~2016 onwards). Older appointments that have not been re-emitted in a later publication will not appear. For the authoritative current roster, fetch the cantonal register excerpt linked as source_url / jurisdiction_data.cantonalExcerptWeb.
shareholderswarning — Shareholder disclosure is legal-form-conditional. Limited-liability-company (GmbH / Sàrl / Sagl) quota-holders are publicly disclosed — the response returns gazette publications naming quota-holders and their stakes. Each entry is again a DELTA; replay oldest-first to reconstruct the quota register.
shareholdersblocker — Joint-stock-company (AG / SA) shareholders are NEVER publicly disclosed — the share register is held privately by the board. get_shareholders returns shareholders_publicly_disclosed=false with an empty list for these entities. Same empty result for cooperatives and legal forms without a shareholder concept.
statusinfo — Native status values are ACTIVE, BEING_CANCELLED (in liquidation → inactive), CANCELLED (deleted from commercial register → dissolved).
filingsinfo — list_filings returns 501. Gazette publications are already embedded in the company profile under jurisdiction_data.sogcPub. Full cantonal commercial-register excerpts are linked via jurisdiction_data.cantonalExcerptWeb.
documentsblocker — get_document_metadata and fetch_document return 501. The public API does not expose document bodies.
pscblocker — get_persons_with_significant_control returns 501. Switzerland operates no public beneficial-ownership register.
chargesblocker — get_charges returns 501. Pledges and charges are not exposed by the public API.
officersblocker — search_officers and get_officer_appointments return 501. The register has no cross-entity officer index.
Available jurisdiction_data fields
Every tool response carries a jurisdiction_data object with the raw upstream fields (names unchanged). The full field set per record type: