MCP server for Swiss intellectual property data – trademarks, patents, SPC/ESZ via the IGE/IPI Swissreg API
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http · sse
verified
reported
listed in the official MCP registry counts 11 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
swiss_ip_get_patent
-
swiss_ip_get_quota
-
swiss_ip_get_trademark
-
swiss_ip_search_patent_publications
-
swiss_ip_search_patents
-
swiss_ip_search_patents_by_applicant
-
swiss_ip_search_recent_filings
-
swiss_ip_search_spc
-
swiss_ip_search_trademarks
-
swiss_ip_search_trademarks_by_class
-
swiss_ip_search_trademarks_by_owner
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit d875e17 · analyzer v32 · 1w ago
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) malkreide-swiss-ip-mcp-d875e17/tests/test_server.py :992
"http://169.254.169.254/latest/meta-data/",
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 14
filesystem 8
- fs malkreide-swiss-ip-mcp-d875e17/audits/gen_findings.py :14
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :59
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/update_tool_manifest.py :14
import pathlib - fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_adressen.py :15
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_classify_live_run.py :21
from pathlib import Path - fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_server.py :865
import pathlib # noqa: E402
network 3
- net (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :61
import httpx - net malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :23
from urllib.parse import urlparse - net (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_server.py :153
import httpx
secrets 2
- secrets (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :202
if not os.environ.get("IGE_PASSWORD"): - secrets malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :138
password = os.getenv("IGE_PASSWORD", "")
tool registrations 11
- swiss_ip_search_trademarks malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :704
- swiss_ip_search_trademarks_by_owner malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :741
- swiss_ip_get_trademark malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :781
- swiss_ip_search_trademarks_by_class malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :822
- swiss_ip_search_patents malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :873
- swiss_ip_get_patent malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :910
- swiss_ip_search_patents_by_applicant malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :950
- swiss_ip_search_patent_publications malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :988
- swiss_ip_search_spc malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1031
- swiss_ip_search_recent_filings malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1071
- swiss_ip_get_quota malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1123
declared dependencies 9
- fastmcp@>=2.0.0
- s@decision.
- opentelemetry-sdk@>=1.20.0
- opentelemetry-exporter-otlp-proto-http@>=1.20.0
- opentelemetry-instrumentation-httpx@>=0.40b0
- ruff@>=0.4.0
- pytest@>=8.0.0
- pytest-asyncio@>=0.23.0
- respx@>=0.21.0