GDPR platform: your assistant fills in VVT, TOMs, AVV and DSFA, your DSB reviews them.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Checks the public DNS records that protect a domain against e-mail spoofing: SPF, DKIM (common selectors), DMARC, DNSSEC, MTA-STS, TLS-RPT, BIMI and CAA. Returns an overall assessment, one finding per check and recommendations. Use it for a company domain, not for single mailboxes. Nothing is stored. Rate limited per connection.
Public domain name, e.g. "example.de" (an e-mail address or URL is reduced to its domain)
Output language. Default: German if the input is German, otherwise English.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http frag-hugo https://mcp.fraghugo.de/mcp
Checks the public DNS records that protect a domain against e-mail spoofing: SPF, DKIM (common selectors), DMARC, DNSSEC, MTA-STS, TLS-RPT, BIMI and CAA. Returns an overall assessment, one finding per check and recommendations. Use it for a company domain, not for single mailboxes. Nothing is stored. Rate limited per connection.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Public domain name, e.g. "example.de" (an e-mail address or URL is reduced to its domain) |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "Public domain name, e.g. \"example.de\" (an e-mail address or URL is reduced to its domain)"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
}
}
}Looks up whether frag.hugo has reviewed a software or cloud service for GDPR use in companies (contract partner, data processing agreement, subprocessors, data location, third-country transfer, AI training, certificates, admin controls, deletion, data subject rights). Returns the published verdict with evidence links, or, if the service has not been reviewed, the ten criteria to check yourself. It never estimates a verdict for unreviewed services.
| Argument | Type | Description |
|---|---|---|
| name* | string | Name of the software or cloud service, e.g. "Canva", "ChatGPT" |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Name of the software or cloud service, e.g. \"Canva\", \"ChatGPT\""
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
}
}
}Logs a data subject request (access, erasure, rectification, restriction, portability, objection) in the connected frag.hugo account and calculates the one-month deadline of Art. 12(3) GDPR. Step 1 (without `bestaetigung`): preview with the deadline, the possible extension, a note on identity verification and a reply draft from the frag.hugo templates, plus a confirmation value valid for 15 minutes. Step 2 (same input plus `bestaetigung`): creates the request; the data protection officer on file is notified. It does not send anything to the requesting person. Use only for requests addressed to the user’s own organisation.
| Argument | Type | Description |
|---|---|---|
| art* | string | Type of request: access (Art. 15), erasure (17), rectification (16), restriction (18), portability (20), objection (21) |
| name* | string | Name of the requesting person as given in the request |
| kanal* | string | How the request arrived |
| kontakt* | string | E-mail address or postal address for the reply |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| beschreibung | string | What the person asks for, in short |
Finds the competent German data protection supervisory authority by federal state, postcode (PLZ) of the main establishment or authority ID, with competence, website, key figures from the latest activity report (with evidence links), focus topics and notes for SMEs. In Bavaria, public bodies are supervised by BayLfD, companies by BayLDA. If a postcode spans two states, it asks back. Not for authorities outside Germany.
| Argument | Type | Description |
|---|---|---|
| plz | string | German postcode (PLZ) of the main establishment, 5 digits |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| bundesland | string | German federal state, name or code (e.g. "Bayern", "BY") or "Bund" |
| behoerde_id | string | Authority ID from this tool |
| oeffentliche_stelle | boolean | true for public bodies (only matters in Bavaria: BayLfD instead of BayLDA) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"plz": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "German postcode (PLZ) of the main establishment, 5 digits"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"bundesland": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "German federal state, name or code (e.g. \"Bayern\", \"BY\") or \"Bund\""
},
"behoerde_id": {
"enum": [
"bfdi",
"bw",
"bay-lda",
"bay-lfd",
"berlin",
"brandenburg",
"bremen",
"hamburg",
"hessen",
"mv",
"niedersachsen",
"nrw",
"rlp",
"saarland",
"sachsen",
"sachsen-anhalt",
"sh",
"thueringen"
],
"type": "string",
"description": "Authority ID from this tool"
},
"oeffentliche_stelle": {
"type": "boolean",
"default": false,
"description": "true for public bodies (only matters in Bavaria: BayLfD instead of BayLDA)"
}
}
}Lists dated compliance deadlines from the frag.hugo deadline calendar (GDPR, NIS2, AI Act, CRA, DORA, Data Act, accessibility act and more), each with legal provision, status, what to do and the official source. Without date filters it returns the next upcoming deadlines from today. Not for deadlines of an individual company (data breach, data subject request); those need an account.
| Argument | Type | Description |
|---|---|---|
| bis | string | To date (YYYY-MM-DD) |
| von | string | From date (YYYY-MM-DD). Default: today, unless "status" is set |
| limit | integer | Number of results, 1–30 (default 10) |
| gesetz | string | Law (Gesetz) key, e.g. "nis2", "ai-act", "dsgvo" |
| status | string | in-kraft = in force, kommt = upcoming, verschoben = postponed, entwurf = draft |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| zielgruppe | string | Target group (Zielgruppe); deadlines for "alle" are always included |
Summarises how many organisations from Germany ransomware groups have named on their leak sites in the last 30 days or 12 months, by industry and group, with the frag.hugo monthly assessment and method. Counts are perpetrator claims from the RansomLook inventory (CIRCL, CC BY 4.0), not confirmed incidents. Not for looking up individual victims.
| Argument | Type | Description |
|---|---|---|
| branche | string | Industry (Branche), e.g. "Industrie", "Gesundheitswesen" |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| zeitraum | string | 30t = last 30 days, 12m = last 12 months (default 30t) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"branche": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Industry (Branche), e.g. \"Industrie\", \"Gesundheitswesen\""
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"zeitraum": {
"enum": [
"30t",
"12m"
],
"type": "string",
"default": "30t",
"description": "30t = last 30 days, 12m = last 12 months (default 30t)"
}
}
}Shows the subprocessor lists of 17 widely used cloud providers (Microsoft 365, Google Workspace, AWS, Salesforce, HubSpot, Stripe and others) as monitored daily by frag.hugo: date of the last change, number of entries, names and links to the official list and the data processing agreement. Use it to check whether a provider changed its subprocessors since a given date. Not for providers outside these 17.
| Argument | Type | Description |
|---|---|---|
| seit | string | Only providers whose subprocessor list changed on or after this date (YYYY-MM-DD) |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| anbieter | string | Provider ID; without it all 17 monitored providers are listed |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"seit": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only providers whose subprocessor list changed on or after this date (YYYY-MM-DD)"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"anbieter": {
"enum": [
"microsoft-365",
"google-workspace",
"google-cloud",
"aws",
"cloudflare",
"github",
"zapier",
"salesforce",
"hubspot",
"mailchimp",
"slack",
"zoom",
"zendesk",
"atlassian",
"asana",
"monday",
"stripe"
],
"type": "string",
"description": "Provider ID; without it all 17 monitored providers are listed"
}
}
}Returns the result of a website check started with start_website_check: status per category and up to eight most important findings with explanation, or "still running". Only scans started through this connector within the last 24 hours can be fetched.
| Argument | Type | Description |
|---|---|---|
| scan_id* | string | scan_id returned by start_website_check |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"scan_id"
],
"properties": {
"scan_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "scan_id returned by start_website_check"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
}
}
}Lists the open data protection deadlines of the organisation connected to this frag.hugo account: data breaches with their 72-hour reporting deadline (Art. 33 GDPR), data subject requests with their one-month deadline (Art. 12(3) GDPR, incl. extensions) and records of processing or processor agreements waiting for review by the data protection officer. Returns type, deadline, status and an app link per entry — no descriptions, names or contact details. Requires a connected frag.hugo account. Not for deadlines of laws in general (use get_compliance_deadlines).
| Argument | Type | Description |
|---|---|---|
| art | string | Which deadlines: data breaches (72 h), data subject requests (one month), entries awaiting DPO review, or all |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"art": {
"enum": [
"datenpannen",
"anfragen",
"freigaben",
"alle"
],
"type": "string",
"default": "alle",
"description": "Which deadlines: data breaches (72 h), data subject requests (one month), entries awaiting DPO review, or all"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
}
}
}Prepares the data protection paperwork for introducing a new software or cloud service in the connected frag.hugo account. Step 1 (without `bestaetigung`): preview with the frag.hugo GDPR test result for the service (if reviewed), the matching template for the record of processing activities (Verarbeitungsverzeichnis) and what will be created, plus a confirmation value valid for 15 minutes. Step 2 (same input plus `bestaetigung`): creates a record of processing entry and a processor agreement (AVV) entry, both submitted for review by the data protection officer. It does not approve the software and does not contact the vendor.
| Argument | Type | Description |
|---|---|---|
| start | string | Planned start (YYYY-MM-DD) |
| zweck* | string | What the software will be used for |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| anbieter | string | Vendor, if known |
| software* | string | Name of the software or cloud service (e.g. "Slack", "HubSpot") |
| betroffene | array | Groups of persons concerned (e.g. "Beschäftigte", "Kunden") |
| datenarten |
Records a personal data breach in the connected frag.hugo account and starts the 72-hour deadline of Art. 33 GDPR. Step 1 (without `bestaetigung`): returns a preview with the deadline, the competent supervisory authority of the organisation, missing mandatory details for that authority, a draft report in the order of the authority form and the reporting channel, plus a confirmation value valid for 15 minutes. Step 2 (same input plus `bestaetigung`): creates the breach as a draft in frag.hugo; the company admins and the data protection officer are notified. It does not submit anything to the authority and does not decide whether reporting is required. Use only when the user wants to record a breach of their own organisation.
| Argument | Type | Description |
|---|---|---|
| risiko* | string | Risk to the rights and freedoms of persons as assessed by the organisation; "unklar" if not yet assessed |
| uebung | boolean | true = practice case (drill): no deadline reminders, no notifications |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| massnahmen | string | Measures already taken |
| entdeckt_am* | string | When the organisation became aware of the breach, ISO 8601 with time zone (e.g. 2026-10-28T09:30:00+01:00). Starts the 72-hour deadline. Not in the future. |
Searches the frag.hugo database of documented GDPR fines (Germany and Europe), each case with authority, amount, GDPR articles, a short summary and the official source. Use it for questions such as "which fines were imposed for Art. 32" or "fines against telecom companies in Germany". Not for legal advice in an individual case and not for fines under other laws. Results are sorted by date, newest first.
| Argument | Type | Description |
|---|---|---|
| bis | integer | To year (inclusive) |
| von | integer | From year (inclusive) |
| land | string | Country, ISO 3166-1 alpha-2, e.g. DE, IE, FR |
| limit | integer | Number of results, 1–20 (default 10) |
| suche | string | Free text: company, facts, authority (max. 100 chars) |
| artikel | string | GDPR article, e.g. "Art. 32" or "32" |
| branche | string | Industry (Branche), e.g. "Telekommunikation" |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
Starts the free frag.hugo website check (Hugo Check) for a public URL: cookies and tracking before consent, consent banner, Google Fonts, privacy policy and imprint, TLS and security headers, e-mail records, accessibility and shop duties. Returns the result directly if it is ready within about 20 seconds, otherwise a scan_id for get_website_check_result. The same URL within one hour returns the same scan. Limited to 3 new checks per hour per connection. Not legal advice.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public website address, http or https, e.g. "https://www.example.de" |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 4,
"description": "Public website address, http or https, e.g. \"https://www.example.de\""
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
}
}
}Collects what frag.hugo publishes about a vendor for a due-diligence note: e-mail security of its domain, the GDPR review verdict if one exists, the subprocessor monitor entry, documented GDPR fines matched by company name, incidents published on fraghugo.de, and optionally a website check. It gives no overall grade and does not judge the vendor; each item carries its own source. Use the company name for better fine matching.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Main domain of the vendor, e.g. "stripe.com" |
| sprache | string | Output language. Default: German if the input is German, otherwise English. |
| firmenname | string | Company name (Firmenname) for matching fines and incidents |
| website_pruefen | boolean | Also start a website check (Hugo Check) of the domain; counts against its hourly limit |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 3,
"description": "Main domain of the vendor, e.g. \"stripe.com\""
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"firmenname": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Company name (Firmenname) for matching fines and incidents"
},
"website_pruefen": {
"type": "boolean",
"default": false,
"description": "Also start a website check (Hugo Check) of the domain; counts against its hourly limit"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
| bestaetigung | string | Value from the preview. Omit it to get the preview; send it unchanged to log the request. |
| eingegangen_am* | string | Date the request was received (YYYY-MM-DD). Starts the one-month deadline. Not in the future. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"art",
"eingegangen_am",
"name",
"kontakt",
"kanal"
],
"properties": {
"art": {
"enum": [
"auskunft",
"loeschung",
"berichtigung",
"einschraenkung",
"datenportabilitaet",
"widerspruch"
],
"type": "string",
"description": "Type of request: access (Art. 15), erasure (17), rectification (16), restriction (18), portability (20), objection (21)"
},
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Name of the requesting person as given in the request"
},
"kanal": {
"enum": [
"email",
"post",
"telefon",
"sonstiges"
],
"type": "string",
"description": "How the request arrived"
},
"kontakt": {
"type": "string",
"maxLength": 200,
"minLength": 3,
"description": "E-mail address or postal address for the reply"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"beschreibung": {
"type": "string",
"maxLength": 2000,
"description": "What the person asks for, in short"
},
"bestaetigung": {
"type": "string",
"maxLength": 120,
"description": "Value from the preview. Omit it to get the preview; send it unchanged to log the request."
},
"eingegangen_am": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the request was received (YYYY-MM-DD). Starts the one-month deadline. Not in the future."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bis": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "To date (YYYY-MM-DD)"
},
"von": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "From date (YYYY-MM-DD). Default: today, unless \"status\" is set"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Number of results, 1–30 (default 10)"
},
"gesetz": {
"enum": [
"dsgvo",
"dsgvo-durchsetzung",
"digital-omnibus",
"nis2",
"kritis-dach",
"ai-act",
"cra",
"dora",
"data-act",
"bfsg",
"e-rechnung",
"tdddg",
"hinschg",
"eidas",
"produkthaftung",
"gpsr",
"maschinen-vo",
"ehds",
"red",
"dsa",
"entgelttransparenz"
],
"type": "string",
"description": "Law (Gesetz) key, e.g. \"nis2\", \"ai-act\", \"dsgvo\""
},
"status": {
"enum": [
"in-kraft",
"kommt",
"verschoben",
"entwurf"
],
"type": "string",
"description": "in-kraft = in force, kommt = upcoming, verschoben = postponed, entwurf = draft"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"zielgruppe": {
"enum": [
"alle",
"kmu",
"nis2",
"kritis",
"hersteller",
"finanz",
"ki-anbieter",
"ki-betreiber",
"online-handel",
"oeffentlich",
"datenanbieter"
],
"type": "string",
"description": "Target group (Zielgruppe); deadlines for \"alle\" are always included"
}
}
}| array |
| Kinds of personal data processed (e.g. "Kontaktdaten", "Chatnachrichten") |
| abteilungen | array | Departments that will use it |
| vorlage_ref | string | Choose one of the templates offered in the preview (`vvt_vorlage.ref` or one of `weitere`) if the purpose fits better |
| bestaetigung | string | Value from the preview. Omit it to get the preview; send it unchanged to create the entries. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"software",
"zweck"
],
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Planned start (YYYY-MM-DD)"
},
"zweck": {
"type": "string",
"maxLength": 500,
"minLength": 10,
"description": "What the software will be used for"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"anbieter": {
"type": "string",
"maxLength": 80,
"description": "Vendor, if known"
},
"software": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Name of the software or cloud service (e.g. \"Slack\", \"HubSpot\")"
},
"betroffene": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"default": [],
"maxItems": 20,
"description": "Groups of persons concerned (e.g. \"Beschäftigte\", \"Kunden\")"
},
"datenarten": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"default": [],
"maxItems": 20,
"description": "Kinds of personal data processed (e.g. \"Kontaktdaten\", \"Chatnachrichten\")"
},
"abteilungen": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"default": [],
"maxItems": 20,
"description": "Departments that will use it"
},
"vorlage_ref": {
"type": "string",
"pattern": "^VVT-NEW-\\d{3}$",
"description": "Choose one of the templates offered in the preview (`vvt_vorlage.ref` or one of `weitere`) if the purpose fits better"
},
"bestaetigung": {
"type": "string",
"maxLength": 120,
"description": "Value from the preview. Omit it to get the preview; send it unchanged to create the entries."
}
}
}| vorfall_typ* |
| array |
| Type(s) of incident |
| beschreibung* | string | What happened, in plain words (20–4,000 characters). Avoid names of affected persons. |
| bestaetigung | string | Value from the preview. Omit it to get the preview; send it unchanged to create the breach. |
| anzahl_unbekannt | boolean | true if the number of affected persons is not yet known |
| betroffene_daten | array | Categories of personal data affected |
| anzahl_betroffene | integer | Approximate number of affected persons |
| kategorien_personen | array | Categories of data subjects |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"beschreibung",
"entdeckt_am",
"vorfall_typ",
"risiko"
],
"properties": {
"risiko": {
"enum": [
"kein_risiko",
"risiko",
"hohes_risiko",
"unklar"
],
"type": "string",
"description": "Risk to the rights and freedoms of persons as assessed by the organisation; \"unklar\" if not yet assessed"
},
"uebung": {
"type": "boolean",
"default": false,
"description": "true = practice case (drill): no deadline reminders, no notifications"
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"massnahmen": {
"type": "string",
"maxLength": 4000,
"description": "Measures already taken"
},
"entdeckt_am": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "When the organisation became aware of the breach, ISO 8601 with time zone (e.g. 2026-10-28T09:30:00+01:00). Starts the 72-hour deadline. Not in the future."
},
"vorfall_typ": {
"type": "array",
"items": {
"enum": [
"fehlversand",
"verlust_diebstahl",
"cyberangriff",
"schadsoftware",
"phishing",
"unbefugter_zugriff_intern",
"veroeffentlichung",
"fehlkonfiguration",
"entsorgung",
"auftragsverarbeiter",
"sonstiges"
],
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Type(s) of incident"
},
"beschreibung": {
"type": "string",
"maxLength": 4000,
"minLength": 20,
"description": "What happened, in plain words (20–4,000 characters). Avoid names of affected persons."
},
"bestaetigung": {
"type": "string",
"maxLength": 120,
"description": "Value from the preview. Omit it to get the preview; send it unchanged to create the breach."
},
"anzahl_unbekannt": {
"type": "boolean",
"default": false,
"description": "true if the number of affected persons is not yet known"
},
"betroffene_daten": {
"type": "array",
"items": {
"enum": [
"name",
"email",
"adresse",
"telefon",
"geburtsdatum",
"bankdaten",
"kreditkarte",
"sozialversicherung",
"personalausweis",
"zugangsdaten",
"standort",
"fotos",
"versicherung",
"gesundheit",
"ethnische_herkunft",
"politische_meinung",
"religion",
"gewerkschaft",
"genetisch",
"biometrisch",
"sexualleben",
"straftaten",
"berufsgeheimnis",
"steuer_sozialgeheimnis",
"sonstiges",
"unbekannt"
],
"type": "string"
},
"default": [],
"maxItems": 20,
"description": "Categories of personal data affected"
},
"anzahl_betroffene": {
"type": "integer",
"maximum": 100000000,
"minimum": 1,
"description": "Approximate number of affected persons"
},
"kategorien_personen": {
"type": "array",
"items": {
"enum": [
"beschaeftigte",
"bewerber",
"kunden",
"interessenten",
"nutzer",
"patienten",
"schueler_studierende",
"kinder",
"schutzbeduerftige",
"eltern",
"oeffentliche_personen",
"lieferanten",
"unbekannt",
"sonstige"
],
"type": "string"
},
"default": [],
"maxItems": 14,
"description": "Categories of data subjects"
}
}
}| betrag_min |
| number |
| Minimum fine in EUR |
| bundesland | string | German federal state (Bundesland) or "Bund" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bis": {
"type": "integer",
"maximum": 2100,
"minimum": 2018,
"description": "To year (inclusive)"
},
"von": {
"type": "integer",
"maximum": 2100,
"minimum": 2018,
"description": "From year (inclusive)"
},
"land": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Country, ISO 3166-1 alpha-2, e.g. DE, IE, FR"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Number of results, 1–20 (default 10)"
},
"suche": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Free text: company, facts, authority (max. 100 chars)"
},
"artikel": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "GDPR article, e.g. \"Art. 32\" or \"32\""
},
"branche": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Industry (Branche), e.g. \"Telekommunikation\""
},
"sprache": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Output language. Default: German if the input is German, otherwise English."
},
"betrag_min": {
"type": "number",
"maximum": 10000000000,
"minimum": 0,
"description": "Minimum fine in EUR"
},
"bundesland": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "German federal state (Bundesland) or \"Bund\""
}
}
}