MCP server for Swiss commercial register (Zefix/Handelsregister) — company verification, UID lookup & due diligence for Swiss public administration
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http · sse
verified
reported
listed in the official MCP registry counts 7 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
gazette_get_publication
-
gazette_source_status
-
zefix_get_company
-
zefix_get_company_by_uid
-
zefix_list_legal_forms
-
zefix_list_municipalities
-
zefix_search_companies
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 766e95c · analyzer v32 · 1w ago
skills & prompt files 1
- agent-rules malkreide-register-mcp-766e95c/CLAUDE.md
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) malkreide-register-mcp-766e95c/tests/test_egress.py :32
await client.get("http://169.254.169.254/latest/meta-data/")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 16
filesystem 7
- fs (weak) malkreide-register-mcp-766e95c/docs/demo/demo.py :20
from pathlib import Path - fs (weak) malkreide-register-mcp-766e95c/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-register-mcp-766e95c/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-register-mcp-766e95c/scripts/record_fixtures.py :51
from pathlib import Path - fs malkreide-register-mcp-766e95c/src/register_mcp/server.py :11
Both sources are open (no authentication). Zefix tells you whether a company - fs (weak) malkreide-register-mcp-766e95c/tests/fixture_data.py :24
from pathlib import Path - fs (weak) malkreide-register-mcp-766e95c/tests/test_classify_live_run.py :21
from pathlib import Path
network 8
- net (weak) malkreide-register-mcp-766e95c/docs/demo/demo.py :29
import httpx - net (weak) malkreide-register-mcp-766e95c/scripts/record_fixtures.py :54
import httpx - net malkreide-register-mcp-766e95c/src/register_mcp/server.py :53
import httpx - net (weak) malkreide-register-mcp-766e95c/tests/test_egress.py :5
import httpx - net (weak) malkreide-register-mcp-766e95c/tests/test_gazette.py :8
import httpx - net (weak) malkreide-register-mcp-766e95c/tests/test_retry_policy.py :8
import httpx - net (weak) malkreide-register-mcp-766e95c/tests/test_security.py :7
import httpx - net (weak) malkreide-register-mcp-766e95c/tests/test_server.py :19
import httpx
secrets 1
- secrets malkreide-register-mcp-766e95c/src/register_mcp/server.py :2036
api_key = os.environ.get("MCP_API_KEY", "").strip()
tool registrations 7
- zefix_search_companies malkreide-register-mcp-766e95c/src/register_mcp/server.py :733
- zefix_get_company malkreide-register-mcp-766e95c/src/register_mcp/server.py :841
- zefix_get_company_by_uid malkreide-register-mcp-766e95c/src/register_mcp/server.py :925
- zefix_list_legal_forms malkreide-register-mcp-766e95c/src/register_mcp/server.py :1164
- zefix_list_municipalities malkreide-register-mcp-766e95c/src/register_mcp/server.py :1233
- gazette_get_publication malkreide-register-mcp-766e95c/src/register_mcp/server.py :1845
- gazette_source_status malkreide-register-mcp-766e95c/src/register_mcp/server.py :1967
declared dependencies 12
- mcp@>=2.0.0,<3
- httpx@>=0.27.0
- pydantic@>=2.0.0
- pytest@>=9.1.1
- pytest-asyncio@>=1.4.0
- pytest-cov@>=7.1.0
- respx@>=0.23.1
- ruff@>=0.15.22,<0.17
- opentelemetry-api@>=1.27.0
- opentelemetry-sdk@>=1.44.0
- opentelemetry-exporter-otlp-proto-http@>=1.44.0
- opentelemetry-instrumentation-httpx@>=0.48b0