Zum Inhalt springen
EUID Prüfservice & Prüfsiegel, Startseite
Website prüfen lassen

Werkzeugkatalog

274 Werkzeuge meldet der MCP-Server unter https://euid.com/api/mcp einem Assistenten über tools/list. Diese Seite liest dieselbe Liste. 3 davon sind ohne Zugang aufrufbar; alle anderen brauchen ein Token, dessen Rolle die erlaubten Werkzeuge bestimmt. Wie Sie ein Token bekommen und einrichten, steht unter Automatisierung und MCP.

Lesart

  • Rollen nennt, welche Zugangsrollen das Werkzeug rufen dürfen; „offen" heißt: auch ohne Token.
  • verändert Daten markiert Werkzeuge, die Geld bewegen, Siegel ausstellen oder einen Zustand setzen. Ein Assistent fragt vor solchen Aufrufen nach.
  • Felder mit Stern sind Pflicht. Kennungen sind immer die id (UUID), nie ein Name.

Prüfkunden

pruefservice.kunden.liste

Lists all audit customers of the tenant.

Rollen: Betreiber, Agentur, Organisation, Tester

pruefservice.kunden.lesen

Reads an audit customer by ID.

Rollen: Betreiber, Agentur, Organisation, Tester

  • kundeId *: Audit customer UUID

pruefservice.kunden.anlegen

Creates an audit customer (company name + https domain).

Rollen: Betreiber · verändert Daten

  • firma *: Company name
  • domain *: Complete https URL of website
  • ansprechpartner: Optional: Contact person name
  • email: Optional: Contact person email
  • art: Optional: seitenbesitzer (default), agentur or organisation
  • typ: Optional, nur bei art organisation: behoerde, verband, versicherung, kanzlei, teilhabe, technik

pruefservice.kunden.art

Set the customer kind of an audit customer after creation (seitenbesitzer, agentur, organisation, hoster). Rights, menus and the start page follow the kind on the next call; the organisation type is kept only for organisation, otherwise cleared. [modifies data]

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • art *: Customer kind

pruefservice.kunden.urkunde_plaetze

Logo slots on the certificate sheet of an audit customer: read (without belegungen) or replace the list. Slots: oben_rechts (1, head right), unten_rechts (up to 4, 2×2 grid above the footer line), neben_marke (1, next to the EUID mark). Each entry: platz, name, url (https), bild (file in public/partner, name.svg, or a locally hosted logo URL), schrift? (word mark file), kategorien? (only on sheets of these categories; excellence carries all). Empty list clears.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • belegungen: Slot entries (objects: platz, name, url, bild, schrift?, kategorien?); omit to read

pruefservice.kunden.eigenprodukt

Own-product flag of an audit customer (default off): on = audit runs of this customer run without charging credit (like gratis, run marked abrechnung gratis). ⚠ CHARGEABLE runs become free — operator only. [modifies data]

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • an *: true = on

pruefservice.kunden.zusammenfuehren

Merge two audit customers (duplicate after a registration for a domain already in stock): grants, remote accesses, cases, accompaniments and partner link move to the kept customer, the given-up one is marked deleted. Irreversible — operator only. [modifies data]

Rollen: Betreiber · verändert Daten

  • behalten *: UUID of the audit customer to keep
  • aufgegeben *: UUID of the audit customer to give up

pruefservice.kunden.typ

Setzt den Organisationstyp eines Prüfkunden (behoerde, verband, versicherung, kanzlei, teilhabe, technik); leer = keine Angabe.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • typ: Type or empty

pruefservice.kunden.sprache

Setzt die Sprache eines Prüfkunden (de, en, cs, sk, hu, sl, it, fr, rm, es, nl, pt, hr, bg); Aktenfile und Prüfbericht entstehen darin — Wirkung heute de und en, andere fallen auf Deutsch zurück, bis die Berichtstexte übersetzt sind.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • sprache *: Locale, e.g., de, en, hr

pruefservice.kunden.stammdaten

Master data of an audit customer: without fields, current values (firma, ansprechpartner, email, anschrift, strasse, plz, ort, land); with fields, sets them (same rule as /pruefung/stammdaten: firma required, address as strasse + plz + ort all three or none, land = ISO-3166-1 alpha-2 from the list, empty = not recorded). anschrift as free text is still accepted and split where possible. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • firma: Organisation name
  • ansprechpartner: Contact person
  • email: Organisation email
  • strasse: Street and house number
  • plz: Postal code
  • ort: City
  • anschrift: Postal address as free text (used only without strasse, plz, ort)
  • land: Country of registered office, ISO-3166-1 alpha-2 (AT, DE, CH, …); empty string clears

pruefservice.kunden.verzeichnis

Directory entry of an audit customer in the partner search (public card): without fields, the current entry; with fields, sets it — sichtbar (true/false), kurz, leistungen[] (≤ 8), anschrift, plz, ort (required when visible), land (ISO-2), telefon, email, person (contact person shown on the card), bilder[] (≤ 3 https image URLs; first behind the front, all on the back), repariert (true/false: repairs websites — repair projects list these partners) with stundensatz (EUR per hour, e.g. 100; default from pruefservice.assistenz). Visible for agentur, organisation, hoster, the operator itself and partner customers (linked advertising partner — one card, never two). Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • sichtbar: Show in the partner search
  • kurz: One sentence
  • leistungen: Services, one per entry
  • anschrift: Street and number
  • plz: Postcode
  • ort: City
  • land: Country ISO-2
  • telefon: Phone
  • email: Public email
  • person: Contact person, name on the card
  • bilder: https image URLs, up to 3
  • repariert: Repairs websites (repair projects)
  • stundensatz: Hourly rate in EUR, only with repariert

pruefservice.kunden.css_verifikation

Operator switch per organisation (question 38): may the organisation's own CSS also take effect on public verification page /z/<pruefId>? Without `on` read-only. Default from: page carries colors, logo, brand from theme; seal image never carries stylesheet.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • an: true = CSS wirkt auch auf der Verifikationsseite

pruefservice.kunden.pruefmodus

Read or set measurement mode and preselection for a customer: tiefenpruefung (true | false | null = like global), vorlagen {schwelle, vertreter} (null = global), vorauswahl {dimensionen, stufe, ziel {a11y: 90, …}, umfangOffen, abo}, hinweis. Only kundeId = read. [modifies data]

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer
  • tiefenpruefung: true | false | null (wie global)
  • vorlagen: { schwelle, vertreter } — null = global
  • vorauswahl: { dimensionen, stufe, ziel, umfangOffen, abo }
  • hinweis: Optional: Note for workplace

einrichtung

pruefservice.einrichtung.vorschlag

Setup proposal of an audit customer, read from its website: facts with source page (firma, anschrift, telefon, email, leistungen, logo, bilder), three short texts, colors, open questions, and which chapters are already taken over. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

pruefservice.einrichtung.uebernehmen

Takes over the setup proposal into the customer data: kapitel stammdaten (master data), erscheinungsbild (brand, logo, accent color), sprache (language of the website or aenderungen.sprache; also confirms the setup step), karte (directory card: short text, address, phone, email, up to 3 https images), anzeige (the chosen ad text as a draft for the partner, only for ad partners; a second call changes the draft while it is a draft; euid activates it), fragen (answers to the open questions: aenderungen.fragen { personen|pruefadressen|tresor|zugaenge: true confirms, false withdraws }) or alles (stammdaten, erscheinungsbild, karte; language, ad and answers only when asked for explicitly). Optional aenderungen override single fields ({ stammdaten:{…}, farben:{akzent}, sprache, karte:{kurz, anschrift, plz, ort, telefon, email, bilder[], leistungen[]}, anzeige:{titel, text, platzierung}, fassung: nutzen|kompetenz|angebot, fragen:{…} }). Existing values the proposal does not know stay. Each chapter reports ok or the reason. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • kapitel *: stammdaten | erscheinungsbild | sprache | karte | anzeige | fragen | alles
  • aenderungen: Optional field overrides, see description

pruefservice.einrichtung.stand

Setup state of an audit customer, the same list as the start page of the customer area: per step id, title, text, menu path (href), set from facts (eingestellt), confirmed by the owner (bestaetigt with date and name), confirmable, done, essential; plus the chapter state of the setup proposal, if one exists. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

pruefservice.einrichtung.bestaetigen

Confirms a setup step the facts cannot show (ja true, e.g. tresor: not needed for now) or withdraws the confirmation (ja false). Same function as the check box on the start page of the customer area; step ids from einrichtung.stand, only steps with bestaetigbar true. Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • id *: Step id from einrichtung.stand
  • ja *: true confirms, false withdraws

pruefservice.einrichtung.erneuern

Reads the website of the audit customer again and builds a new setup proposal (queued; the result appears in einrichtung.vorschlag). Chapters already taken over stay in the customer data; the chapter state of the proposal starts over. Customer access: once per day. A customer without website gets no proposal. Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID

pruefadressen

pruefservice.pruefadressen.lesen

Addresses the audit service measures from (instance plus active machines) and the product token of its user agent (EuidPruefservice) — to allow them in a firewall, WAF or fail2ban before a run. Same list as the public page https://euid.com/pruefadressen (no login needed, for a hoster) and /pruefung/pruefadressen.

Rollen: Betreiber, Agentur, Organisation

personen

pruefservice.personen.liste

People with access to the own audit customer: userId, name, email, role (family owner, caretaker administration, contributor auditor, viewer reader), active, audit areas, note. Same list as https://euid.com/pruefung/pruefer. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

pruefservice.personen.einladen

Invites a person to the own audit customer by e-mail: name, email, role caretaker (administration), contributor (auditor, default) or viewer (reader), optional audit areas. The person gets an invitation mail and sets the password alone. Owners (family) are invited only in the interface https://euid.com/pruefung/pruefer; MCP takes no password and no technical login name. An account of another organisation is never changed. Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • name *: Full name
  • email *: E-mail address for the invitation
  • rolle: caretaker | contributor | viewer (default contributor)
  • bereiche: Audit areas the person works on (a11y, seo, geo, cwv, co2, dsgvo, indexierung, responsive, software); empty = all

tresor

pruefservice.tresor.eintrag.liste

Entries of the vault of the own audit customer WITHOUT values: id, label, kind (art), purpose, valid until, expired, number of reads, last read, number of auditors it is shared with. Values never leave the vault through MCP. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

pruefservice.tresor.eintrag.anlegen

Stores a secret in the vault of the own audit customer: label (a–z, 0–9, dot, dash, underscore), value, purpose (required), kind pruefung (protected area for the measurement: label basic-auth with value user:password, or login-formular with JSON) or fremdsystem (external system of the organisation), optional validity in days. The value is never returned and never readable through MCP; kind aufbewahrung and changing an existing entry only in the interface https://euid.com/pruefung/tresor. Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • label *: Label, e.g. basic-auth
  • wert *: Secret value (never returned)
  • zweck *: Purpose, required
  • art *: pruefung | fremdsystem
  • tage: Validity in days (optional)

pruefservice.tresor.quelle.stand

Organisation's own vault source (2026-09-15): intern, HashiCorp/OpenBao KV v2 or own https endpoint; address, mount, path, field, order, whether token exists, last test. Never a token.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Organisation UUID

pruefservice.tresor.quelle.setzen

Set own vault source: art intern | hashicorp | http, adresse (https), at hashicorp mount (default secret) and pfad, feld (default value), eigeneZuerst (default true), token (access token; empty keeps existing). Then audit service reads organisation's secrets (login, basic auth, foreign system, hook secrets) from this source. art intern removes source and token. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID
  • art *: intern | hashicorp | http
  • adresse: https base address; http endpoint may contain {label}
  • mount: hashicorp: KV mount
  • pfad: hashicorp: Path prefix
  • feld: Field with value
  • eigeneZuerst: erst die eigene Quelle, dann intern
  • token: Access token to source

pruefservice.tresor.quelle.pruefen

Test connection of own vault source: reads label euid-verbindungstest; says whether source is reachable, token accepted and label exists.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID

pruefservice.tresor.quelle.entfernen

Remove own vault source with token — organisation is entirely in audit service vault. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID

betreuung

pruefservice.betreuung.profil

Conditions of the own audit customer towards the organisations it accompanies: who pays (zahlweg kunde or agentur), level of detail, allowed audit areas, help with implementation. Read only; conditions are set at https://euid.com/pruefung/betreute. Customer access only for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

partner

pruefservice.partner.suche

Partner directory (public, same data as /partner/verzeichnis): agencies that help fix findings, insurers, organisations, hosters — cards with contact, services, images. Filters: name (matches name, city, text, services), art (agentur | organisation | versicherung | pentester | hoster), plz + land (ordered by postcode distance within the same country — no kilometre value), seite.

Rollen: offen

  • name: Search word (optional)
  • art: Kind (optional)
  • plz: Postcode (optional)
  • land: Country ISO-2 (optional, with plz)
  • repariert: Only partners that repair websites (optional)
  • seite: Page, 12 per page (optional)

pruefservice.partner.stand

The partner behind an audit customer: values (contact e-mail, embedding module, countries, note), the full partner page profile (all fields, state, public address), the ads with state, impressions and clicks. Customer access for its own audit customer.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID (the partner is linked to it)

pruefservice.partner.werte

Set the partner's own values: kontaktEmail, einbettungUrl (https address of the partner's embedding form), notiz, laender (ISO-2 list, empty = everywhere). Fields left out keep their value. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • kontaktEmail: Contact e-mail (optional)
  • einbettungUrl: https address of the embedding module (optional)
  • notiz: Note to euid (optional)
  • laender: ISO-2 country codes (optional)

pruefservice.partner.profil

Set the partner page profile — every field the partner login offers, including bilder (gallery), dokumente and seite (baukasten layout). Publishing stays with the operator (werbung.partner.profil). [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • profil *: Profile of the partner page: titel (≤ 90), kurz (≤ 200), text (markdown paragraphs, ≤ 4000), leistungen[] (≤ 12), verweise[{titel,url}] (https own sites, ≤ 5), standort, rahmen[] (https origins allowed to embed the partner box), bilder[{url,alt}] (https own images with alt text, ≤ 8), dokumente[{titel,url}] (https own PDFs, ≤ 8), seite (optional @dignis/baukasten page JSON replacing text/leistungen/verweise). Fields left out keep their value.

pruefservice.partner.anzeige.anlegen

Create an ad draft for the partner (state entwurf — euid activates it). Placements: see partner.stand.platzierungen. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • platzierung *: Placement key
  • creative *: Creative: eyebrow (≤ 40), titel (≤ 90, required), text (≤ 240), bild (https) + bildAlt (required with bild), ctaLabel (≤ 40, required), ctaHref (https or a euid.com path, required).

pruefservice.partner.anzeige.aendern

Change one of the partner's own ads: platzierung and/or creative. An active ad returns to entwurf until euid activates it again. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • werbungId *: Ad UUID (from partner.stand)
  • platzierung: Placement key (optional)
  • creative: Creative: eyebrow (≤ 40), titel (≤ 90, required), text (≤ 240), bild (https) + bildAlt (required with bild), ctaLabel (≤ 40, required), ctaHref (https or a euid.com path, required).

pruefservice.partner.statistik

Statistics of the partner behind an audit customer: impressions and clicks per ad (total, last 30 days), daily series, inquiries and closings per month, click rate. Aggregates only.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

register

pruefservice.register.liste

Register of organisations and instances: every accompanying organisation (agentur, hoster, organisation) with country, type, instance (zentrale | island id), licence, number of cases, active seals, accompanied customers and MCP accesses; every island with hoster, country, key fingerprint, last report. Read from pruef_kunde + pruef_insel, nothing maintained twice. Filters: land (ISO-2 or "ohne"), art, instanz.

Rollen: Betreiber

  • land: ISO-2 or "ohne" (no master data)
  • art: agentur | organisation | hoster
  • instanz: zentrale or island id

Prüfakte

pruefservice.akte.zip

Case file of a completed run as ZIP: download address (with session or x-dev-secret), archive name, and file list of the case folder (index.html = case file, akte.json, pruefbericht.html, per audit area befunde.json/messung.json, bilder/, quelltext/). Null result if the run has no folder (legacy run, test run).

Rollen: Betreiber, Akte-Token

  • runId *: Run UUID

Betrieb

pruefservice.betrieb.lage

Service status: online payments and outstanding invoices, errors and remote accesses over the past 7 days, heartbeat status, customers by type.

Rollen: Betreiber

  • zeitraumTage: Optional: Payment period in days (default 30)

Organisation

pruefservice.organisation.registrierung

Reads or sets which types (seitenbesitzer, agentur, organisation) may register via an organisation's link; without permission, read-only.

Rollen: Betreiber · verändert Daten

  • kundeId *: Organisation UUID (audit customer)
  • erlaubt: Optional: erlaubte Arten; leere Liste schließt die Registrierung
  • pruefer: Optional: dürfen sich prüfende Personen selbst registrieren (Prüfer-Freigabe, keine Akte)

pruefservice.organisation.smtp

Own mail server of organisation for invitations and auditor access in its name: without action, status (no password); action setzen with host, port, user, pass, from (empty pass keeps existing); action probe with an (test mail); action remove. Values in organisation's vault (smtp.*).

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation (Audit customer)
  • aktion: setzen, probe, entfernen — leer = Stand
  • host: Mail server
  • port: Port (587, 465)
  • user: User
  • pass: Password
  • from: From "Name <address>"
  • an: Test email recipient

Aufträge

pruefservice.auftraege.liste

Lists audit cases, optionally restricted to one customer.

Rollen: Betreiber, Agentur, Organisation, Tester

  • kundeId: Optional: Audit customer UUID

pruefservice.auftraege.lesen

Reads an audit case including target profile and status.

Rollen: Betreiber, Agentur, Organisation, Tester, Akte-Token

  • auftragId *: Case UUID

pruefservice.auftraege.kibudget

AI consumption of a case from the immutable AI ledger: calls, tokens, cents across all runs, expectation for next run, plus chain verification (ok or break point).

Rollen: Betreiber

  • auftragId *: Case UUID

pruefservice.auftraege.kosten

Cost report of a case, operator only (operator 2026-09-15: log costs per task, for operator only): revenue from ledger (runs, bonus, discount, assistance), AI per purpose from AI ledger, third-party services as quantity (PageSpeed, VIES, Wayback, W3C, whois, Sistrix credits, Search Console, voiceover pages), measurement time per worker, one line per run; plus a sentence. Customer receives none of this.

Rollen: Betreiber

  • auftragId *: Case UUID

pruefservice.auftraege.verwerfen

Discards an EMPTY case, operator only ([51.24]): only status angelegt, without any run, ledger booking or auditor verdict (checked under row lock). The case is marked deleted; the case log names reason and actor. Any other case is refused with AUFTRAG_NICHT_LEER and the reason — a case with a run always stays.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • grund *: Why the case is discarded, e.g. "duplicate, the valid case is <auftragId>"

pruefservice.auftraege.anlegen

Creates an audit case (customer, domain, volume, audit areas). Checks the start address first: redirect chain and sitemap; answer field vorab (art ok|umgeleitet|fremd|abgewiesen|nicht_erreichbar, meldung, sitemap, seiten), also written to the case log. With vorab.art fremd the run is refused until pruefservice.auftraege.umleitung_folgen or a new case for the target domain.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • domain *: https URL of website to audit
  • stufe *: Page volume in pages (tiers 15, 50, 100, 300, 1000; at most 1000)
  • dimensionen *: Zu prüfende Dimensionen (a11y, seo, geo, cwv, co2, dsgvo, indexierung, responsive, software)
  • sitemapUrl: OPTIONAL: Sitemap URL for crawl to use in addition to automatic discovery
  • berechtigungBestaetigt *: PFLICHT: Bestätigung, zur Beauftragung der Prüfung dieser Domain berechtigt zu sein (Betreiber der Website oder in seinem Auftrag). Die Ergebnisse dienen der Qualitätssicherung; ihre Verwendung für Abmahnungen ist untersagt (AGB Abschnitt 3).

pruefservice.auftraege.status_setzen

Sets the case status. Invalid transitions are rejected by the state machine.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • status *: Neuer Status

pruefservice.auftraege.umleitung_folgen

Primary domain: if start address of a case redirects to a FOREIGN domain, run refuses (DOMAIN_LEITET_FREMD) and charges nothing. With folgen:true, run measures target — only for cases where operator knows both domains belong to same person. www/protocol/subdomain case equalizes automatically (case log, primary-domain event).

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • folgen *: true = der Umleitung folgen, false = wieder verweigern

pruefservice.auftraege.seitenzahl

Page count of a case: how many pages the NEXT run measures (2 = initial finding, otherwise the tiers of the price list). Applies from the next run; finished runs keep their count; case log entry.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • seiten *: Selectable page count (2 or a price tier, e.g. 15, 50, 100, 300, 1000)

pruefservice.auftraege.pruefer_organisation

Assigns the auditor organisation of a case with ordered human audit (begleitung): its auditors then see the case and may judge pages. organisationId empty = euid.com accompanies itself. Same rules as creating a case (agency, organisation or host; never the customer itself; partner pool). Case log entry.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • organisationId: Audit customer UUID of the auditor organisation; empty = euid.com

pruefservice.auftraege.umfang

Scope of a case: which audit areas it covers (a11y, seo, geo, cwv, co2, dsgvo, indexierung, responsive, software). Applies from the next run and changes what it costs; nothing is booked here. Areas removed keep their measured values in the file; a partial seal stays valid until it expires. Case log entry.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • dimensionen *: Audit areas the case covers from now on, at least one: a11y, seo, geo, cwv, co2, dsgvo, indexierung, responsive, software

pruefservice.auftraege.crawlfilter

Crawl scope of a case: whitelist (only these paths) and blacklist (never these paths), one pattern per entry — path prefix (/zertifikat/) or * wildcard (*.pdf). Blacklist wins; empty lists remove the restriction; the start page is always fetched. Applies from the next run. Read with erlaubt/gesperrt omitted.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • erlaubt: Whitelist patterns, strings (empty = everything)
  • gesperrt: Blacklist patterns, strings

arbeitsplatz

pruefservice.arbeitsplatz.adresse

Path in the operator workspace for exactly one target: customer (kundeId), case (auftragId), run (runId) or a page of a run (runId + seite, e.g. "/kontakt"). Returns { art, pfad, titel } for the Bubble action "oeffnen"; find IDs first with kunden.liste, auftraege.liste or durchgaenge.liste.

Rollen: Betreiber

  • kundeId: Audit customer UUID
  • auftragId: Case UUID (opens its audit file with the latest run)
  • runId: Run UUID (opens the audit file of exactly this run)
  • seite: Optional with runId: page path or address of the audited website

Laufende Überwachung

pruefservice.ueberwachung.starten

Ongoing monitoring of a domain (audit areas cyber, keywords): one run per interval (cyber daily, otherwise every 30 days), status and change compared to previous run, no seal statement. ⚠ CHARGEABLE per month, reserved once per month (price as proposal, question 24a). First run is immediately due; heartbeat processes it.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID whose credit is charged
  • domain *: https address of website
  • rubriken *: cyber, keywords oder beide
  • seiten: Ausgewählte Seiten (absolute URLs, höchstens 50); leer = Startseite und Crawl bis 8 Seiten

pruefservice.ueberwachung.stand

Status of monitoring: subscription and all monthly runs with point values and change; without ueberwachungId, the list of subscriptions.

Rollen: Betreiber

  • ueberwachungId: Monitoring UUID
  • kundeId: only subscriptions of this customer (list)

pruefservice.ueberwachung.beenden

Ends monitoring: no further monthly runs; a pending run will be refunded.

Rollen: Betreiber · verändert Daten

  • ueberwachungId *: Monitoring UUID

Durchgänge

pruefservice.durchgaenge.liste

Lists audit runs of a case.

Rollen: Betreiber, Agentur, Organisation, Tester, Akte-Token

  • auftragId *: Case UUID

pruefservice.durchgaenge.starten

Starts an audit run. ⚠ CHARGEABLE: reserves cost estimate from credit balance and settles actual extent after completion. With queue returns immediately eingereiht:true with jobId (worker measures); pruefservice.durchgaenge.liste shows run, pruefservice.pruefung.stand shows progress.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • auftragId *: Case UUID
  • dimensionen: Only these audit areas (subset of the case; e.g. ["a11y","seo"]); omitted = all ordered areas. The file merges per area the latest run that carries it.

Guthaben

pruefservice.guthaben.stand

Reads the credit balance of an audit customer in cents.

Rollen: Betreiber, Agentur, Organisation, Tester

  • kundeId *: Audit customer UUID

pruefservice.guthaben.aufladen

⚠ MONEY MOVEMENT: Books a credit deposit to an audit customer's account.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • cents *: Amount in cents (positive)
  • notiz: Optional: Booking note

Preise

pruefservice.preise.lesen

Reads current prices and optionally calculates a cost estimate.

Rollen: offen

  • vollSeiten: Optional: Number of full pages
  • leichtSeiten: Optional: Number of light pages

Siegel

pruefservice.zertifikat.verifizieren

Verifies a partial seal publicly (domain, audit area, score, validity, status). No login required.

Rollen: offen

  • pruefId *: Public audit ID

pruefservice.zertifikat.ausstellen

⚠ ISSUES A SEAL: creates partial seal for an audit area if target value is reached. Result is publicly verifiable.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • dimension *: Zu besiegelnde Dimension

pruefservice.zertifikat.widerrufen

⚠ REVOKES A SEAL. Verification page remains and explicitly states revocation — it does not disappear.

Rollen: Betreiber · verändert Daten

  • pruefId *: Public audit ID

Berichte

pruefservice.bericht.ausgaben

Lists report publications of a partial seal (initial publication and any corrections with reason).

Rollen: Betreiber, Agentur, Organisation, Tester

  • pruefId *: Public audit ID

pruefservice.bericht.mail

Sends the audit report of ONE run to ONE e-mail address with the PDF attached (customer view, the same file as the download) and links to the criteria register and knowledge pages of the measured audit areas; replies go to the operator address. Without senden:true nothing is sent: the answer is the preview (subject, text, attachment). Activity log entry bericht.mail.

Rollen: Betreiber · verändert Daten

  • runId *: Run UUID
  • an *: One recipient e-mail address
  • anrede: Salutation, e.g. "Guten Tag Herr Mag. Fortner,"; default "Guten Tag,"
  • stufe: PDF level: zusammenfassung (default), erweitert or fachlich
  • senden: true sends the mail; omitted or false returns the preview only

Optik

pruefservice.theme.lesen

Reads the visual template of an audit customer (set override and resolved theme).

Rollen: Betreiber, Agentur, Organisation, Tester

  • kundeId *: Audit customer UUID

pruefservice.theme.setzen

Sets the design template of an audit customer (brand, logo, color scheme). ISSUER is not configurable — corresponding fields are rejected.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • theme *: Optik-Vorlage: marke, logo_url (https), akzent, akzent_hell, akzent_kontrast, hintergrund, flaeche, rahmen, text, text_leise (Hex)

Marke

pruefservice.branding.lesen

Reads operator branding (base for all themes).

Rollen: Betreiber, Agentur, Organisation, Tester

Selbstprüfung

pruefservice.selbstpruefung

Checks service operational status (ledger integrity, settlement cron, open reservations, legal text release status). An empty check is treated as error.

Rollen: Betreiber

Prüfung

pruefservice.pruefung.starten

Audits ONE domain in one call: creates case if needed and starts run. ⚠ CHARGEABLE (reserve from audit customer's credit balance). Returns auftragId and runId; with queue instead eingereiht:true and jobId, runId then via pruefservice.durchgaenge.liste — pruefservice.pruefung.stand shows progress.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID whose credit is charged for audit
  • domain *: Domain or https URL of website to audit
  • stufe: Page tier (15, 50, 100, 300, 1000) — if omitted, customer's preselection (customer account), otherwise 10
  • dimensionen: Prüfbereiche; ohne Angabe die Vorauswahl des Prüfkunden, sonst alle

pruefservice.pruefung.stand

Status of a run: is it still running, how many pages measured, what point values per audit area. Query until run completes.

Rollen: Betreiber, Agentur, Organisation, Tester, Prüfende Person, Akte-Token

  • runId *: Run UUID

pruefservice.pruefung.verbesserung

IMPROVEMENT MODE FOR AGENCIES: per page of completed run, findings with remedy, JSON-LD proposal (placeholder «…» instead of invented facts), suggestions for internal linking, and ready-to-copy AI task; plus task for whole site (template problems first). Changes no point value. Markdown: /bericht/lauf/<runId>/updateplan.

Rollen: Betreiber, Agentur, Organisation, Tester, Akte-Token

  • runId *: Run UUID
  • path: Optional: only this page (path, e.g., /kontakt)

pruefservice.pruefung.todos

RESULT AS TASK LIST: findings of completed run, bundled per audit area and rule — with severity, count, affected pages, remedy, and reference to knowledge base. Running run returns empty list; preliminary findings would mislead.

Rollen: Betreiber, Agentur, Organisation, Tester, Prüfende Person, Akte-Token

  • runId *: Run UUID
  • bereich: Optional: nur dieser Prüfbereich
  • minSchwere: Optional: Mindest-Schwere
  • limit: Optional: Maximum task count (default 100, maximum 500)
  • stufe: Optional: Ausführlichkeit — knapp · standard · voll. Ohne Angabe entscheidet das Profil des Kunden.
  • lang: Optional: Sprache der Aufgabentexte (z. B. en). Rückfall en→de je Befund; Vorgabe de.

pruefservice.pruefung.katalog

WCAG-2.2 criteria catalog of completed run: per success criterion passed / failed / requires manual check / not automatically testable — actual accessibility answer behind point value. Empty if accessibility not measured or run still running.

Rollen: Betreiber, Agentur, Organisation, Tester, Prüfende Person, Akte-Token

  • runId *: Run UUID

pruefservice.pruefung.inventar

Inventory of a run (2026-09-15): all detected images with alt text, size, occurrence per page; all links with link text, occurrence, internal/external; external links checked (broken, http only); legal section (impressum, datenschutz, AGB, cookies, barrierefreiheit, withdrawal, contact); every measured page with HTTP status, title, H1, page type and its number of images and links (seitenListe, [65.2]); the menus of the run, each once, with the number of pages they appear on (menues, [65.13]). From case file (inventar.json); older runs from database without link check. No audit judgment.

Rollen: Betreiber

  • runId *: Run UUID

pruefservice.pruefung.seitenblatt

Data sheet of ONE page of a run ([65.2], 2026-10-21): every image on the page with alt text (missing, empty = decorative, text), placeholder status (no size, up to 2x2 pixels, placeholder file name; marked as decorative or not) and the verdict of the image analysis when the run has one; every link in page order with text, target, internal/external/jump mark to the page itself, and its state from the link directory. Page path as in seitenListe of pruefservice.pruefung.inventar. No audit judgment.

Rollen: Betreiber

  • runId *: Run UUID
  • seite *: Path of the page as in the page list, e.g. /kontakt

pruefservice.pruefung.domain

Domain directory of a run (question 46, 2026-09-16): DNS (A/AAAA, NS, CAA), mail protection (SPF, DKIM, DMARC, MX), DNSSEC, TLS versions and certificate, network of the address (whois) — per line status (ok, weak, missing, not determinable), found value, meaning, purpose. Collected without browser, no seal, no point value. From case file (domain/verzeichnis.json); older runs have none.

Rollen: Betreiber

  • runId *: Run UUID

pruefservice.pruefung.seo_vorschlag

SEO and keyword suggestions for a run (prepared 2026-09-14): title, description and H1 per page and up to ten keywords from search data (Search Console; Sistrix when keyword list is connected). Created ONCE per run with the model for purpose empfehlung, stored at run and as ki/seo-vorschlag.json in case file. Without key, pages or search data, returns the status with the finished prompt. No audit judgment.

Rollen: Betreiber

  • runId *: Run UUID

pruefservice.pruefung.bilder

Image analysis of a run (Block 6, Answer 12; Block 63): each real image described by image model against alt and context text; urteil passt|knapp|widerspruch|sinnlos|unklar, vorschlag = suggested alt text (max 150 chars), guete = quality of the alt texts in percent (passt 1, knapp half, unklar not counted). Contradiction or pointless text = hint with evidence. No audit judgment. Costs only for the operator. Occurs after full audit once key is in vault.

Rollen: Betreiber, Agentur, Organisation, Tester, Akte-Token

  • runId *: Run UUID

pruefservice.pruefung.bild_neu

Re-analyse one image ([60.22]): the image analysis keeps judgments across runs per host, bytes (sha256), alt text, model and prompt version, so an unchanged image costs no second model call. This removes the stored judgments of ONE image (inhaltHash from pruefung.bilder of that run) on the run host; the next run with image analysis asks the model again. Does not change the run itself.

Rollen: Betreiber · verändert Daten

  • runId *: Run UUID whose image analysis lists the image
  • inhaltHash *: sha256 of the image bytes (field inhaltHash in pruefung.bilder)

pruefservice.pruefung.ranking

Ranking of a run as stored after settlement: Search Console (clicks, impressions, pages, queries) and Sistrix (visibility, keywords) or reason why nothing is there. Legacy runs without storage return null.

Rollen: Betreiber

  • runId *: Run UUID

pruefservice.pruefung.vergleich

Before-after of a run against previous completed run of same case: fixed, new, unchanged per criterion with pages and locations; only commonly measured audit areas compared, "open" instead of finding counts as to review. Without previous run null.

Rollen: Betreiber, Akte-Token

  • runId *: Run UUID

Stapelprüfung

pruefservice.stapel.starten

Batch audit: order many domains in a single call (limit 100). Runs are processed ONE AFTER ANOTHER — the measurement environment audits one website at a time. ⚠ CHARGEABLE per domain. Returns a stapelId; progress via pruefservice.stapel.stand.

Rollen: Betreiber, Agentur · verändert Daten

  • kundeId *: Audit customer UUID whose credit is charged for runs
  • domains *: Liste der Domains (Host oder URL)
  • stufe: Page tier per domain (15, 50, 100, 300, 1000) — default 10
  • dimensionen: Prüfbereiche; Vorgabe alle
  • titel: Optional: Batch name

pruefservice.stapel.stand

Progress of batch audit: how many domains waiting, running, complete, failed — per domain with runId for task list.

Rollen: Betreiber, Agentur

  • stapelId *: Batch UUID

pruefservice.stapel.todos

Task lists of ALL completed domains in batch, bundled per domain. Waiting and running entries appear with empty list.

Rollen: Betreiber, Agentur

  • stapelId *: Batch UUID
  • minSchwere: Optional: Mindest-Schwere
  • limitJeDomain: Optional: Maximum tasks per domain (default 25)

pruefservice.stapel.abbrechen

Cancels batch audit: waiting domains drop, already running run completes (cancelling would leave its reservation open).

Rollen: Betreiber, Agentur · verändert Daten

  • stapelId *: Batch UUID

Aktivitätslog

pruefservice.aktivitaet.liste

Activity log of all internal operations, newest first: case log, seals (issued, revoked, failed), payment (credited, rejected, webhook error), remote access (call, rejected). Filter by area, result, and case.

Rollen: Betreiber

  • bereich: Optional: nur dieser Bereich
  • ergebnis: Optional: nur dieses Ergebnis
  • auftragId: Optional: only this case
  • limit: Optional: Maximum (default 100, maximum 500)

Tickets

pruefservice.ticket.anlegen

Create ticket for an audit case (help with implementation, seal integration). No cost; money occurs only when logged time exceeds the quota.

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • titel *: What it's about (3–200 characters)
  • text: Description
  • bezug: Optional: Task from task list this ticket relates to

pruefservice.ticket.liste

Tickets with status, logged time, and amount: per case, per customer, or all; with ticketId, a ticket with its time entries.

Rollen: Betreiber

  • ticketId: Ticket UUID
  • auftragId: only this case
  • kundeId: only this customer
  • status: offen, in_arbeit, erledigt

pruefservice.ticket.status

Set ticket status: offen, in_arbeit, erledigt.

Rollen: Betreiber · verändert Daten

  • ticketId *: Ticket UUID
  • status *: neuer Status

pruefservice.ticket.zeit

⚠ MONEY: Log time to a ticket in quarter-hours. First the organisation's quota (0 €), then the hourly rate as a ledger entry to the case's payer. Negative quarter-hours are a reversal of time without money.

Rollen: Betreiber · verändert Daten

  • ticketId *: Ticket UUID
  • viertel *: Quarter-hours, integer, not zero
  • notiz: What was done

pruefservice.ticket.kontingent

Read assistance quota and provider of an organisation; with kontingentViertel or anbieterId, set (-1 = default, "euid" = EUID).

Rollen: Betreiber · verändert Daten

  • kundeId *: Organisation UUID
  • kontingentViertel: own quota in quarter-hours; -1 = default
  • anbieterId: Agency UUID providing assistance; "euid" = EUID

Prüfende Personen

pruefservice.pruefer.abrechnung

Statement per auditor for one month (YYYY-MM): pages audited, amount (5 € per page), annual total, earnings limit and warning. format csv returns the file for Odoo.

Rollen: Betreiber

  • monat *: Month as YYYY-MM
  • userId: only this person (auth_user.id)
  • format: json (Vorgabe) oder csv

pruefservice.pruefer.grenze

Read or set earnings limit for one auditor per calendar year (grenzeJahrCents; -1 = none). Warning at 80 %, reached at 100 %, no cutoff.

Rollen: Betreiber · verändert Daten

  • userId *: auth_user.id of person
  • grenzeJahrCents: Limit in cents per year; -1 = none
  • notiz: Reason, e.g., country and regulation

pruefservice.pruefer.aufgaben

Task list of one auditor: per accompanied case domain, customer, pages total, judged, open and next page without judgment. Person = auditor access; operator specifies userId.

Rollen: Betreiber, Prüfende Person

  • userId: Operator only: Person (auth_user.id); auditor access gives nothing

pruefservice.pruefer.seite

One page to judge: findings from latest run on this page (area, title, severity, rule, remedy, knowledge), real screen-reader text (if screen-reader evidence exists), judgment so far and allowed judgments.

Rollen: Betreiber, Prüfende Person

  • auftragId *: Case UUID (from pruefer.aufgaben)
  • url *: Page address (from naechsteSeite or page list)
  • userId: Operator only: Person

pruefservice.pruefer.urteil

Enter judgment for page: works or problem, with reasoning and optionally WCAG criteria (e.g., ["1.3.1","4.1.2"]). Same function as interface; first judgment per page writes auditor credit. [modifies data]

Rollen: Betreiber, Prüfende Person · verändert Daten

  • auftragId *: Case UUID
  • url *: Page address
  • urteil *: funktioniert | problem
  • kommentar: Reasoning in plaintext
  • kriterien: Optional bei problem: WCAG-Kriteriennummern
  • userId: Operator only: Person

KI-Modelle

pruefservice.ki.modelle

Read or set AI model per purpose (empfehlung, vorpruefung, bild, uebersetzung) — only models from the pricing table; includes table (USD per million tokens, pricing date). Key is in vault.

Rollen: Betreiber · verändert Daten

  • empfehlung: Model ID
  • vorpruefung: Model ID
  • bild: Model ID
  • uebersetzung: Model ID

pruefservice.ki.modellpruefung

Execute model check immediately (otherwise weekly via heartbeat): whether configured models are listed at the provider, how old the pricing table is. Requires key in vault (anthropic/api_key); without it, pricing date only.

Rollen: Betreiber · verändert Daten

Maschinen

pruefservice.maschine.anmelden

Register machine in machine directory (measurement or screen-reader worker): name (lowercase, digits, hyphen), type mess|vorlese, location, computer id. Returns id for all heartbeats; known name = existing machine.

Rollen: Betreiber · verändert Daten

  • name *: Name, e.g., keller-1
  • art *: mess or vorlese
  • standort: Optional: Cellar, Cloud, Workplace
  • kennung: Optional: Computer name
  • stand: Optional: flache Angaben (git, node, nvda)

pruefservice.maschine.lebenszeichen

Heartbeat of registered machine (by id only); status merged. After 180 s without heartbeat, machine is considered silent.

Rollen: Betreiber · verändert Daten

  • id *: Machine UUID
  • kennung: Optional: Computer name
  • stand: Optional: flache Angaben (git, aufgabe, nvda)

pruefservice.maschine.liste

Machine directory: all machines with type, location, status and whether they are alive (heartbeat within 180 s).

Rollen: Betreiber

pruefservice.maschine.setzen

Deregister machine (aktiv=false, heartbeats rejected) or reactivate.

Rollen: Betreiber · verändert Daten

  • id *: Machine UUID
  • aktiv *: true = aktiv, false = abgemeldet

Bruch-Website

pruefservice.bruch.abgleich

Comparison of report with should-list of break website (A13): each should-error with page and location in count, nothing doubled, no audit area passed, empty audit = error. With runId, immediately against stored run; without runId, STARTS worker measurement of break website (minutes, no audit customer and ledger) at service address or basis (https://bruch.…) — result afterwards via bruch.stand.

Rollen: Betreiber

  • runId: Optional: UUID of run against break website
  • basis: Optional: own break website address, e.g., https://bruch.euid.com

pruefservice.bruch.stand

Status of last started break test: laeuft, fertig (with comparison per should-error) or fehler.

Rollen: Betreiber

live

pruefservice.live.besucher

Who is currently on website and customer area: per visit page, path with dwell time, engagement (scroll, mouse, rage clicks), origin, WHOIS (organisation, provider, location), unread chat messages. Bots hidden (mitBots: true shows them).

Rollen: Betreiber

  • stunden: Optional: Period in hours, default 24, at most 168
  • mitBots: Bots mit anzeigen

pruefservice.live.whois

WHOIS for IP addresses of live visitors (ip from live.besucher): organisation, provider, country, city, timezone, proxy/hosting/mobile. Reads storage; with frisch: true queries ip-api.com immediately.

Rollen: Betreiber · verändert Daten

  • ips *: IP-Adressen (Strings), höchstens 100
  • frisch: beim Dienst neu holen statt nur lesen

pruefservice.live.chat

Chat history of a visit (besuchId from live.besucher); visitor's messages count as read thereafter.

Rollen: Betreiber · verändert Daten

  • besuchId *: Visit UUID

pruefservice.live.chat.senden

Send message to visitor — appears in their speech bubble with next heartbeat (up to 10 s, in open chat 2 s). With schliessen: true ends chat for visitor until someone writes again.

Rollen: Betreiber · verändert Daten

  • besuchId *: Visit UUID
  • text: Plaintext up to 2000 characters
  • schliessen: Chat danach beenden

Ranking-Daten

pruefservice.ranking.gsc

Search analysis of Google Search Console for a customer: connection status (service client, customer permission) and, if connected, clicks, impressions, click-through rate, position, plus pages and queries from recent days. Customer grants permission in customer area under /pruefung/ranking.

Rollen: Betreiber

  • kundeId *: Audit customer UUID
  • tage: Optional: Period in days, default 28

pruefservice.ranking.gsc.uebersicht

Search Console across all audit customers (same view as /dash/pruefservice/gsc): whether service's Google access is stored and per customer whether permission exists and until when. Reads no values, metadata only.

Rollen: Betreiber

pruefservice.ranking.gsc.tracking

Tracking from Search Console of a customer (Mig 319): metrics with change to previous period (28 days), position classes, queries and pages with winners, losers, new and lost, risers and fallers, opportunities (rank 4 to 20 with impressions), countries, devices, search features, search types, weekly series up to 16 months, sitemaps, indexing of strongest pages and development across all collections. Reads latest collection; without collection null — then ranking.gsc.erheben.

Rollen: Betreiber

  • kundeId *: Audit customer UUID

pruefservice.ranking.gsc.seiten

Page success of the euid.com website itself (2026-09-18): every page of the page template per language against the latest Search Console collection of the platform — clicks, impressions, CTR, position with change to previous period, the queries that brought the page, and per declared keyword (keywords in _inhalt.ts, translated per language) whether it is in the page text, which query matched (impressions, position) and which OTHER pages also receive it. Summary counts on top.

Rollen: Betreiber

pruefservice.ranking.gsc.erheben

Collect Search Console tracking for a customer now (otherwise daily 04:41 in heartbeat): search analysis per dimension and search type, sitemaps, inspection of 20 strongest pages; one line per day, second run same day replaces it. Requires customer permission; every read in vault protocol.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID

pruefservice.ranking.sistrix

Sistrix for customer's domain: visibility index with status, keywords in top 100 and top 10, country from TLD; operator key from vault, each query costs credits and logs with customer. Status less than one day old comes from storage at customer; frisch:true forces query. Without key, no call.

Rollen: Betreiber

  • kundeId *: Audit customer UUID
  • frisch: true erzwingt eine neue Abfrage bei Sistrix (kostet Credits)

pruefservice.ranking.sistrix.credits

Sistrix credits for one month from activity log: total, count of queries and per customer — operator's costs. Without monat, current month.

Rollen: Betreiber

  • monat: YYYY-MM, default: current month

messung

pruefservice.messung.einstellung

Operator switches for measurement (pruefservice.messung): tiefenpruefung (software probes) and template detection in crawl — schwelle (from this many known addresses, 0 = off) and vertreter (pages per template fully measured; more representatives see more, e.g., images without text on individual pages). Without input: read. [modifies data]

Rollen: Betreiber · verändert Daten

  • tiefenpruefung: Software-Sonden an/aus
  • schwelle: Templates from this many known addresses, 0 = off
  • vertreter: Representatives per template, 1–50

pruefservice.messung.melden

Report a wrong or missing measurement for a run: art = falsch (a finding is wrong; kennung required — the rule or finding id from pruefung.todos) or fehlt (a measurement is missing), bereich (audit area code), kennung, seite (path), text (what was observed, 10–4000 chars), erwartet (what would be right). The report goes to the operator; scores and seals do not change by the report itself. Interface: /pruefung/meldung/<runId>. [modifies data]

Rollen: Betreiber, Agentur, Organisation, Prüfende Person, Akte-Token · verändert Daten

  • runId *: Run UUID
  • art *: falsch or fehlt
  • bereich *: Audit area code: a11y, dsgvo, seo, geo, indexierung, responsive, cwv, software
  • kennung: Rule or finding id (required for falsch)
  • seite: Page path
  • text *: What was observed (10–4000 chars)
  • erwartet: What would be right (optional)

pruefservice.messung.meldungen

Reports of wrong or missing measurements of one case with state and the operator answer (customer, auditor, operator).

Rollen: Betreiber, Agentur, Organisation, Prüfende Person, Akte-Token

  • auftragId *: Case UUID

pruefservice.messung.meldungen.liste

All reports of wrong or missing measurements with the domain of the case, filtered by stand (neu, in_pruefung, bestaetigt, abgelehnt, behoben, offen = neu+in_pruefung+bestaetigt), limit (≤500). Interface: /dash/pruefservice/meldungen.

Rollen: Betreiber

  • stand: neu, in_pruefung, bestaetigt, abgelehnt, behoben or offen
  • limit: at most 500

pruefservice.messung.meldung.stand

Set the state of a report along the state machine (neu → in_pruefung | bestaetigt | abgelehnt; in_pruefung → bestaetigt | abgelehnt; bestaetigt → behoben | abgelehnt; abgelehnt → in_pruefung) with an answer to the reporter. The report itself stays unchanged. [modifies data]

Rollen: Betreiber · verändert Daten

  • meldungId *: Report UUID
  • stand *: neu, in_pruefung, bestaetigt, abgelehnt, behoben
  • antwort: Answer to the reporter (≤4000 chars)

agent

pruefservice.agent.stand.setzen

An agent (Claude window, machine) reports its status: agent (name), stand (arbeitet | wartet | deploy | blockiert | fertig), tut (what's happening), wo (file, area). Operator sees it in documentation archive. [modifies data]

Rollen: Betreiber · verändert Daten

  • agent *: Agent name, e.g., euid-com-50
  • stand: arbeitet | wartet | deploy | blockiert | fertig
  • tut *: Activity, up to 500 characters
  • wo: Optional: File or area

pruefservice.agent.stand.liste

Most recent status per agent (silent after 30 minutes without report) and history of recent reports.

Rollen: Betreiber

  • verlauf: Optional: how many history lines, default 40

partnerpool

pruefservice.partnerpool.liste

Partner pools with members and roles (pruefer | assistenz | beides); with kundeId additionally the partners selectable for that customer.

Rollen: Betreiber

  • kundeId: Optional: Audit customer

pruefservice.partnerpool.anlegen

Create partner pool: name, beschreibung, inhaberKundeId (organisation the pool belongs to; empty = operator). [modifies data]

Rollen: Betreiber · verändert Daten

  • name *: Name, 2–80 characters
  • beschreibung: Optional
  • inhaberKundeId: Optional: Audit customer

pruefservice.partnerpool.mitglied

Set partner in pool (rolle pruefer | assistenz | beides) or remove (rolle null). Agencies, organisations, hosters only. [modifies data]

Rollen: Betreiber · verändert Daten

  • poolId *: Pool
  • kundeId *: Partner (Audit customer)
  • rolle: pruefer | assistenz | beides | null (entfernen)

pruefservice.partnerpool.zuordnen

Assign partner pool to a customer (poolId) or remove assignment (poolId null) — customer selects auditor organisation and assistance from this. [modifies data]

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer
  • poolId: Pool-Kennung oder null (Zuordnung entfernen)

insel

pruefservice.insel.stand

Island operation (Block 21): instance type of this instance (zentrale | insel), identifier, billing transfer method and — on an island — license status (gueltig | gnade | abgelaufen | ungueltig).

Rollen: Betreiber

pruefservice.insel.abrechnung.vorschau

Counters of one month (YYYY-MM, default previous month) as they would appear in billing report — numbers only, nothing stored.

Rollen: Betreiber

  • monat: Optional: YYYY-MM, default previous month

pruefservice.insel.abrechnung.erstellen

Island only: create monthly billing report (hash chain, signature, append-only) and with transfer method push send to central; with holen stays for download (uebermitteln:true forces push). [modifies data]

Rollen: Betreiber · verändert Daten

  • monat: Optional: YYYY-MM, default previous month
  • uebermitteln: Optional: an die Zentrale schicken (Vorgabe: ja bei push)

pruefservice.insel.liste

Central: all islands (identifier, hoster, transfer method, license end, count of reports, last month).

Rollen: Betreiber

pruefservice.insel.anlegen

Central: create or renew island for hoster: kennung, oeffentlicherSchluessel (PEM of island from tools/abrechnung_export.mjs --schluessel), kundeId of hoster, uebergabe (push | holen), lizenzBis. [modifies data]

Rollen: Betreiber · verändert Daten

  • kennung *: Island identifier (a-z, 0-9, -)
  • oeffentlicherSchluessel *: Island's public Ed25519 key, PEM
  • kundeId: Optional: Hoster's audit customer
  • uebergabe: push | holen
  • lizenzBis: Optional: YYYY-MM-DD

pruefservice.insel.bericht.einspielen

Central, transfer method holen: check and store billing report delivered by hoster ({ bericht, signatur }). [modifies data]

Rollen: Betreiber · verändert Daten

  • bericht *: Der Bericht
  • signatur *: Island signature (base64)

pruefservice.insel.berichte

Billing reports (all islands or one kennung), newest first: month, method, hash, counters.

Rollen: Betreiber

  • kennung: Optional: only this island
  • limit: Optional, default 24

pruefservice.insel.flotte.stand

Island: the fleet report as it would be sent now (signed, nothing stored) plus what was last sent and the central's answer — literally, so the hoster sees exactly what leaves the island. Central: use insel.flotte.liste.

Rollen: Betreiber

pruefservice.insel.flotte.senden

Island only: create and send the fleet report now (INSEL_FLOTTE=aus → not sent, said so). [modifies data]

Rollen: Betreiber · verändert Daten

pruefservice.insel.flotte.liste

Central: fleet reports of all islands or one (newest first): version, license state, health, target projects, optional 30-day sums.

Rollen: Betreiber

  • kennung: Optional: only this island
  • limit: Optional, default 50

Dokumentation und Fragen

pruefservice.doku.gespraech.offen

Open operator messages from the AManager (/dash/pruefservice/amanager, formerly documentation archive): per topic (file path or frage:NN) text, time and — if commented at a text location — anker {tag, index, zitat} (quote is the location in file), oldest first. Read sets gesehenAm (operator sees "seen"); nurLesen: true omits the mark. Reply with doku.gespraech.antwort.

Rollen: Betreiber · verändert Daten

  • limit: höchstens so viele, Vorgabe 50
  • nurLesen: ohne gesehen-Marke

pruefservice.doku.gespraech.antwort

Claude's reply to operator message in documentation archive: stores reply in same topic and marks message as answered.

Rollen: Betreiber · verändert Daten

  • id *: Operator message UUID
  • text *: Reply text, at most 8000 characters

pruefservice.doku.fragen

Open questions from docs/TODOS-PROGRAMM.md as documentation page shows them: number, title, whether operator answer is recorded.

Rollen: Betreiber

review

pruefservice.review.liste

Review jobs from the AManager (tab "Review"): what still has to be checked after a change. Per job: kennung (roadmap checkbox), titel, beschreibung (the job), aenderung (the change it refers to), erkennung (how to tell the result), wer (betreiber | agent), stand (offen | laeuft | erledigt | befund), ergebnis, beleg. Sorted: running first, then open, findings, done last.

Rollen: Betreiber

  • offen: nur offene und laufende
  • kurz: short form per job: id, kennung, titel, stand, wer (without the long texts); use it for an overview

pruefservice.review.anlegen

Create a review job (or update the texts of the job with the same kennung). titel is required; give beschreibung (what to do), aenderung (what it refers to) and erkennung (how to tell the result) — without erkennung the check is a feeling, and the list marks the job incomplete.

Rollen: Betreiber · verändert Daten

  • kennung: Roadmap checkbox, e.g. 42.1 — empty for a job without one
  • titel *: What has to be checked
  • beschreibung: The job: what to do
  • aenderung: The change it refers to (checkbox, commit, date)
  • erkennung: How to tell the result
  • wer: betreiber | agent, default agent

pruefservice.review.stand

Set the state of a review job: offen, laeuft, erledigt (all in order) or befund (something is wrong). ergebnis holds what the check produced — a finding is never fixed silently, it becomes a checkbox in the responsible block. Every change in the activity log.

Rollen: Betreiber · verändert Daten

  • id *: Review job UUID
  • stand *: offen | laeuft | erledigt | befund
  • ergebnis: What the check produced
  • beleg: Commit, image or address

Verrechnung

pruefservice.verrechnung.stand

All billable values as service applies them today: assistance (hourly rate, starting quota, commission), compensation per accompanied partial seal, credit per manually audited page, price and base per add-on service with release.

Rollen: Betreiber

pruefservice.verrechnung.setzen

Set billable value — same function as profile: gruppe assistenz (hourly € , quota quarter-hours, commission %), verguetung (active, accompaniment €), pruefer_person (page €) or zusatz (id, price € per page, base €). Validated with upper limits; add-on release and cash prices remain separate. Every change in activity log.

Rollen: Betreiber · verändert Daten

  • gruppe *: assistenz | verguetung | pruefer_person | zusatz
  • id: For zusatz: menschlich | kanzlei | cyber | umsetzungshilfe | hosting
  • stundensatz: Euro per hour, e.g., 100.00
  • kontingent: Quarter-hours, e.g., 8
  • provision: Percent, e.g., 20
  • aktiv: Vergütung aktiv
  • begleitung: Euro per partial seal
  • seite: Euro per page
  • preis: Euro per audited page
  • basis: Base price in euro, empty = none

erklaerung

pruefservice.erklaerung.stand

Statement on accessibility of audit case (EU model statement 2018/1523): latest version with status, numbers, gaps, address of hosted page, all versions, prefilled information and what is missing before publication.

Rollen: Betreiber, Agentur, Organisation

  • auftragId *: Audit case

pruefservice.erklaerung.erzeugen

Generate new version of accessibility statement — from case's latest completed run and `angaben` (object like in erklaerung.stand: stelle, land, bundesland, kontaktName, kontaktEmail, kontaktTelefon, kontaktAnschrift, feedbackUrl, durchsetzungName/Url/Email, belastung[], ausserhalb[] per {inhalt, grund, alternative}, abhilfe, bestaetigung, veroeffentlichtAm, hilfsangebote). Missing information from previous version. Append-only: older versions preserved.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • auftragId *: Audit case
  • angaben: Angaben der Stelle (siehe Beschreibung); leer = Vorversion
  • sprache: de or en (default: customer's language)

pruefservice.erklaerung.html

HTML of a version of statement (without version: the latest) — for insertion into own system.

Rollen: Betreiber, Agentur, Organisation

  • auftragId *: Audit case
  • version: Version number; empty = latest

dossier

pruefservice.dossier.anlegen

Create a dossier: a shareable folder /vorschau/<token> showing euid pages, the sample case and own explanatory pages in the recipient's look. Recipient from zielkunde, anfrage or kunde (id) or free (name, email); art allgemein|hoster|organisation|agentur presets the entries; fristTage 0 = unlimited (default 30); optional passwort. Returns id, token and url once.

Rollen: Betreiber · verändert Daten

  • titel *: Title, 1–120 characters
  • art: allgemein, hoster, organisation or agentur
  • empfaengerArt: zielkunde, anfrage, kunde or keiner
  • empfaengerId: UUID of the recipient row (zielkunde, anfrage or audit customer)
  • empfaengerName: Free recipient name
  • empfaengerEmail: Free recipient e-mail
  • intro: Intro shown above the folder and in the mail
  • fristTage: Days until expiry, 0 = unlimited
  • theme: Optional look of the recipient: marke, logo_url, akzent, akzent_hell, akzent_kontrast, hintergrund, flaeche, text, rahmen, infobar (hex colours; contrast is checked, never the issuer)
  • passwort: Optional password (6–200 characters), handed over separately
  • notiz: Internal note
  • eintraege: Optional entries [{ art: seite|akte|eigen, pfad (euid path or case area), seiteId (library page), runId (real run of the recipient), titel, intro }]; omitted = preset of the art, [] = look only

pruefservice.dossier.empfaenger

Set or clear the recipient of an existing dossier: art kunde|zielkunde|anfrage with id, or keiner. Only with a recipient does a case entry show THEIR audit file instead of the sample one; entries carrying a real run of someone else are refused (fremd and unbekannt are the same answer).

Rollen: Betreiber · verändert Daten

  • dossierId *: Dossier UUID
  • art *: kunde, zielkunde, anfrage or keiner
  • id: UUID of the recipient (not with keiner)
  • name: Name, overrides the one on file
  • email: Email, overrides the one on file

pruefservice.dossier.liste

All dossiers with counters: entries, views, accesses, last access, open comments; status aktiv|widerrufen|abgelaufen filter.

Rollen: Betreiber

  • status: aktiv, widerrufen or abgelaufen
  • limit: at most 500

pruefservice.dossier.lesen

One dossier with its entries, comments and url (the token is derived server-side).

Rollen: Betreiber

  • dossierId *: Dossier UUID

pruefservice.dossier.eintraege

Replace the entries of a dossier (ordered): [{ art: seite|akte|eigen, pfad, seiteId, runId, titel, intro, abschnitt }] — abschnitt groups the sidebar (e.g. "Das Produkt", "Der Kundenbereich", max 60 chars). A real run (runId) is accepted only when it belongs to the audit customer behind the recipient.

Rollen: Betreiber · verändert Daten

  • dossierId *: Dossier UUID
  • eintraege *: Entries in order

pruefservice.dossier.widerrufen

Revoke a dossier: the link answers 404 from now on. Idempotent.

Rollen: Betreiber · verändert Daten

  • dossierId *: Dossier UUID

pruefservice.dossier.senden

Send the link by mail to the recipient (never to a target customer without inquiry, never the password); marks the dossier as sent.

Rollen: Betreiber · verändert Daten

  • dossierId *: Dossier UUID

pruefservice.dossier.kommentare

Comments of recipients across all dossiers, open ones first (anker.p = page of the comment); with antwort and erledigt:true a comment is answered and closed; with loeschen:true it is deleted.

Rollen: Betreiber · verändert Daten

  • kommentarId: Comment UUID to answer
  • antwort: Answer text
  • erledigt: true = answer and close
  • loeschen: true = delete the comment (also answered ones)
  • limit: at most 1000

pruefservice.dossier.bilder

Gallery of a dossier: with dossierId the images FROM THE AUDIT of the recipient (page screenshots per viewport and evidence images of the audit folder, per akte entry with a real run — nothing uploaded); without dossierId the library images of the page builder (Mig 363). With bildId and beschreibung/eintragId a library image is changed, with bildId and entfernen:true removed.

Rollen: Betreiber · verändert Daten

  • dossierId: Dossier UUID (omit for library images)
  • bildId: Image UUID to change or remove
  • beschreibung: New description (max 400 chars)
  • eintragId: Entry UUID or empty string for the whole dossier
  • entfernen: true = remove the image (row and file)

pruefservice.dossier.seiten

Library of own explanatory pages (building-block JSON, @dignis/baukasten): list; with seite a page is created (seiteId omitted) or updated (new version). The page is validated against the euid building block set.

Rollen: Betreiber · verändert Daten

  • seiteId: Page UUID to update
  • seite: Page JSON { version: 1, id, titel, sprache, elemente: [{ id, typ, werte }] }
  • limit: at most 500

kriterium

pruefservice.kriterium.vorschlagen

Propose a NEW criterion the service should measure in future (a new HTML element, an SEO condition, a legal requirement) — not bound to a case (for a wrong or missing measurement of one run use messung.melden). bereich = audit area code or unklar, titel, beschreibung (20–4000 chars), optional beispielSchlecht/beispielGut (source snippets), quelle (standard, law, vendor docs), begruendung. The operator reviews it; accepted proposals become candidates in the criteria library.

Rollen: Betreiber, Agentur, Organisation, Prüfende Person · verändert Daten

  • bereich *: Audit area code: a11y, dsgvo, seo, geo, indexierung, responsive, cwv, software — or unklar
  • titel *: Short title (3–200 chars)
  • beschreibung *: What should be measured and how it can be detected (20–4000 chars)
  • beispielSchlecht: Source example: wrong (optional, ≤6000)
  • beispielGut: Source example: right (optional, ≤6000)
  • quelle: Standard, law, guideline or vendor documentation (optional)
  • begruendung: Why it matters (optional)

pruefservice.kriterium.vorschlaege

All criterion proposals with state and operator answer, filtered by stand (neu, in_pruefung, angenommen, abgelehnt, offen = neu+in_pruefung), limit (≤500).

Rollen: Betreiber

  • stand: neu, in_pruefung, angenommen, abgelehnt or offen
  • limit: at most 500

pruefservice.kriterium.vorschlag.stand

Set the state of a criterion proposal along the state machine (neu → in_pruefung | angenommen | abgelehnt; in_pruefung → angenommen | abgelehnt; abgelehnt → in_pruefung; angenommen is final) with an answer to the proposer. angenommen requires kandidatKennung (lowercase id of the candidate in the library, becomes <bereich>:<kennung>); a proposal with bereich unklar cannot be accepted — answer and reject instead.

Rollen: Betreiber · verändert Daten

  • vorschlagId *: Proposal UUID
  • stand *: neu, in_pruefung, angenommen, abgelehnt
  • antwort: Answer to the proposer (≤4000 chars)
  • kandidatKennung: Candidate id for angenommen (2–80 chars, lowercase)

kriterien

pruefservice.kriterien.register.liste

Criteria register: every single check of the service with its stable identifier WCE-YYYY-NNNNN (like a CVE id), audit area, source in the measurement core (<bereich>:<kennung>), name, state (reserviert = candidate, veroeffentlicht = measured since an engine version, zurueckgezogen = withdrawn with successor), references. Public data; filter by bereich, stand, suche, limit.

Rollen: Betreiber, Agentur, Organisation, Prüfende Person

  • bereich: Audit area code
  • stand: reserviert, veroeffentlicht or zurueckgezogen
  • suche: Text filter over identifier, source, name
  • limit: at most 5000

pruefservice.kriterien.register.eintrag

One register entry by its identifier WCE-YYYY-NNNNN with its history (append-only).

Rollen: Betreiber, Agentur, Organisation, Prüfende Person

  • kennung *: WCE-YYYY-NNNNN

pruefservice.kriterien.register.reservieren

Reserve an identifier for a candidate criterion (operator): bereich, kennung (the future source id in the measurement core, lowercase), name, optional referenzen [{art norm|gesetz|doku|beispiel|sollfehler|quelle, titel, url https}], gemeldetVon, vorschlagId. Numbers are assigned sequentially per year under a lock; a source id is registered once.

Rollen: Betreiber · verändert Daten

  • bereich *: Audit area code
  • kennung *: Source id in the measurement core
  • name: Name
  • referenzen: References
  • gemeldetVon: Reported by (optional)
  • vorschlagId: Proposal UUID (optional)

pruefservice.kriterien.register.stand

Set the state of a register entry (operator): veroeffentlicht (measured since engineVersion, default the current engine) or zurueckgezogen (until engineVersion, optional nachfolger WCE-…). reserviert → veroeffentlicht | zurueckgezogen; veroeffentlicht → zurueckgezogen; zurueckgezogen is final. Every change is recorded in the history.

Rollen: Betreiber · verändert Daten

  • kennung *: WCE-YYYY-NNNNN
  • stand *: veroeffentlicht or zurueckgezogen
  • engineVersion: Engine version, default current
  • nachfolger: Successor WCE-YYYY-NNNNN (for zurueckgezogen)

pruefservice.kriterien.register.referenzen

Replace the references of a register entry and/or set its name (operator): referenzen [{art, titel, url}], name.

Rollen: Betreiber · verändert Daten

  • kennung *: WCE-YYYY-NNNNN
  • referenzen: References (replaces the list)
  • name: Name

pruefservice.kriterien.register.abgleich

Reconcile the register with the criteria library (operator): every library criterion without an identifier gets one (veroeffentlicht since the current engine), deterministic order, idempotent. Returns what was assigned per audit area and the remaining gaps.

Rollen: Betreiber · verändert Daten

pruefservice.kriterien.liste

Library of audit criteria: every rule, WCAG criterion and finding code of the measurement core per audit area, with weight, topic, reason, impact and measure — code registers merged with the operator’s additions (pruef_kriterium_text). Optional bereich (a11y, seo, geo, dsgvo, indexierung, software, cwv, co2, responsive) and suche (full text). "—" means the source has nothing.

Rollen: Betreiber

  • bereich: Audit area code; omit for all
  • suche: Full-text filter over identifier, name, topic, reason, impact, measure

pruefservice.kriterien.setzen

Add or replace the operator’s content for one criterion of the library — same function as the workplace form: thema, grund, auswirkung, massnahme (each replaces the code text while set; empty string resets to the code text), notiz (internal), beispiele (list of {titel, schlecht, gut, hinweis} — bad → good with source code), erfahrungen (list of {quelle, datum YYYY-MM-DD, text} from other websites or case files), grundlagen (additional measurement bases: quelltext, dom, netzwerk, kopfzeilen, fremddienst, sonde, mensch). Lists replace the stored list; empty list clears. The report (Prüfakte) and the task list read grund and massnahme from here first. Only identifiers the catalogue knows. Every change in activity log. [modifies data]

Rollen: Betreiber · verändert Daten

  • bereich *: Audit area code
  • kennung *: Identifier as listed by kriterien.liste (rule id, WCAG number, finding code, responsive check)
  • thema: Topic
  • grund: Why it is audited
  • auswirkung: Impact for the website
  • massnahme: What to do
  • notiz: Internal note
  • beispiele: Examples {titel, schlecht, gut, hinweis}
  • erfahrungen: Experiences {quelle, datum, text}
  • grundlagen: Additional bases (ids)

engine

pruefservice.engine.releases

Engine releases of the measurement core: version (YEAR.MONTH.N, as stored on every run), date, state (entwicklung, produktion), note, change list in register ids (neu, geaendert, zurueckgezogen). Newest first; the running production version is ENGINE_VERSION.

Rollen: Betreiber, Agentur, Organisation, Prüfende Person

pruefservice.engine.release.anlegen

Describe the next engine release (operator, state entwicklung): version (optional, default next in this month), datum (YYYY-MM-DD), notiz, aenderungen { neu, geaendert, zurueckgezogen } as register ids WCE-YYYY-NNNNN. A version must lie after the current production release.

Rollen: Betreiber · verändert Daten

  • version: YEAR.MONTH.N (optional)
  • datum: YYYY-MM-DD (optional)
  • notiz: Release note
  • aenderungen: { neu: [], geaendert: [], zurueckgezogen: [] }

pruefservice.engine.release.aendern

Change note and change list of a release in development (operator); a released version only takes a new note.

Rollen: Betreiber · verändert Daten

  • version *: YEAR.MONTH.N
  • notiz: Release note
  • aenderungen: Replaces the change list

pruefservice.engine.release.freigeben

Release a version to production (operator). Requires the deployed code to carry this version (lib/seo/engine_version.ts), otherwise FREIGABE_VERSION. Register entries listed as neu become veroeffentlicht since this version, zurueckgezogen entries are withdrawn.

Rollen: Betreiber · verändert Daten

  • version *: YEAR.MONTH.N

mitwirkung

pruefservice.mitwirkung.stand

Contribution vouchers of an audit customer (kundeId): ledger lines with reason mitwirkung (criterion proposed and measured, wrong measurement reported and fixed), each with amount, expiry and contribution key; plus the current rules (amounts per kind, quarterly cap, expiry months — 0 € until question 62 is answered).

Rollen: Betreiber

  • kundeId *: Audit customer UUID

nachweis

pruefservice.nachweis.stand

Domain proofs of an audit customer: per domain status, method (dns, datei, manuell), verified at, valid until.

Rollen: Betreiber

  • kundeId *: Audit customer UUID

pruefservice.nachweis.token

Create (or return, stable) the domain proof token for (customer, domain): the value goes as DNS TXT record under dnsName or as the only line of the file at dateiPfad on the domain. Then call nachweis.pruefen.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • domain *: Domain (host or https URL)

pruefservice.nachweis.pruefen

Verify the domain proof, all ways in order: a confirmed account with an e-mail address at the domain (konto), the imprint of the website naming the customer firm (impressum), the whois registrant naming the firm (whois) — then the customer token as DNS TXT or file under /.well-known/. Success is stored at the customer with its evidence (valid for a limited time) and unlocks zertifikat.ausstellen; no way matching is { ok:false, gruende[] }, not an error.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • domain *: Domain (host or https URL)

pruefservice.nachweis.manuell

Record a manual domain proof (written order, audit rules §7) with person and reason: operatorId = auth_user.id of the recording operator (taken from a personal access when omitted; the operator admin token must pass it), begruendung required.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • domain *: Domain (host or https URL)
  • begruendung *: Reason, e.g. written order of <date>
  • operatorId: auth_user.id of the operator (Operator only; personal accesses take their own)

kulanz

pruefservice.kulanz.liste

Goodwill exemptions of a case: criterion key, further keys of the same matter, reason, granted/revoked. Active ones are excluded from the seal gates (score, departments, K.O.); the measured value stays visible.

Rollen: Betreiber

  • auftragId *: Case UUID
  • nurAktive: true: only active exemptions

pruefservice.kulanz.gewaehren

⚠ ISSUES A SEAL (indirectly): exempt ONE matter of a case from the seal assessment with a mandatory reason — key = criterion as in the study (<bereich>:<kennung>, e.g. a11y:2.1.2), weitere = further keys of the same matter in the same audit area (e.g. a11y:regel:a11y.tastaturfalle, ≤5), grund (20–2000 chars, shown openly in the file and on the verification page), meldungId (optional report it stems from). At most one active exemption per audit area; the score counts without the criterion (the measured value stays visible). [modifies data]

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • key *: Criterion key <bereich>:<kennung>
  • weitere: Further keys of the same matter, same audit area
  • grund *: Reason (20–2000 chars)
  • meldungId: Report UUID this exemption stems from (optional)

pruefservice.kulanz.aufheben

Revoke a goodwill exemption with a reason — the row stays as evidence, the criterion counts again. [modifies data]

Rollen: Betreiber · verändert Daten

  • auftragId *: Case UUID
  • kulanzId *: Exemption UUID
  • grund: Reason for revoking

anfragen

pruefservice.anfragen.liste

Inquiry database (organisation, agency, webhoster, interested) from /anfrage and /registrieren: stand (neu, kontakt, angelegt, abgelehnt, offen = neu+kontakt), limit (≤500). Interface: /dash/pruefservice/anfragen.

Rollen: Betreiber

  • stand: neu, kontakt, angelegt, abgelehnt or offen
  • limit: at most 500

pruefservice.anfragen.stand

Set status and note of inquiry (neu, kunde, agentur, organisation, partner, werber, pruefer, abgelehnt) or create an audit customer from it with kunde:true (needs a website; status becomes kunde, agentur or organisation). Target customers are the operator's own address list — nothing writes there automatically.

Rollen: Betreiber · verändert Daten

  • anfrageId *: Inquiry UUID
  • stand: neu, kunde, agentur, organisation, partner, werber, pruefer, abgelehnt
  • notiz: Operator note
  • kunde: true: als Prüfkunden anlegen (braucht eine Website)

zielkunden

pruefservice.zielkunden.liste

Target customers (potential customers from lists) by filter: suche, land, branche, typ, quelle, prioritaet (A/B/C), sichtung (offen, gesichtet, interessant, vielleicht, nicht), mitEmail, mitWebsite, befoerdert, zielgruppeId, jeDomain, limit (≤500), offset. Interface: /dash/pruefservice/zielkunden.

Rollen: Betreiber

  • suche: Free text on name, city, postal code, email, domain, note
  • land: ISO-2
  • branche: Industry (identifier)
  • typ: Type (verband, kammer, gemeinde, firma …)
  • quelle: Source of import
  • prioritaet: A, B or C
  • sichtung: offen, gesichtet, interessant, vielleicht, nicht
  • mitEmail: nur mit / ohne E-Mail
  • mitWebsite: nur mit / ohne Website
  • befoerdert: schon Prüfkunde (true) oder noch keiner (false)
  • zielgruppeId: Only members of this target group
  • jeDomain: eine Zeile je Domain
  • limit: at most 500
  • offset: Offset
  • csv: true: den Filter als CSV-Text liefern (ohne Seitenbegrenzung)

pruefservice.zielkunden.facetten

Count of target customer directory per country, industry, type, source, priority and totals (total, with email, with website, screened, interesting, audit customers) plus target groups.

Rollen: Betreiber

pruefservice.zielkunden.import

Import target customers: `eintraege` (objects with name, land, branche, typ, prioritaet, email, telefon, website, ort, plz, notiz, quelleKennung) or `csv` (text in format docs/marketing/zielgruppen.csv or BusinessScraper). Same (quelle, identifier) updates master data, screening and promotion remain. At most 5000 per call.

Rollen: Betreiber · verändert Daten

  • quelle *: List identifier (zielgruppen, herold, wko …)
  • eintraege: Einträge als Objekte
  • csv: CSV text as alternative to eintraege

pruefservice.zielkunden.sichtung

Screen one target customer: sichtung 3 interessant, 2 vielleicht, 1 nicht, 0 back to unscreened; groesse klein/mittel/gross; notiz. Without id: next unscreened entry (filter like zielkunden.liste).

Rollen: Betreiber · verändert Daten

  • id: Target customer id
  • sichtung: 3, 2, 1 or 0
  • groesse: klein, mittel, gross
  • notiz: Screening note
  • land: Filter for next entry
  • branche: Filter
  • quelle: Filter
  • prioritaet: Filter

pruefservice.zielkunden.befoerdern

Make target customer an audit customer — same path as onboarding (createKunde); needs website, final; same domain links to existing audit customer.

Rollen: Betreiber · verändert Daten

  • id *: Target customer id

pruefservice.zielkunden.zielgruppe

Create target group (name, beschreibung) or fill (zielgruppeId + ids of target customers); without input, list of target groups with member count. A target group is a selection for mail, LinkedIn, procurement or Odoo lead import — never a mailing list.

Rollen: Betreiber · verändert Daten

  • name: Name of new target group
  • beschreibung: Purpose of selection
  • zielgruppeId: Existing target group
  • ids: Zielkunde-ids, die aufgenommen werden

Einwilligung

pruefservice.einwilligung.stand

Status of consent of one email address for one purpose (newsletter): keine, offen (granted, confirmation pending), verfallen, aktiv, widerrufen. Only when aktiv may advertising go to that address.

Rollen: Betreiber

  • email *: Email address
  • zweck: Zweck (Vorgabe newsletter)

pruefservice.einwilligung.liste

All addresses with ACTIVE consent for one purpose — the only permitted source for a mailing list.

Rollen: Betreiber

  • zweck: Zweck (Vorgabe newsletter)

pruefservice.einwilligung.widerruf

Withdraw consent of an address (e.g. at person's request). Writes new line to chain; if no active or open consent, nothing happens. [modifies data]

Rollen: Betreiber · verändert Daten

  • email *: Email address
  • zweck: Zweck (Vorgabe newsletter)
  • grund: Optional: why, in one sentence

Odoo

pruefservice.odoo.stand

Odoo integration: switch pruefservice.odoo, mailing list, whether access in vault is complete (url, db, benutzer, api_key) — never the values.

Rollen: Betreiber

pruefservice.odoo.abgleich

Run Odoo synchronisation now (otherwise every 15 min via heartbeat): leads per audit customer, mailing contacts from active consent, withdrawals from Odoo as withdrawal back. Without switch or access, nothing runs. [modifies data]

Rollen: Betreiber · verändert Daten

brevo

pruefservice.brevo.stand

Brevo integration (Mig 359): switch pruefservice.brevo, contact list id, whether the api key is in the vault (brevo/api_key) — never the key.

Rollen: Betreiber

pruefservice.brevo.abgleich

Run Brevo synchronisation now (otherwise every 15 min via heartbeat): contacts into the list only from active consent, blacklist or list exit in Brevo as withdrawal back. Without switch, list or key, nothing runs. [modifies data]

Rollen: Betreiber · verändert Daten

push

pruefservice.push.stand

Web push for the PWA (Mig 361): whether the VAPID pair is in the vault (pwa/vapid_public, vapid_private — never the keys), registered devices, last delivery.

Rollen: Betreiber

pruefservice.push.probe

Send a test notification to every registered device of the operator (title, one sentence, link — no customer data). Says whether keys and devices exist and how many were reached. [sends notifications]

Rollen: Betreiber · verändert Daten

freefinance

pruefservice.freefinance.stand

FreeFinance integration (Mig 360): switch pruefservice.freefinance, environment, mandant, whether access in vault is complete (client_id, client_secret, mandant) — never the values. WHMCS stays the invoicing circle; FreeFinance mirrors each WHMCS invoice as external document.

Rollen: Betreiber

pruefservice.freefinance.probe

Read-only probe of the FreeFinance access: token, mandant UUID, enabled modules, first customers and invoices. Nothing is written.

Rollen: Betreiber

pruefservice.freefinance.abgleich

Run FreeFinance synchronisation now (otherwise hourly via heartbeat): each paid payment with a WHMCS invoice becomes an external invoice WHMCS-<id> (date, net line, account and 20 % from the mandant), customer per audit customer found by e-mail or created from real master data. Without switch or access, nothing runs. [modifies data]

Rollen: Betreiber · verändert Daten

uebergabe

pruefservice.uebergabe.schalter

Switch a hand-over on or off — same function as the settings page: art odoo (CRM lead and mailing list), brevo (newsletter list) or freefinance (bookkeeping); aktiv plus liste (list id for odoo and brevo, omit to clear; none for freefinance). Access values stay in the vault (settings page or vault script); without them nothing runs. Every change in activity log. [modifies data]

Rollen: Betreiber · verändert Daten

  • art *: odoo | brevo | freefinance
  • aktiv *: on or off
  • liste: List id (odoo mailing list, brevo list); omit to clear

Vorlese-Arbeiter

pruefservice.vorlese.aufgabe

Next screen-reader task for machine of type vorlese: one completed run of full audit (last 60 days, no vault access) with up to 5 core pages, 30 minutes reserved. null if nothing pending.

Rollen: Betreiber · verändert Daten

  • maschineId *: Machine UUID (maschine.anmelden)

pruefservice.vorlese.beleg

Attach spoken text of page as evidence to run (append-only, once per run and page; only the machine that reserved run). Reports which pages of task are still open.

Rollen: Betreiber · verändert Daten

  • maschineId *: Machine UUID
  • runId *: Run UUID from task
  • url *: Page from task
  • zeilen *: gesprochene Zeilen (Text) in Reihenfolge
  • werkzeug: Optional: NVDA version, Guidepup, browser
  • dauerMs: Optional: Reading duration in ms

pruefservice.vorlese.stand

Screen-reader status of a run: reservation, evidence per page with spoken text, what remains open.

Rollen: Betreiber

  • runId *: Run UUID

zugang

pruefservice.zugang.anlegen

Create MCP access for an audit customer. Response contains plaintext EXACTLY ONCE (prefix euid_mcp_); only digest stored. Role: defaults from customer type (agentur | organisation), narrower (tester) allowed, wider never. Customer access may create only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID who owns the access
  • name *: Access name: 2–40 characters, a-z, 0-9, hyphen
  • rolle: Optional: agentur | organisation | tester (Vorgabe aus der Kundenart)
  • notiz: Optional: Purpose or computer, at most 500 characters

pruefservice.zugang.liste

MCP accesses of an audit customer: name, role, created, last used, uses, revoked. Never plaintext.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Audit customer UUID

pruefservice.zugang.widerrufen

Revoke MCP access; takes effect immediately, row remains as evidence. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Audit customer UUID
  • zugangId *: Access UUID (from zugang.liste)

pruefservice.zugang.angelegtvon

Reassign the "created by" label of an MCP access ([37.45]; e.g. an automatic file token that recorded the operator's account). Display column only — fingerprint, role and scope stay. Operator only. [modifies data]

Rollen: Betreiber · verändert Daten

  • zugangId *: Access UUID
  • angelegtVon *: New "created by" text, e.g. an account e-mail or akte:automatisch

hook

pruefservice.hook.ereignisse

Hook event catalogue: each subscribable type with area and text (filter allows types and prefixes like ticket.*).

Rollen: Betreiber, Agentur, Organisation

pruefservice.hook.anlegen

Create webhook for organisation: https address, optional event filter and name. Response contains secret EXACTLY ONCE (thereafter only in organisation's vault). Deliveries are signed (X-Euid-Signature: t=<unix>,v1=<hmac-sha256(secret, t.body)>). Customer access only for its own audit customer. [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID (audit customer)
  • url *: https address of recipient
  • ereignisse: Optional: Arten oder Präfixe (ticket.*); leer = alles Abonnierbare
  • bezeichnung: Optional: Hook name

pruefservice.hook.liste

Hooks of organisation: address, filter, active/paused, error sequence. Never secret.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Organisation UUID

pruefservice.hook.testen

Test delivery (event hook.test) to webhook immediately; response: status, HTTP code, duration, error.

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID
  • hookId *: Hook UUID

pruefservice.hook.zustellungen

Deliveries of webhook, newest first: event, status (wartet/ok/fehler/aufgegeben), attempts, HTTP code, duration, error.

Rollen: Betreiber, Agentur, Organisation

  • kundeId *: Organisation UUID
  • hookId *: Hook UUID
  • limit: Optional: at most this many (default 50)

pruefservice.hook.entfernen

Remove webhook (with secret in vault and deliveries). [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID
  • hookId *: Hook UUID

pruefservice.hook.fortsetzen

Resume paused webhook (error sequence to 0). [modifies data]

Rollen: Betreiber, Agentur, Organisation · verändert Daten

  • kundeId *: Organisation UUID
  • hookId *: Hook UUID

agenten

pruefservice.agenten.aufgaben.liste

Tasks of the agent manager (roadmap checkboxes with id [<block>.<n>]): state, risk class, evidence commit, block; filters block, stand, nurOffen. The roadmap file is the plan, the table is the runtime state.

Rollen: Betreiber

  • block: Block key, e.g. 24 or 6c
  • stand: only this state
  • nurOffen: exclude ausgeliefert and verworfen
  • limit: at most this many (1–2000, default 500)
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.historie

History of a task (append-only): created, changed, state, evidence, disappeared, back in plan — with agent, time and data. Newest first.

Rollen: Betreiber

  • kennung *: Task id [<block>.<n>], e.g. 24.2
  • limit: at most this many history rows (1–1000, default 100)
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.import

Reconcile the roadmap of a target project (default: this repo, docs/TODOS-PROGRAMM.md + docs/AGENT-MANAGER-PROGRAMM.md) with the task table: create, update (title, block, checkbox, evidence), disappeared, back in plan — idempotent, every movement in the history. Refuses when ids are missing or duplicated (then tools/fahrplan_kennungen.mjs --schreiben).

Rollen: Betreiber · verändert Daten

  • wer: Agent triggering the import (session name)
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.stand

Set the state of a task — only along the state machine (frei → vergeben → in_arbeit → wartet_freigabe → gemerged → ausgeliefert; pausiert, blockiert, verworfen), with agent and optionally evidence and note. While a run holds the task, the claim token is required (TOKEN_NOETIG, FENCE_ALT for a superseded claim). ausgeliefert only with a commit hash that git cat-file -e confirms.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • stand *: the new state
  • agent *: Session name of the window
  • beleg: Commit hash
  • notiz: Short reason
  • token: Claim token from agenten.aufgaben.claim (required while a run holds the task)
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.claim

Claim a task for this window (agent = session name, sitzung = session id, pid): returns the claim token ONCE (art neu or uebernahme), sets in_arbeit, lease 30 minutes. Same identity again: art gleich, lease renewed, token stays with the holder. Another window with a valid lease: CLAIM_BELEGT. Expired lease: uebernahme — new run with fence+1, the old token is dead. Keep the token; heartbeat, release and stand require it.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • agent *: Session name of the window (ListAgents)
  • sitzung: Session id (CLAUDE_CODE_SESSION_ID)
  • pid: process id of the window, optional
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.heartbeat

Renew the lease of a claimed task (every 5 minutes while working). Requires the claim token; KEIN_RUN, FENCE_ALT, TOKEN_FALSCH or LEASE_ABGELAUFEN say why not.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • token *: Claim token
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.release

Give a claimed task back: nach = wartet_freigabe (run abgeschlossen; work is committed, evidence = commit hash), frei, pausiert, blockiert or verworfen (run abgebrochen). Requires the claim token; the task loses its run and can be claimed again.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • token *: Claim token
  • nach *: state after the release
  • ergebnis: One line: what was done or why it stops
  • beleg: Commit hash
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.aufgaben.runs

Runs: without kennung all running claims (who holds what until when); with kennung every run of that task, newest fence first, with predecessor on takeover.

Rollen: Betreiber

  • kennung: Task id [<block>.<n>], optional
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.stopp.liste

Active emergency stops of the agent manager: global (agent null) or per agent, with reason, who and when. A stopped agent gets no claim, no heartbeat, no state change; deploy and migrations refuse while a global stop is active. verlauf:true lists lifted stops too.

Rollen: Betreiber

  • verlauf: include lifted stops (newest first, 50)

pruefservice.agenten.stopp.setzen

Set an emergency stop — for one agent (agent = session name) or for all (agent empty). Reason is mandatory. An identical active stop is returned, not duplicated. [modifies data]

Rollen: Betreiber · verändert Daten

  • grund *: Why the stop is set — mandatory
  • wer *: Who sets it (operator account or agent)
  • agent: Session name of the agent to stop; empty = all agents

pruefservice.agenten.stopp.aufheben

Lift an active emergency stop by id, with who. [modifies data]

Rollen: Betreiber · verändert Daten

  • id *: Stop id
  • wer *: Who lifts it

pruefservice.agenten.freigabe.erteilen

Grant a human approval bound to an artefact: art (merge | deploy | ausnahme), commit hash (default: HEAD of the working copy), rules hash (SHA-256 of CLAUDE.md now, computed here), task version (fence of kennung, if given), who, reason. The approval expires by itself when commit, rules or task version differ. Rows are append-only; revoke with freigabe.widerruf. [modifies data]

Rollen: Betreiber · verändert Daten

  • art *: merge | deploy | ausnahme
  • wer *: Who approves
  • grund *: Reason — mandatory
  • kennung: Task id [<block>.<n>], optional (binds the task version)
  • artefaktHash: Commit hash 7–64 hex; default HEAD

pruefservice.agenten.freigabe.liste

Approvals, newest first; filters kennung and art. With pruefen:true also says whether a valid approval exists for art + artefaktHash (default HEAD) + current CLAUDE.md + task version, with the reasons if not (WIDERRUFEN, HASH_ABWEICHUNG, REGELN_GEAENDERT, VERSION_ALT, KEINE_FREIGABE).

Rollen: Betreiber

  • kennung: Task id, optional
  • art: only this kind
  • pruefen: check validity for art + artefaktHash
  • artefaktHash: Commit hash for the check; default HEAD
  • limit: at most this many (1–1000, default 100)

pruefservice.agenten.freigabe.widerruf

Revoke an approval by id, with who — final; the row stays. [modifies data]

Rollen: Betreiber · verändert Daten

  • id *: Approval id
  • wer *: Who revokes

pruefservice.agenten.kosten.liste

Costs of the agent windows (K14: raw token counts are the truth, cents are a versioned calculation): rows per model answer with run, task id, agent, model, tokens, cache, cents, price version; sum per model. Filters kennung, runId, agent, stunden (hours back). jeAufgabe:true instead returns the totals per task id (null = shared, no single run held). Never per person — an agent is a window.

Rollen: Betreiber

  • kennung: Task id [<block>.<n>]
  • runId: Run UUID
  • agent: Session name of the window
  • quelle: Billing source: 'abo' = window in the operator's subscription (cents are notional), 'api' = session with API key (real invoice; only these count against the cap)
  • stunden: only the last N hours
  • limit: at most this many rows (1–5000, default 500)
  • jeAufgabe: totals per task id over the last stunden (default 720)

pruefservice.agenten.akte.anlegen

Create the round file (Runden-Akte, K16) for a task: collects task, run, rules snapshot (CLAUDE.md hash), environment, git before/after with diff, protocol, gates, approvals, token costs into var/runden/<kennung>/R-<n>/ with manifest (SHA-256 per file, Merkle root), index.html and an append-only row in agent_akte. Secret scan aborts on any key or password (C30). anweisung, ergebnis, uebergabe are the human texts. [modifies data]

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • wer *: Who files it (session name or operator)
  • runId: Run UUID, default: newest run of the task
  • vorher: Commit before the round (default HEAD~1)
  • nachher: Commit after the round (default HEAD)
  • anweisung: Instruction text (Markdown)
  • ergebnis: Result text (Markdown)
  • uebergabe: Handover text (Markdown)

pruefservice.agenten.akte.liste

Round files (append-only register): task id, round, run, path, Merkle root, complete or not, who and when; optional filter kennung.

Rollen: Betreiber

  • kennung: Task id, optional

pruefservice.agenten.entscheidung.liste

Decision register (ADR files docs/entscheidungen/E-<year>-<n>.md with an append-only ledger): newest version per id with status (vorgeschlagen | entschieden | ersetzt | abgelehnt), source, replaced-by. pruefen:true also compares files against the ledger and lists deviations.

Rollen: Betreiber

  • pruefen: also check file ↔ ledger

pruefservice.agenten.entscheidung.anlegen

Record a decision (ADR: title, context, decision, alternatives, consequences, source — an operator instruction from the conversation with its date, or an evaluation). Writes the file and ledger version 1; ersetzt marks the replaced decision. Status default entschieden; use vorgeschlagen when the operator has not decided yet. [modifies data]

Rollen: Betreiber · verändert Daten

  • titel *: Title
  • kontext *: Context — why the question came up
  • entscheidung *: The decision
  • alternativen: Alternatives considered and why rejected
  • konsequenzen: Consequences: guards, follow-ups
  • quelle *: Source with date, e.g. "Betreiber 2026-09-16 10:54 (Doku-Gespräch)"
  • status: default entschieden
  • ersetzt: Id of the decision this one replaces
  • wer *: Who records it

pruefservice.agenten.entscheidung.status

Set the status of a decision (new file version + ledger row): entschieden, abgelehnt, vorgeschlagen. [modifies data]

Rollen: Betreiber · verändert Daten

  • kennung *: Decision id E-<year>-<n>
  • status *: new status
  • wer *: Who sets it

pruefservice.agenten.ausnahme.liste

Exceptions register (C38): a rule suspended for a limited time (at most 90 days). Default only the ones valid now; alle:true lists expired and lifted ones too.

Rollen: Betreiber

  • alle: include expired and lifted

pruefservice.agenten.ausnahme.erteilen

Grant an exception: which rule, why, until when (ISO, at most 90 days ahead), optionally the decision it belongs to. Gets id A-<year>-<n>. [modifies data]

Rollen: Betreiber · verändert Daten

  • regel *: The rule being suspended
  • grund *: Why the rule is suspended
  • giltBis *: Valid until (ISO date-time)
  • wer *: Who grants
  • entscheidung: Decision id, optional

pruefservice.agenten.ausnahme.aufheben

Lift an exception before it expires — final. [modifies data]

Rollen: Betreiber · verändert Daten

  • kennung *: Exception id A-<year>-<n>
  • wer *: Who lifts it

pruefservice.agenten.aufgaben.risiko

Risk class of a task (C17: R0 docs · R1 code · R2 infra · R3 data · R4 production/security) with the gates and approvals it requires (C16: R2 merge, R3/R4 merge AND deploy). With risiko: set it — an agent may only raise, lowering needs betreiber:true; every change is logged with old/new.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • risiko: new risk class (optional)
  • wer: Who sets it (session name or operator)
  • betreiber: true = operator, may lower the class
  • grund: Reason, optional
  • zielprojekt: Target project id or name (agenten.zielprojekt.liste); default: this repo

pruefservice.agenten.fragen.runde

The bundled question round for the operator: every open question of the roadmap with its autonomy class (1 = agent decides, default applies · 2 = default applies, work continues, operator is asked in this round · 3 = waits for the operator) and default, class 3 first. senden:true posts the round once per state (hash) into the documentation conversation on docs/TODOS-PROGRAMM.md.

Rollen: Betreiber · verändert Daten

  • senden: true = post the round into the documentation conversation (once per state)

pruefservice.agenten.audit.run

Audit export of one run (C36): ZIP of the round file under var/audit/ with checked manifest, the chain instruction → task → run → commit → gate → approval → deploy → health (each link belegt, fehlt, nicht-noetig or nicht-protokolliert) and a readable report; no secrets (scan before packing); SHA-256 and Merkle root in the append-only register.

Rollen: Betreiber · verändert Daten

  • kennung *: Task id [<block>.<n>]
  • runde: round number, default the newest
  • wer *: Who exports (session name or operator)

pruefservice.agenten.audit.monat

Monthly pack (C37) for JJJJ-MM: changes on main, rule changes (CLAUDE.md), decisions, approvals, emergency stops, exceptions, rejected agent calls, costs, merge gates, round files, deliveries, deploy reports — figures with traffic light (gruen/gelb/rot with reasons) for management, every figure with its evidence; ZIP under var/audit/, append-only register.

Rollen: Betreiber · verändert Daten

  • monat *: Month JJJJ-MM
  • wer *: Who exports (session name or operator)

pruefservice.agenten.audit.liste

Audit exports (append-only register): kind run|monat, task and round or month, path, SHA-256 of the ZIP, Merkle root, size, chain complete or traffic light, who and when.

Rollen: Betreiber

  • art: kind, optional
  • kennung: Task id, optional

pruefservice.agenten.ziel.liste

Goals of the agent manager (newest version each): id ziel-<slug>, version, status (vorgeschlagen|aktiv|pausiert|beendet), definition (measure, source script with hash, target, cadence, derivation, auto_claim, quota, budget, cooldown, hysteresis, stop conditions) and the latest measurement. With kennung: the measurements of that goal (append-only evidence with hash).

Rollen: Betreiber

  • kennung: Goal id ziel-<slug>, optional — returns its measurements

pruefservice.agenten.ziel.anlegen

Create a goal (version 1) or a new version of it: definition with kennung ziel-<slug>, titel, owner, messgroesse {name, einheit, richtung hoch|tief}, quelle {art: skript, pfad: tools/ziele/<name>.mjs}, sollwert, ableitung {titel, risikoklasse, anweisung, scope}; optional taktMinuten, autoClaim, quote, budgetCentsJeTag, abkuehlungMinuten, hysterese, stopp. The source hash is read from the file, never from the input. A change of target, measure or source is class 3 → the new version starts as vorgeschlagen (C73).

Rollen: Betreiber · verändert Daten

  • definition *: goal definition (see description)
  • wer *: Who defines it
  • status: initial status, optional (operator only)

pruefservice.agenten.ziel.status

Set the status of a goal: aktiv (operator releases a proposed version), pausiert, beendet, vorgeschlagen — only the status moves, the definition never.

Rollen: Betreiber · verändert Daten

  • kennung *: Goal id
  • status *: new status
  • wer *: Who sets it

pruefservice.agenten.ziel.messen

Measure a goal now: runs its source script, checks the script hash against the goal version (changed = MESSUNG_UNGUELTIG, new version needed), writes the append-only evidence (value, source hash, tool version, hash). An empty measurement is an error, never evidence.

Rollen: Betreiber · verändert Daten

  • kennung *: Goal id
  • wer *: Who measures

pruefservice.agenten.zielprojekt.liste

Target projects of the agent manager: id, name, title, git root on this instance, roadmap files, rules file (hash base of approvals), gate commands, risk patterns, active, number of tasks in plan and open. The default project (this repo) comes first. With id or name: one project.

Rollen: Betreiber

  • zielprojekt: Project id or name, optional

pruefservice.agenten.zielprojekt.anlegen

Create a target project: definition {name (slug, unique), titel, gitWurzel (absolute path on this instance or relative to the manager working copy), fahrplaene [{pfad relative .md, blockAusKennung}], regelnDatei (default CLAUDE.md), gates {typecheck|suite|build|health|migration_dry_run: command or URL}, risikoMuster [{klasse R0–R4, muster regex, grund}], aktiv}. Returns the id — link by id, never by name. [modifies data]

Rollen: Betreiber · verändert Daten

  • definition *: project definition (see description)
  • wer *: Who creates it

pruefservice.agenten.zielprojekt.aendern

Change a target project by id: any of titel, gitWurzel, fahrplaene, regelnDatei, gates, risikoMuster, aktiv — the whole new definition is validated; the name never changes. [modifies data]

Rollen: Betreiber · verändert Daten

  • id *: Project id (uuid)
  • felder *: fields to change
  • wer *: Who changes it

Hilfe-Figur

pruefservice.hilfe.verhalten.liste

Listet die Verhalten der Hilfe-Figur (Zeigen, Willkommen, …) mit ihrer Pose.

Rollen: Betreiber

  • includeInactive: Auch deaktivierte Verhalten

pruefservice.hilfe.verhalten.setzen

Legt ein Verhalten der Hilfe-Figur an oder ändert es (per key); pose ist eine der Figur-Posen.

Rollen: Betreiber · verändert Daten

  • key *: Schlüssel (a-z, 0-9, - und _)
  • label *: Beschriftung
  • pose *: Figur-Pose
  • description: Optional: wann das Verhalten auftritt
  • orderIndex: Optional: Reihenfolge
  • active: Optional: wählbar

pruefservice.hilfe.verhalten.loeschen

Löscht ein Verhalten der Hilfe-Figur per key.

Rollen: Betreiber · verändert Daten

  • key *: Schlüssel

pruefservice.hilfe.punkte.liste

Listet Hilfe-Punkte (die Sequenz einer Seite), optional nach portal und pageId gefiltert.

Rollen: Betreiber

  • portal: Optional: Portal (z. B. pruefung)
  • pageId: Optional: Routenpfad der Seite

pruefservice.hilfe.punkte.anlegen

Legt einen einzelnen Hilfe-Punkt an.

Rollen: Betreiber · verändert Daten

  • portal *: Portal
  • pageId: Routenpfad der Seite
  • orderIndex: Reihenfolge
  • behaviorKey: Verhalten (key); die Pose wird daraus abgeleitet, wenn pose fehlt
  • pose: Direkte Pose der Figur
  • text *: Was die Figur sagt
  • subtitle: Optional: Untertitel
  • noTarget: true = ohne Ziel (Begrüßung, keine Zeigelinie)
  • pointX: Ziel, Bruchteil der Fensterbreite 0..1
  • pointY: Ziel, Bruchteil der Fensterhöhe 0..1
  • holdMs: Auto-Weiter nach ms (0 oder weg = manuell)
  • travelMs: Geh-Dauer am Seil hin zu diesem Schritt (ms)
  • speechDelayMs: Verzögerung bis zur Sprechblase (ms)
  • bubbleX: Sprechblase, Bruchteil der Fensterbreite 0..1
  • bubbleY: Sprechblase, Bruchteil der Fensterhöhe 0..1
  • anchorWfId: data-wf-id des Elements, an dem der Punkt klebt
  • anchorRelX: Versatz im Element 0..1
  • anchorRelY: Versatz im Element 0..1
  • figureAnchor: Lage der Sprechblase zum Ziel
  • actionType: Einfache Vorführ-Aktion (Ereignis euid:hilfe-demo)
  • actionValue: Wert der Vorführ-Aktion
  • actions: DOM-Operationen als Liste {op, selector, value, event, detail, class, attr}; op: click|set|toggle|dispatch|addClass|removeClass|setAttr

pruefservice.hilfe.punkte.aendern

Ändert einen Hilfe-Punkt per id (nur übergebene Felder).

Rollen: Betreiber · verändert Daten

  • id *: ID des Punkts
  • active: Aktiv
  • orderIndex: Reihenfolge
  • behaviorKey: Verhalten (key); die Pose wird daraus abgeleitet, wenn pose fehlt
  • pose: Direkte Pose der Figur
  • text: Was die Figur sagt
  • subtitle: Optional: Untertitel
  • noTarget: true = ohne Ziel (Begrüßung, keine Zeigelinie)
  • pointX: Ziel, Bruchteil der Fensterbreite 0..1
  • pointY: Ziel, Bruchteil der Fensterhöhe 0..1
  • holdMs: Auto-Weiter nach ms (0 oder weg = manuell)
  • travelMs: Geh-Dauer am Seil hin zu diesem Schritt (ms)
  • speechDelayMs: Verzögerung bis zur Sprechblase (ms)
  • bubbleX: Sprechblase, Bruchteil der Fensterbreite 0..1
  • bubbleY: Sprechblase, Bruchteil der Fensterhöhe 0..1
  • anchorWfId: data-wf-id des Elements, an dem der Punkt klebt
  • anchorRelX: Versatz im Element 0..1
  • anchorRelY: Versatz im Element 0..1
  • figureAnchor: Lage der Sprechblase zum Ziel
  • actionType: Einfache Vorführ-Aktion (Ereignis euid:hilfe-demo)
  • actionValue: Wert der Vorführ-Aktion
  • actions: DOM-Operationen als Liste {op, selector, value, event, detail, class, attr}; op: click|set|toggle|dispatch|addClass|removeClass|setAttr

pruefservice.hilfe.punkte.loeschen

Löscht einen Hilfe-Punkt per id.

Rollen: Betreiber · verändert Daten

  • id *: ID des Punkts

pruefservice.hilfe.sequenz.bauen

Baut die ganze Hilfe-Sequenz einer Seite in einem Aufruf: steps = geordnete Schritte; replace=true ersetzt die bestehende Sequenz.

Rollen: Betreiber · verändert Daten

  • portal *: Portal
  • pageId *: Routenpfad der Seite
  • replace: true = bestehende Punkte dieser Seite vorher löschen
  • steps *: Schritte in Reihenfolge; jeder wie bei punkte.anlegen (text, pose oder behaviorKey, pointX/Y, holdMs, …)

werbung

pruefservice.werbung.platzierungen

Placement catalogue for advertisements: key, label, position (sidebar, content, inline), surfaces (wissen, site, kunden). Fixed vocabulary; a booking carries only the key.

Rollen: Betreiber

pruefservice.werbung.partner.liste

Advertising partners: type (system, partner, versicherung, extern), name, website, contact, state, embed module.

Rollen: Betreiber

pruefservice.werbung.partner.anlegen

Register an advertising partner. einbettungUrl (optional): https address of a POST-prefilled embed module (e.g. the cyber insurance consultation form).

Rollen: Betreiber · verändert Daten

  • art *: system | partner | versicherung | extern
  • name *: Name (2–120)
  • website: Domain
  • kontaktEmail: Contact e-mail
  • einbettungUrl: https address of the embed module (POST form)
  • notiz: Note

pruefservice.werbung.partner.stand

Set partner state: aktiv or gesperrt (a blocked partner delivers nothing).

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • stand *: aktiv | gesperrt

pruefservice.werbung.partner.kunde

Link a partner to an audit customer (partner login, [37.8]): the customer then sees „Partnerdaten“ in its organisation menu. kundeId empty = unlink. One customer is at most one partner.

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • kundeId: Audit customer UUID or empty

pruefservice.werbung.partner.profil

Partner page ([37.13], public /partner/<kuerzel> for backlinks): set the profile (titel, kurz, text, leistungen[], verweise[{titel,url}] ≤ 5 https links, standort, rahmen[] https origins allowed to embed the partner box, seite = optional page in @dignis/baukasten JSON format replacing text/leistungen/verweise) and/or its state (entwurf | veroeffentlicht) with the kuerzel. Publishing requires a kuerzel and a text; links are plain (no nofollow).

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • profil: Profile fields (optional)
  • stand: entwurf | link (reachable by address only: not listed, noindex) | veroeffentlicht (optional)
  • kuerzel: Address slug, only with stand (optional)

pruefservice.werbung.partner.bild

Add an image to the partner page gallery: daten = base64 of a JPEG/PNG/WebP (the MCP body is limited to 256 KB, so keep the file under about 180 KB), alt = alternative text (required). Stored as WebP at our address, never remote. The partner needs a kuerzel and a linked audit customer.

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • name: File name, e.g. team.jpg
  • mime *: image/jpeg | image/png | image/webp
  • daten *: Base64 of the image
  • alt *: Alternative text (≤ 160)

pruefservice.werbung.partner.bild.entfernen

Remove an image from the partner page gallery by its id (the file stays in the archive).

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • bildId *: Image id from profil.bilder[].id

pruefservice.werbung.partner.statistik

Statistics of one partner ([37.22]): per ad impressions and clicks (total, last 30 days), a 30-day daily series, inquiries (customer links at the partner, matched by its website) and closings per month, click rate. Aggregates only — no person, no IP.

Rollen: Betreiber

  • partnerId *: Partner UUID

pruefservice.werbung.liste

All advertisement bookings with partner, placement, creative, context, weight, period, state, impressions and clicks (daily aggregates, no persons).

Rollen: Betreiber

pruefservice.werbung.anlegen

Book an advertisement: partnerId, platzierung (key from werbung.platzierungen), creative { eyebrow?, titel, text?, bild?, bildAlt?, ctaLabel, ctaHref } (https or own path only), kontext { themen?, bereiche?, seiten? } (empty = everywhere the placement allows), gewicht 1–100, von/bis ISO, stand (default entwurf). The renderer always labels it as an advertisement.

Rollen: Betreiber · verändert Daten

  • partnerId *: Partner UUID
  • platzierung *: Placement key
  • creative *: Creative
  • kontext: Context: themen[], bereiche[], seiten[]
  • gewicht: 1–100
  • von: ISO date/time
  • bis: ISO date/time
  • stand: entwurf | aktiv | pausiert | beendet

pruefservice.werbung.stand

Set booking state: entwurf | aktiv | pausiert | beendet. Only aktiv within its period is delivered.

Rollen: Betreiber · verändert Daten

  • werbungId *: Booking UUID
  • stand *: entwurf | aktiv | pausiert | beendet

cyberversicherung

pruefservice.cyberversicherung.kundenlink

Consultation link of the cyber insurance partner for one audit customer: creates it via the partner API (master data prefilled, valid 30 days) or returns the valid one; neu:true forces a new one; senden:true e-mails it to the customer address. ⚠ Sends the master data of the customer to the partner.

Rollen: Betreiber · verändert Daten

  • kundeId *: Audit customer UUID
  • neu: Force a new link
  • senden: E-mail the link to the customer

pruefservice.cyberversicherung.liste

All consultation sessions at the cyber insurance partner (customer area, public page, MCP): company, domain, contact, source, validity, mailed, feedback status.

Rollen: Betreiber

  • limit: max rows (default 200)

Die Liste entsteht beim Bau der Seite aus lib/mcp/werkzeuge.ts und lib/mcp/rollen.ts;GET /api/mcp liefert sie als JSON. Zurück zu Automatisierung und MCP.

  • Siegel Digitale Barrierefreiheit
  • Siegel Daten & Recht
  • Siegel Technische Qualität
  • Siegel Digital Excellence
  • Siegel Cyberversicherung

Geprüft. Für eine bessere digitale Zukunft.euid.com