DSGVO.pro — German Digital-Law Compliance
Server Details
Search 26 German/EU statutes free — then scan any website against 33 compliance modules.
- Status
- Healthy
- Uptime
- 100.0% over 66 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool has a distinct role: check-compliance starts a scan, get-scan-status polls it, get-scan-result retrieves the report, and list-laws/search-law/get-article cover separate law-reference actions. Although check-compliance sounds result-oriented, its description makes the scanId-only contract explicit. No overlapping purposes remain.
All six tools use lower-case hyphenated verb_noun naming (check-compliance, get-article, get-scan-result, get-scan-status, list-laws, search-law). The pattern is predictable, and minor singular/plural differences (laws vs law) follow natural semantics.
Six tools are well-scoped for a compliance scanner plus law reference: start scan, poll status, fetch result, list statutes, search statutes, and retrieve full article text. No tool feels redundant or missing at this scale.
The scan lifecycle is covered from initiation through status polling to report retrieval, and the law-reference surface supports listing, searching, and full-text lookup. Minor gaps remain, such as no scan-cancellation, scan-history, or module-metadata tool, but agents can complete the core workflows.
Available Tools
6 toolscheck-complianceStart Website Compliance ScanAInspect
🔑 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 (KosmetikV + 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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to scan (e.g. https://example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Normalized URL that is being scanned |
| hint | No | |
| error | No | Set instead of scanId when the scan could not be started |
| scanId | No | Pass this to get-scan-status / get-scan-result |
| status | No | "pending" right after the scan is queued |
| details | No | |
| message | No | |
| nextStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds crucial behavioral context beyond annotations: requires API key with specific header location, free tier limit of 3 scans/month, scan duration 60-120 seconds, and critically that it returns only a scanId. This is exactly what the agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely long and front-loads an overwhelming amount of module/tier detail that is not essential for invoking the tool. While the critical warning about scanId appears later, the bulk of tier/module enumerations distracts from the core usage instructions. It is not appropriately sized or front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description needn't explain return values, but it helpfully clarifies only a scanId is returned. It covers auth, limits, duration, and next steps. Slightly overcomplete on module details but complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the url parameter fully documented in schema. Description doesn't add format details or constraints beyond what schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Start) and resource (compliance scan) with scope details — up to 33 German digital law modules. Clearly distinguishable from siblings like get-scan-result which retrieves results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use follow-up tools: wait 60-90 seconds then call get-scan-result with scanId; use get-scan-status to check progress. Also notes this tool returns only a scanId, not results, which routes the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-articleGet Law ArticleARead-onlyIdempotentInspect
Get the full German text of a specific article or paragraph from a law. Returns full text and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| law | Yes | The law identifier | |
| article | Yes | The article or paragraph number. Letter suffixes are supported and required for norms like "356a" (§356a BGB Widerrufsbutton), "312k", "312j". |
Output Schema
| Name | Required | Description |
|---|---|---|
| law | No | |
| num | No | Article/paragraph incl. suffix, e.g. "356a" |
| text | No | Full German text of the norm |
| unit | No | "Artikel" (EU regulations) or "Paragraf" (German statutes) |
| error | No | Set instead of the fields above when the norm was not found |
| title | No | |
| lawName | No | Full German name of the statute |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds useful behavioral context by noting that the content is German text and that the result includes both full text and metadata, going slightly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the purpose and result, with no filler or unnecessary repetition of schema details. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-param read-only getter with full schema coverage, output schema, and safety annotations, the description is complete enough. It identifies the resource, the language, and the result type, while the sibling list provides surrounding discovery context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters fully described in the input schema, including a law enum and article number/suffix guidance. The description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a specific resource ('full German text of a specific article or paragraph from a law'). It clearly distinguishes itself from sibling tools like list-laws and search-law by targeting a single known norm rather than discovery or enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'specific article or paragraph' implies the agent should already know which law and article to request, but there is no explicit guidance about when to use this tool versus search-law or list-laws. Usage context is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-scan-resultGet Scan ReportARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | The scan ID returned by check-compliance |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| error | No | |
| score | No | Compliance score 0–100 (completed scans only) |
| scanId | No | |
| status | No | initializing | pending | crawling | scanning | completed | failed |
| message | No | |
| modules | No | |
| riskLevel | No | |
| startedAt | No | ISO timestamp |
| violations | No | |
| completedAt | No | ISO timestamp |
| modulesTotal | No | |
| scanReportUrl | No | Human-readable report on dsgvo.pro |
| modulesCompleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds unique behavioral context not in annotations: the tool returns current progress if scan is still running instead of error, and it specifies the exact data elements returned. This adds value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a caution, front-loaded with the core action and result summary. Every sentence earns its place, with no redundancy. The warning is clearly marked with an emoji, and the fallback behavior is concisely explained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (one parameter, no nested objects) and has an output schema, so the description's summary of return contents suffices. It covers the full lifecycle context (when to call, what to expect) and even notes the non-error fallback. Given the output schema exists, the description does not need to detail every field. This is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter scanId, which is described as 'The scan ID returned by check-compliance'. The description does not add any extra detail about the parameter itself, but it does provide context (completed scan) that indirectly relates to usage. Per rubric, with high schema coverage, baseline is 3, and the description does not exceed that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact purpose: to retrieve a full compliance report for a completed scan, and lists specific return contents (score, financial risk, per-module results, violations with law references and fixes). It clearly distinguishes this from sibling tools like get-scan-status (which checks status) and check-compliance (which initiates scans). No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it: only after the scan is complete, and instructs to check with get-scan-status first. Also explains the behavior if called early (returns current progress rather than error), effectively telling when not to use it and offering an alternative. This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-scan-statusCheck Scan ProgressARead-onlyIdempotentInspect
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 (KosmetikV + 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.
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | The scan ID returned by check-compliance |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| error | No | |
| ready | No | true once the scan is completed or failed |
| scanId | No | |
| status | No | initializing | pending | crawling | scanning | completed | failed |
| message | No | |
| startedAt | No | ISO timestamp |
| modulesTotal | No | |
| modulesRunning | No | |
| modulesCompleted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a read-only, idempotent, non-destructive operation, so the description does not need to restate safety. It adds useful behavioral context by listing the possible status values and describing the polling workflow, though it does not add rate-limit or retry guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is front-loaded in the first and last sentences, but the middle is bloated with a long parenthetical enumeration of 33 compliance modules and legal citations. That level of detail is excessive for a tool definition and does not help an agent select or invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, an output schema, and one fully described parameter, the description is complete for this tool's purpose. It explains the polling use case, the returned status values, and the transition to get-scan-result, so an agent has everything needed to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single scanId parameter is already documented in the schema as coming from check-compliance. The description does not add any additional meaning or formatting details for scanId, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a lightweight progress check for an in-progress compliance scan. It clearly distinguishes this from the sibling get-scan-result by explaining that get-scan-result should be called only once the status is completed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool to poll progress and routes the agent to get-scan-result for the full report when status is completed. The scope is also constrained to in-progress scans, which implies when the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-lawsList Available LawsARead-onlyIdempotentInspect
List all available German/EU digital-law statutes with article/paragraph counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| laws | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety and mutability profile is fully covered. The description adds that returned laws are annotated with article/paragraph counts, a modest behavioral detail beyond the structured fields, but says nothing about result size, ordering, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the scope and the returned detail with no filler. Nothing to trim and nothing important buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations carry the behavioral contract, so the one-sentence scope statement is nearly sufficient. Only the lack of routing guidance against the four sibling tools keeps it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool applies; the description correctly implies no filtering is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and a precisely scoped resource ('all available German/EU digital-law statutes'), plus the useful detail that results carry article/paragraph counts. It is clearly distinct from get-article and search-law in intent, though it never names a sibling to reinforce that contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use phrasing and no alternatives are named. The catalog-discovery role is only implied by 'all available', leaving the agent to infer that this should be called before search-law or get-article rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-lawSearch German LawARead-onlyIdempotentInspect
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, KosmetikV, 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.
| Name | Required | Description | Default |
|---|---|---|---|
| law | No | Optional: limit search to a specific law | |
| query | Yes | Search query text |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | Matching articles/paragraphs, max 20 |
| totalMatches | No | Total hits before the 20-item cap |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new context: it returns matching articles/paragraphs with excerpts, and it clarifies the breadth of the corpus (data protection through sector-specific law), which goes beyond the annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage modes, then returns and coverage. The 26-law enumeration is long and partially duplicates the schema enum, but it usefully signals scope in the description itself. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with a full output schema, the description covers everything needed: corpus scope, accepted input forms, and result shape. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by illustrating accepted query syntax ('356a', '§ 312k', 'Art. 42') versus keyword text, which the terse schema description ('Search query text') does not convey. The enumerated statutes also clarify the law enum's intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ('Search across all 26 German/EU statutes') and enumerates the exact covered domains, so the agent knows precisely what corpus is being searched. It is clearly distinguishable from siblings like get-article (single lookup) and list-laws (enumeration).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two accepted query modes ('paragraph references' and 'free-text keywords') with concrete examples, which is real usage guidance. However, it never says when to prefer this over get-article for a known paragraph or list-laws, so the sibling routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
list-laws1 field changed- changed
Output schema / properties / laws / items / properties / coverage / descriptionPrevious value: -"\"partial\" means the corpus holds website-relevant excerpts only, not the full statute"New value: +"\"full\": all paragraphs/articles of the statute — annexes (Anlagen/Anhänge) are not included. \"partial\": website-relevant excerpts only, not the full statute."
1 tool update
- Changed
list-laws1 field changed- added
Output schema / properties / laws / items / properties / coverageAdded value: +{ + "description": "\"partial\" means the corpus holds website-relevant excerpts only, not the full statute", + "enum": [ + "full", + "partial" + ], + "type": "string" +}
6 tool updates
- Changed
check-compliance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
- Changed
get-article1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
- Changed
get-scan-result1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
- Changed
get-scan-status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
- Changed
list-laws1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
- Changed
search-law1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "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" +}
6 tool updates
- First observed
check-compliance - First observed
get-article - First observed
get-scan-result - First observed
get-scan-status - First observed
list-laws - First observed
search-law
Related MCP Connectors
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Automated website compliance infrastructure and GDPR/CCPA auditing.
Cookie consent scanner: GDPR, CCPA, GCMv2. PASS/FAIL compliance checklists with fix recommendations.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables querying over 6,800 German federal statutes, case law, and legislative preparatory works with verbatim source text. Integrates EU law cross-references and provides citation validation and legal stance building.186 npm23Apache 2.0
- AlicenseAqualityBmaintenanceOne-step legal compliance for vibe-coded apps: scans project, generates privacy policies/TOS, installs cookie consent banner, and checks EU AI Act risk.10233 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables querying 6,870 German federal statutes, case law, and legislative preparatory works directly from AI assistants and MCP-compatible clients.186 npm4Apache 2.0
- AlicenseAqualityFmaintenanceProvides access to 1,709 Icelandic statutes and 19,026 provisions with full-text search, citation validation, and EU/EEA law integration, enabling legal research and compliance checks through natural language queries.1113 npm1Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.