Server definition
- Hash
- sha256:76ecbc482d58d20829a48a94cce362e3ad759039f8621d07e9eec6f56d1ba1a6
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "DSGVO.pro MCP — German digital-law compliance platform.\n\nFREE TOOLS (no API key; anonymous callers are capped at 30 requests/minute per IP):\n• search-law — full-text search across all 26 German/EU statutes (DSGVO, KI-VO, BDSG, TDDDG, DDG, BFSG, UWG, BGB, PAngV, VSBG, UrhG, VerpackG, VerpackDG, ElektroG, JuSchG, GewO, MaBV, GEG, BRAO, FinVermV, HwO, IfSG, KosmetikVO, HWG, HOAI, MiLoG)\n• get-article — full text of a specific article/paragraph\n• list-laws — overview of all available laws\n\n🔑 GATED TOOLS (require API key):\n• check-compliance — starts a Playwright-driven scan of a real URL. Costs us money (browser + AI). Free tier: 3 scans/month.\n\nOnce a scan is started by an authenticated caller, get-scan-status and get-scan-result are open to anyone with the scanId — results are public per scan.\n\nHow to authenticate: get a key at https://dsgvo.pro/api-keys, then add to your MCP client config as HTTP header:\n \"headers\": { \"Authorization\": \"Bearer dsp_live_...\" }\n\nIf you call check-compliance without a key, the call comes back with isError:true and the same instructions in the text. No silent failures.",
"tools": [
{
"description": "🔑 Requires API key (Bearer header in MCP client config). Free tier: 3 scans/month — get a key at https://dsgvo.pro/api-keys. Start a compliance scan against up to 33 German digital law modules. Standard tier covers 20 modules across DSGVO, TDDDG, DDG, BFSG, UWG, BGB, PAngV including Schrems II hosting-location verification with SCC declaration audit, §312k BGB Kündigungsbutton, BFSG accessibility (active 28.06.2025). Pro/Agency tier (13 exclusive modules): §356a BGB Widerrufsbutton (active 19.06.2026 — currently the only EU compliance-scanner with this check), KI-VO transparency and data-processing requirements (Article 13/14 + Article 50 AI Act), advanced security audit (Art. 32 DSGVO — TLS protocol, mixed content, CMS-version CVE detection), tech-stack staleness (CMS/framework versions vs NVD CVE database), plus 8 industry-specific compliance modules — lawyer (BORA/BRAO), real-estate broker (§34c GewO + MaBV + §87 GEG energy-pass disclosure in listings), physician (BOÄ + HWG + Art. 9 GDPR sensitive-data), financial intermediary (§34d/f/h/i GewO + FinVermV), gastronomy (LMIV allergen labeling + PAngV + IfSG hygiene), cosmetics studio (KosmetikVO + HWG before/after imagery), construction (§34c GewO Bauträger-Erlaubnis + HwO + MiLoG/SOKA), hotel (BMG registration + PAngV tourist-tax inclusive pricing + GEG). Industry detection runs from page content — only triggers relevant checks. ⚠️ IMPORTANT: This tool returns only a scanId — NOT the results. The scan takes 60–120 seconds. After calling this, wait 60–90 seconds, then call get-scan-result with the scanId. Use get-scan-status to check progress without waiting for completion.",
"inputSchema": {
"properties": {
"url": {
"description": "The website URL to scan (e.g. https://example.com)",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check-compliance",
"outputSchema": {
"properties": {
"details": {
"type": "string"
},
"error": {
"description": "Set instead of scanId when the scan could not be started",
"type": "string"
},
"hint": {
"type": "string"
},
"message": {
"type": "string"
},
"nextStep": {
"type": "string"
},
"scanId": {
"description": "Pass this to get-scan-status / get-scan-result",
"type": "string"
},
"status": {
"description": "\"pending\" right after the scan is queued",
"type": "string"
},
"url": {
"description": "Normalized URL that is being scanned",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get the full German text of a specific article or paragraph from a law. Returns full text and metadata.",
"inputSchema": {
"properties": {
"article": {
"description": "The article or paragraph number. Letter suffixes are supported and required for norms like \"356a\" (§356a BGB Widerrufsbutton), \"312k\", \"312j\".",
"type": [
"string",
"number"
]
},
"law": {
"description": "The law identifier",
"enum": [
"dsgvo",
"ki-vo",
"bdsg",
"tdddg",
"ddg",
"bfsg",
"uwg",
"bgb",
"pangv",
"vsbg",
"urhg",
"verpackg",
"verpackdg",
"elektrog",
"juschg",
"gewo",
"mabv",
"geg",
"brao",
"finvermv",
"hwo",
"ifsg",
"kosmkv",
"hwg",
"hoai",
"milog"
],
"type": "string"
}
},
"required": [
"law",
"article"
],
"type": "object"
},
"name": "get-article",
"outputSchema": {
"properties": {
"error": {
"description": "Set instead of the fields above when the norm was not found",
"type": "string"
},
"law": {
"type": "string"
},
"lawName": {
"description": "Full German name of the statute",
"type": "string"
},
"metadata": {
"properties": {
"chapter": {
"type": [
"string",
"number",
"null"
]
},
"chapterTitle": {
"type": [
"string",
"null"
]
},
"scannerRelevant": {
"description": "Scanner module ids this norm feeds, e.g. [\"widerruf_button\"]",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
"type": "object"
},
"num": {
"description": "Article/paragraph incl. suffix, e.g. \"356a\"",
"type": "string"
},
"text": {
"description": "Full German text of the norm",
"type": "string"
},
"title": {
"type": "string"
},
"unit": {
"description": "\"Artikel\" (EU regulations) or \"Paragraf\" (German statutes)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get the full compliance report for a completed scan. Returns score (0–100), financial risk in EUR, per-module results, and all violations with law references, fine estimates, and fix instructions. ⚠️ Only call after the scan is complete — check status first with get-scan-status. If called while scan is still running, returns current progress instead of an error.",
"inputSchema": {
"properties": {
"scanId": {
"description": "The scan ID returned by check-compliance",
"type": "string"
}
},
"required": [
"scanId"
],
"type": "object"
},
"name": "get-scan-result",
"outputSchema": {
"properties": {
"completedAt": {
"description": "ISO timestamp",
"type": "string"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
},
"modules": {
"items": {
"properties": {
"maxScore": {
"type": "number"
},
"module": {
"type": "string"
},
"score": {
"type": "number"
},
"status": {
"type": "string"
},
"violationsCount": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"modulesCompleted": {
"type": "number"
},
"modulesTotal": {
"type": "number"
},
"riskLevel": {
"type": "string"
},
"scanId": {
"type": "string"
},
"scanReportUrl": {
"description": "Human-readable report on dsgvo.pro",
"type": "string"
},
"score": {
"description": "Compliance score 0–100 (completed scans only)",
"type": "number"
},
"startedAt": {
"description": "ISO timestamp",
"type": "string"
},
"status": {
"description": "initializing | pending | crawling | scanning | completed | failed",
"type": "string"
},
"url": {
"type": "string"
},
"violations": {
"items": {
"properties": {
"bussgeldrahmen": {
"properties": {
"amountEur": {
"type": "number"
},
"currency": {
"type": "string"
},
"paragraph": {
"type": "string"
}
},
"type": [
"object",
"null"
]
},
"fixSteps": {
"items": {
"type": "string"
},
"type": "array"
},
"fixSummary": {
"type": "string"
},
"law": {
"description": "Law and paragraph, e.g. \"BGB §356a\"",
"type": "string"
},
"module": {
"type": "string"
},
"noBussgeldReason": {
"description": "Why no fine range applies, when bussgeldrahmen is null",
"type": [
"string",
"null"
]
},
"severity": {
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Lightweight progress check for an in-progress compliance scan. Returns current status (pending/crawling/scanning/completed/failed) and how many modules have finished (20 Standard or up to 33 with Pro/Agency tier including Hosting-Standort (Schrems II) (Art. 13 lit. f DSGVO), Widerrufsbutton (§356a BGB), KI-Transparenz (Art. 50 KI-VO), Tech-Stack-Aktualität (Art. 32 DSGVO), Anwaltsspezifische Prüfung (BORA / BRAO), Maklerspezifische Prüfung (§34c GewO + MaBV + GEG), Arztspezifische Prüfung (BOÄ + HWG + Art. 9 DSGVO), Finanzvermittler-Prüfung (§34d/f/h/i GewO + FinVermV), Gastronomie-Prüfung (LMIV + PAngV + IfSG), Kosmetik-Prüfung (KosmetikVO + HWG + UWG), Bau-/Sanierung-Prüfung (§34c GewO + HwO + MiLoG), Hotel-/Beherbergung-Prüfung (BMG + PAngV + GEG + DSGVO)). Use this to poll progress. When status is 'completed', call get-scan-result for the full report.",
"inputSchema": {
"properties": {
"scanId": {
"description": "The scan ID returned by check-compliance",
"type": "string"
}
},
"required": [
"scanId"
],
"type": "object"
},
"name": "get-scan-status",
"outputSchema": {
"properties": {
"error": {
"type": "string"
},
"message": {
"type": "string"
},
"modulesCompleted": {
"type": "number"
},
"modulesRunning": {
"type": "number"
},
"modulesTotal": {
"type": "number"
},
"ready": {
"description": "true once the scan is completed or failed",
"type": "boolean"
},
"scanId": {
"type": "string"
},
"startedAt": {
"description": "ISO timestamp",
"type": "string"
},
"status": {
"description": "initializing | pending | crawling | scanning | completed | failed",
"type": "string"
},
"url": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "List all available German/EU digital-law statutes with article/paragraph counts.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list-laws",
"outputSchema": {
"properties": {
"laws": {
"items": {
"properties": {
"articleCount": {
"type": "number"
},
"fullName": {
"type": "string"
},
"id": {
"description": "Identifier to pass to search-law / get-article",
"type": "string"
},
"name": {
"description": "Short name, e.g. \"BDSG\"",
"type": "string"
},
"unit": {
"description": "\"Artikel\" or \"Paragraf\"",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Search across all 26 German/EU statutes (DSGVO, KI-VO, BDSG, TDDDG, DDG, BFSG, UWG, BGB, PAngV, VSBG, UrhG, VerpackG, VerpackDG, ElektroG, JuSchG, GewO, MaBV, GEG, BRAO, FinVermV, HwO, IfSG, KosmetikVO, HWG, HOAI, MiLoG). Accepts paragraph references (\"356a\", \"§ 312k\", \"Art. 42\") for direct lookup AND free-text keywords (\"Cookie\", \"Widerrufsbutton\", \"Einwilligung\"). Returns matching articles/paragraphs with excerpts. Covers data protection, telecom & digital-services law, AI regulation, accessibility, unfair-competition (UWG), consumer and sector-specific law.",
"inputSchema": {
"properties": {
"law": {
"description": "Optional: limit search to a specific law",
"enum": [
"dsgvo",
"ki-vo",
"bdsg",
"tdddg",
"ddg",
"bfsg",
"uwg",
"bgb",
"pangv",
"vsbg",
"urhg",
"verpackg",
"verpackdg",
"elektrog",
"juschg",
"gewo",
"mabv",
"geg",
"brao",
"finvermv",
"hwo",
"ifsg",
"kosmkv",
"hwg",
"hoai",
"milog"
],
"type": "string"
},
"query": {
"description": "Search query text",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search-law",
"outputSchema": {
"properties": {
"results": {
"description": "Matching articles/paragraphs, max 20",
"items": {
"properties": {
"excerpt": {
"description": "Text excerpt around the match",
"type": "string"
},
"law": {
"description": "Law identifier, e.g. \"bgb\"",
"type": "string"
},
"num": {
"description": "Article/paragraph number",
"type": "number"
},
"suffix": {
"description": "Letter suffix, e.g. \"a\" in §356a",
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"totalMatches": {
"description": "Total hits before the 20-item cap",
"type": "number"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:76ecbc482d58d20829a48a94cce362e3ad759039f8621d07e9eec6f56d1ba1a6 | sha256sum