MCP-Konfigurationstools
Die Tools hinter der Konfigurationstür /mcpconfig: die, mit denen eine Umgebung eingerichtet wird. Produkte und Preise, Frontend und Theme, E-Mail-Vorlagen und der Buchungsworkflow. Ein Schlüssel mit Geltungsbereich config öffnet diese Tür; wie Sie sich verbinden, steht in Einen KI-Agenten mit dem MCP-Server verbinden. Das Tagesgeschäft liegt hinter einer anderen Tür — siehe MCP-Betriebstools.
Plan und Anwenden sind zwei Tools
Jede schreibende Handlung besteht hier aus zwei Tools: ..._plan zeigt, was sich ändern würde, und schreibt nichts, ..._apply führt es aus. Das ist keine Formalität, sondern der Kern des sicheren Umgangs mit dieser Tür: Sie zeigen jemandem einen Plan, der Ja dazu sagt, und erst dann wird geschrieben. Beide haben ein eigenes Recht, Sie können also jemanden schauen lassen, ohne ihn ändern zu lassen.
Ein _apply, das nichts zu ändern findet, ist ein Erfolg und kein Fehler: Stand der Wert schon so, sagt die Antwort, dass sich nichts geändert hat. Ein Client, der seine Antwort verloren hat, kann es also einfach erneut versuchen.
Zwei Schlösser und das Produktionsschloss
Bevor hier etwas geschrieben wird, müssen zwei Schlösser offen sein: eines setzt der Anbieter für die ganze Umgebung, eines der Lizenznehmer selbst. Ist eines zu, wird auch der Plan abgewiesen — sonst würde die Tür, die Sie nicht öffnen können, trotzdem in allen Einzelheiten beschreiben, was dahinter steht.
Zusätzlich gilt für die schwersten Tools eine dritte Bedingung: Auf einer Produktivumgebung laufen sie überhaupt nicht. Das sind die Tools mit Stufe 2 in der Tabelle unten — die Status und die automatischen Statusübergänge. Diese zu verstellen entscheidet, welche E-Mail bei welcher Statusänderung hinausgeht, und beim nächsten Joblauf ist das echte Post an echte Kunden. Theme-CSS zu ändern ist auf Produktion erlaubt: Das ist sichtbar und umkehrbar.
Die Tools
| Tools | Lesen/Schreiben | Stufe | Beschreibung |
|---|---|---|---|
| env_describe / config_diff_vs_baseline / recent_changes | lesen | - | Was diese Umgebung ist, was von einer frischen Installation abweicht und was kürzlich geändert wurde |
| object_explain / pricing_explain / availability_why_not_bookable | lesen | - | Erläuterung zu einem Produkt: die Einstellungen, der Preisaufbau und warum es an einem Datum nicht buchbar ist |
| object_create / object_update / object_set_periods / object_set_extras / object_set_participants | schreiben | 1 | Produkte anlegen und ändern, mit Zeiträumen, Zusatzoptionen und Teilnehmertypen, und die Buchungseinstellungen: Teilnehmergrenzen, Pufferzeiten und wie weit im Voraus gebucht werden kann |
| object_copy | schreiben | 1 | Ein Produkt in ein neues, sofort buchbares Produkt kopieren: Kalender, Preise, Öffnungszeiten, Optionen, Fragen, Teilnehmer, Ressourcen und Status-E-Mails werden übernommen. Die Kopie ist zunächst ausgeschaltet und kann direkt einem Standort zugeordnet werden |
| object_set_opening_hours | schreiben | 1 | Öffnungszeiten in Gruppen (zum Beispiel Standard und Sommer): pro Wochentag von–bis, und geöffnet, geschlossen oder auf Anfrage |
| object_set_price_schemas | schreiben | 1 | Die Preise pro Zeitraum, in Gruppen: pro Wochentag und Zeitfenster der Preis, die Preisart und die MwSt. |
| object_set_calendar | schreiben | 1 | Der Kalender: welche Preisgruppe und welche Öffnungszeiten-Gruppe an welchen Daten gelten. Ein Datum ohne Kalenderzeile ist nicht buchbar |
| object_set_questions | schreiben | 1 | Buchungsfragen mit Typ, Pflichtfeld und Antwortmöglichkeiten. Der Aufbau gilt in allen Sprachen |
| object_set_resources | schreiben | 1 | Welche Ressourcen ein Produkt belegt (Raum, Bestuhlung, Mitarbeiter, Material) und wie |
| object_set_attributes | schreiben | 1 | Adresse, GPS-Standort und die eigenen Felder eines Produkts, wie Raumart oder Kapazität. Der Plan zeigt, wie Ihre Umgebung jedes eigene Feld nennt |
| resource_describe / resource_create / resource_update | lesen/schreiben | 1 | Ressourcen verwalten: Räume, Mitarbeiter, Bestuhlungen und Material, mit Anzahl und Pufferzeiten |
| vat_describe | lesen | - | Die MwSt.-Sätze der Umgebung und welcher Satz der Standard ist |
| franchise_describe / franchise_create / franchise_update | lesen/schreiben | 1 | Standorte (Filialen) verwalten: Name und Adresse, und wie viele Standorte Ihre Lizenz erlaubt |
| franchise_set_objects | schreiben | 1 | Welche Produkte ein Standort verkauft |
| product_set_active | schreiben | 1 | Ein Produkt ein- oder ausschalten |
| combi_create / combi_update | schreiben | 1 | Arrangements zusammenstellen |
| combi_copy | schreiben | 1 | Ein Arrangement kopieren, mit Bestandteilen, Optionen, Preisen, Kalender und Status-E-Mails. Die Kopie ist zunächst ausgeschaltet |
| combi_set_parts | schreiben | 1 | Die Bestandteile eines Arrangements, in Reihenfolge: welche Produkte und Zeiträume es bucht, und ob ein Bestandteil optional ist |
| combi_set_extras | schreiben | 1 | Die Optionen eines Arrangements |
| combi_set_price_schemas / combi_set_calendar | schreiben | 1 | Die Preise und der Kalender eines Arrangements |
| theme_describe / theme_set_variables / theme_set_css / theme_set_logo / theme_rebuild | lesen/schreiben | 1 | Das Frontend-Theme: Farben und Variablen, eigenes CSS, Logo und Neukompilieren |
| theme_patch_css | schreiben | 1 | Einen Teil des eigenen CSS ändern: eine Farbe, eine Regel oder einen benannten Block, ohne das ganze Stylesheet erneut zu senden |
| media_upload_link | schreiben | 1 | Ein einmaliger Upload-Link in die Medienbibliothek, für ein Logo, Stylesheet oder eine Schriftart |
| media_fetch | schreiben | 1 | Eine Datei von der eigenen Website in die Medienbibliothek holen |
| brand_set_logo | schreiben | 1 | Das Logo der Hausfarben |
| content_block_describe / content_block_create / content_block_update | lesen/schreiben | 1 | Die Blöcke, aus denen eine Frontend-Seite aufgebaut ist |
| content_block_delete | schreiben | 1 | Einen Block löschen. Abgelehnt, solange er noch irgendwo verwendet wird: auf einer Seite, in einem Theme, in einem anderen Block oder in einem Formular |
| content_block_patch | schreiben | 1 | Einen Teil eines Blockfeldes ändern, zum Beispiel einen Filter im Skript der Such-und-Buch-Seite, ohne das ganze Feld erneut zu senden |
| menu_describe_items / menu_set_items | lesen/schreiben | 1 | Die Einträge eines Menüs als Liste: Reihenfolge, Dropdowns, die Seite, zu der ein Eintrag führt, und die Beschriftung pro Sprache |
| page_describe / page_create / page_update | lesen/schreiben | 1 | Inhaltsseiten im Frontend |
| page_list / page_check_links | lesen | - | Alle Inhaltsseiten, und welche internen Links in Menüs, Inhaltsblöcken und der Startseite ins Leere führen |
| page_delete | schreiben | 1 | Eine Seite löschen. Abgelehnt, wenn eine andere Sprachversion darauf verweist, es sei denn, Sie lassen diesen Verweis gleich mit bereinigen |
| theme_set_menu | schreiben | 1 | Welches Menü der Kopf eines Themes pro Sprache zeigt |
| homepage_set | schreiben | 1 | Welche Seite das Frontend öffnet, wenn ein Besucher die Basisadresse aufruft |
| template_describe / template_create / template_update / template_section_set | lesen/schreiben | 1 | E-Mail- und PDF-Vorlagen und ihre Kopf-, Fuß- und CSS-Teile |
| template_delete | schreiben | 1 | Eine Vorlage löschen. Abgelehnt, solange sie noch irgendwo verwendet wird; die Antwort nennt, wo. Eine aktive Vorlage wird nur gelöscht, wenn Sie darum bitten, sie zuerst zu deaktivieren |
| workflow_describe | lesen | - | Der ganze Buchungsworkflow in einer Antwort: Status, manuelle und automatische Übergänge und welche Vorlage zu welchem Übergang gehört — einschließlich Prüfungen auf Vorlagen, auf die nichts mehr verweist |
| status_set | schreiben | 2 | Einen Buchungsstatus ändern: ob er einen Platz belegt und wohin jemand eine Buchung von Hand verschieben darf |
| status_create | schreiben | 1 | Ein neuer Buchungsstatus (der Code besteht nur aus Ziffern), mit denselben Einstellungen wie status_set. Ein neuer Status belegt standardmäßig einen Platz, wie im Bildschirm |
| auto_set / auto_delete | schreiben | 2 | Automatische Statusübergänge: von welchem Status zu welchem, zu welchem Zeitpunkt und welche E-Mail oder SMS dazugehört |
| status_override_set / status_override_delete | schreiben | 2 | Welche E-Mail oder SMS bei einem Statuswechsel eines Produkts oder Arrangements verschickt wird. Eine Zeile zu entfernen macht diesen Übergang stumm: es wird nicht auf einen Standard zurückgegriffen |
| payment_schedule_describe / payment_schedule_set / payment_schedule_delete | lesen/schreiben | 2 | Zahlungspläne: die Raten, ihre Texte und für welches Produkt oder Arrangement sie gelten. Löschen wird abgelehnt, solange eine Automatisierung auf die Rate wartet |
| user_profile_describe / user_profile_create / user_profile_update | lesen/schreiben | 1 | Benutzerprofile: der Rabatt für eine Kundengruppe (fester Betrag oder Prozentsatz), und welcher Kundenstatus das Profil zuweist |
| user_profile_set_objects | schreiben | 1 | Für welche Produkte ein Profil gilt, und damit welche Produkte Kunden mit diesem Profil im Frontend sehen |
| customer_status_describe / customer_status_create | lesen/schreiben | 1 | Kundenstatus: darf buchen, darf auf Rechnung zahlen, in welche Status ein Kunde wechseln darf, das Profil, das der Status zuweist, und die Farben |
| customer_status_update | schreiben | 2 | Einen bestehenden Kundenstatus ändern. Das gilt sofort für alle Kunden, die sich bereits in diesem Status befinden |
| telnyx_diagnose | lesen | - | Diagnose des Telefonassistenten bei Telnyx: welche MCP-Tools er verwenden darf und ob er sie in letzten Gesprächen aufgerufen hat |
| language_list | lesen | - | Die Sprachen der Umgebung (aktiv, Standard) und welche Teile übersetzbar sind |
| language_activate | schreiben | 1 | Eine Frontend-Sprache ein- oder ausschalten; der Plan zählt, was in dieser Sprache noch leer ist |
| language_missing_report | lesen | - | Pro Teil die Texte, die in der Ausgangssprache gefüllt sind und in der neuen Sprache noch nicht, mit dem Ausgangstext |
| translation_get / translation_set | lesen/schreiben | 1 | Übersetzungen lesen und speichern, bis zu 50 auf einmal, über alle übersetzbaren Teile hinweg |
Ein Produkt buchbar machen
Ein Produkt ist erst buchbar, wenn es Zeiträume, Öffnungszeiten, Preise und einen Kalender hat. Am schnellsten geht es durch Kopieren: object_copy legt ein neues Produkt als Kopie eines bestehenden an, mit allem Drum und Dran, und schaltet es zunächst aus. Danach passen Sie an, was anders ist, und schalten es mit product_set_active ein.
Wenn Sie bei null anfangen, ist die Reihenfolge:
object_create: das Produkt selbst.object_set_periods: wie lange es gebucht wird, zum Beispiel eine Stunde, ein Tagesteil oder ein Tag.object_set_opening_hours: wann es geöffnet ist, in einer oder mehreren Gruppen.object_set_price_schemas: die Preise pro Zeitraum, in einer oder mehreren Gruppen.object_set_calendar: welche Preisgruppe und Öffnungszeiten-Gruppe an welchen Daten gelten.- Bei Bedarf
object_set_extras,object_set_participants,object_set_questions,object_set_resourcesundobject_set_attributes. product_set_active: einschalten.availability_why_not_bookablesagt Ihnen, warum ein Produkt an einem Datum noch nicht buchbar ist.
Unterwegs wird einiges überwacht:
- Jede Liste ist vollständig. Sie senden alle Zeiträume, Öffnungszeiten oder Optionen, die danach vorhanden sein sollen. Was nicht in der Liste steht, wird entfernt. Bestehende Zeilen werden aktualisiert und behalten ihre Nummer.
- Eine Kalenderzeile darf nur Gruppen nennen, die existieren, und eine Gruppe, die der Kalender noch verwendet, kann nicht entfernt werden. Wenn Sie die Preisgruppe wechseln, legen Sie zuerst die neue Gruppe an, stellen den Kalender um und lassen erst dann die alte Gruppe weg.
- Überlappende Zeiten an einem Tag und überlappende Kalenderzeilen werden abgelehnt, bevor etwas gespeichert wird.
- Zeiten schreiben Sie als
hh:mm.24:00ist Mitternacht,26:00ist 02:00 am nächsten Tag. - Fragen gibt es pro Sprache. Der Aufbau (Typ, Pflichtfeld, Reihenfolge und die Antwortmöglichkeiten) gilt in allen Sprachen. Den Fragetext und die Beschriftungen der Antworten übersetzen Sie mit
translation_set. Eine Frage, die Sie weglassen, wird in allen Sprachen entfernt. - Ein GPS-Standort wird auf etwa sieben Stellen gespeichert: 51.578721 wird zu 51.57872, auf etwa einen Meter genau.
- Ein Produkt, Arrangement oder Standort einer anderen Lizenz existiert für diese Tools nicht.
Ein Arrangement richten Sie genauso ein: combi_create oder combi_copy, dann combi_set_parts (welche Produkte und Zeiträume es bucht), combi_set_extras, combi_set_price_schemas und combi_set_calendar. combi_update schaltet es ein, aber erst, wenn es Bestandteile hat.
Mehrere Standorte
Wenn Sie an mehr als einem Standort verkaufen, richten Sie pro Standort eine Filiale ein und ordnen die Produkte zu, die dort buchbar sind. Die Such-und-Buch-Seite kann danach nach Standort filtern.
franchise_describezeigt die bestehenden Standorte und wie viele Standorte Ihre Lizenz erlaubt.franchise_createlegt einen Standort mit Name und Adresse an. Den Namen in anderen Sprachen setzen Sie mittranslation_set.franchise_set_objectsordnet die Produkte zu. Mitobject_copykönnen Sie ein neues Produkt auch direkt einem Standort zuordnen.- Mit
content_block_patchpassen Sie die Such-und-Buch-Seite an, zum Beispiel um einen Standortfilter hinzuzufügen, ohne das ganze Skript erneut zu senden. Wurde das Skript zwischendurch im Admin geändert, wird die Änderung abgelehnt und der Assistent liest es erneut.
- Ihre Lizenz bestimmt, wie viele Standorte Sie anlegen können. Beim Maximum wird ein neuer Standort abgelehnt; das Maximum zu erhöhen ist eine Änderung Ihrer Lizenz.
- Bestehende Buchungen behalten ihren Standort. Sollen sie zu dem Standort umziehen, dem das Produkt jetzt zugeordnet ist, fragen Sie ausdrücklich danach.
- Der Name eines Standorts muss eindeutig sein. Zwei Standorte mit demselben Namen kann ein Besucher nicht unterscheiden.
Das Frontend einrichten
Ein Frontend besteht aus Inhaltsblöcken, Seiten, die diese Blöcke zeigen, einem Menü, einem Theme und einer Startseite. Mit den Tools geht das in dieser Reihenfolge: Blöcke anlegen und füllen (content_block_create, content_block_update), daraus Seiten machen (page_create), das Menü füllen (menu_set_items), das Menü mit dem Theme verknüpfen (theme_set_menu) und die Startseite wählen (homepage_set). Zum Schluss zeigt page_check_links, ob noch Links ins Leere führen.
Unterwegs werden einige Dinge geprüft, damit ein Fehler nicht erst dem Besucher auffällt:
- Der Inhalt eines Inhaltsblocks wird vor dem Speichern geprüft, genauso wie im Editor. Text, der die Seite zerstören würde, etwa eine einzelne geschweifte Klammer oder ein
{if}ohne{/if}, wird abgelehnt. Setzen Sie JavaScript und CSS mit geschweiften Klammern zwischen{literal}und{/literal}. - Das Menü im Kopf wird pro Sprache gewählt, und eine Sprache ohne Menü greift nicht auf eine andere Sprache zurück. Der Plan von
theme_set_menunennt jede aktive Sprache, die danach kein Menü hat. - Ein Menü, das für eine Sprache eingerichtet ist, braucht nur Beschriftungen in dieser Sprache. Ein Menü für alle Sprachen braucht eine Beschriftung in jeder aktiven Sprache.
- Die Startseite ist eine Einstellung für alle Sprachen. Wechselt ein Besucher die Sprache, folgt das Frontend der verknüpften Sprachversion dieser Seite. Der Plan von
homepage_setwarnt vor jeder aktiven Sprache, in der die Seite keine Version hat. - Die Linkprüfung betrachtet nur Links, auf die ein Besucher klickt. JavaScript zählt nicht mit, auch wenn darin etwas wie
location.hrefsteht.
Logo und Hausstil bereitstellen
Fügen Sie ein Logo oder ein komplettes Stylesheet nicht in das Gespräch mit Ihrem Assistenten ein. Das ist langsam, und ein einziges falsches Zeichen macht die Datei unbrauchbar. Die Datei kommt zuerst in die Medienbibliothek Ihrer Umgebung, und der Assistent verweist dann darauf.
- Datei bereitstellen. Bitten Sie den Assistenten um einen Upload-Link (
media_upload_link). Öffnen Sie den Link, wählen Sie die Datei und klicken Sie auf Hochladen. Steht das Logo bereits auf Ihrer eigenen Website, kann der Assistent es auch selbst holen (media_fetch). - Verwenden lassen. Der Assistent setzt die Datei danach als Logo (
brand_set_logoodertheme_set_logo) oder als Stylesheet des Themes (theme_set_css). Sie müssen nichts im Admin einfügen.
Beispiel: „Verwende das Logo, das ich jetzt hochlade, auf unserer Website und in der Bestätigungsmail, und mache die Buttons dunkelgrün." Der Assistent erstellt einen Upload-Link, setzt nach Ihrem Upload das Logo und ändert mit theme_patch_css nur die Buttonfarbe. Der Rest des Stylesheets bleibt unverändert.
- Ein Upload-Link funktioniert einmal und ist standardmäßig 15 Minuten gültig. Wird eine Datei abgelehnt, etwa weil sie kein Bild ist, bleibt der Link verwendbar.
- Erlaubt: Bilder (png, jpg, gif, webp, svg, ico), Stylesheets (css) und Schriftarten (woff, woff2, ttf, otf), bis 5 MB. Der Dateityp wird aus dem Inhalt bestimmt, nicht aus dem Namen.
- Holen funktioniert nur von den eigenen Domains Ihrer Lizenz: den Domains in der Einstellung CORS - Zugelassene Domänen.
- Für diese Tools brauchen Sie das Recht
menu_config_manage_media(Medien verwalten), und die Schlösser oben müssen offen sein. - Bei einer kleinen Änderung prüft
theme_patch_csszuerst, ob das Stylesheet noch dasselbe ist, das der Assistent gelesen hat. Wurde es zwischendurch im Admin geändert, wird die Änderung abgelehnt und der Assistent liest es erneut.
Kundenprofile und Kundenstatus
Mit einem Benutzerprofil geben Sie einer Kundengruppe einen eigenen Preis: einen festen Betrag oder einen prozentualen Rabatt. Ein Profil bestimmt auch, welche Produkte diese Kunden im Frontend sehen. Ein Kundenstatus legt fest, was ein Kunde darf, etwa buchen oder auf Rechnung zahlen, und kann dem Kunden ein Profil geben. Zum Beispiel: Stammkunden 10 % Rabatt, gemeinnützige Organisationen 25 %, und eine Sperrliste, die nicht mehr buchen darf.
user_profile_create: das Profil mit dem Rabatt. Ein Prozentsatz kann sich auf den Preis vor oder nach anderen Rabatten beziehen, mit oder ohne Optionen.user_profile_set_objects: für welche Produkte das Profil gilt.customer_status_create: der Kundenstatus, mit dem, was der Kunde darf, und dem Profil, das der Status zuweist.customer_status_describezeigt die bestehenden Status.
Unterwegs wird einiges überwacht:
- Ein Profil ohne verknüpfte Produkte gilt für alle Produkte. Verknüpfen Sie Produkte damit, sehen Kunden mit diesem Profil nur diese Produkte. Der Plan von
user_profile_set_objectswarnt in beiden Fällen. - Ein Kunde erhält das Profil seines Status erst beim nächsten Statuswechsel. Hat er noch kein Login, aber eine E-Mail-Adresse, erhält er dabei ein Login ohne Passwort. Der Plan meldet das.
- Einen bestehenden Kundenstatus ändern (
customer_status_update) hat Stufe 2: auf einer Produktionsumgebung wird es nicht ausgeführt. Darf buchen und darf auf Rechnung zahlen ändern sich nämlich sofort für alle Kunden, die bereits in diesem Status sind. Ein neuer Status betrifft noch niemanden. - Steht ein Kundenstatus noch auf der Systemvorgabe, legt die erste Änderung eine eigene Kopie für Ihre Lizenz an, genau wie der Bildschirm.
- Den Namen eines Kundenstatus legen Sie in der aktuellen Sprache fest. Andere Sprachen füllen Sie mit
translation_set.
Für die Profile ist das Recht menu_object_userprofile nötig, für die Kundenstatus menu_config_status_customer.
Eine Sprache hinzufügen
Wenn Sie eine Frontend-Sprache einschalten, wird nichts kopiert. Alles, was in dieser Sprache noch keinen Text hat, bleibt im Frontend leer: Produktnamen, Optionen, Status, Feldbeschriftungen, Inhaltsblöcke, das Menü und die Seiten. Fast nirgends wird auf die Standardsprache zurückgegriffen. Die Sprachtools machen aus dieser Handarbeit eine strukturierte Aufgabe:
language_activate_planzeigt, wie viele Texte pro Teil noch leer sind. Erst nach Zustimmung schaltetlanguage_activate_applydie Sprache ein.language_missing_reportliefert den Arbeitsvorrat: pro Teil, welche Texte fehlen, mit dem Ausgangstext.- Der Agent übersetzt, und
translation_set_planzeigt pro Text, was sich ändern würde.translation_set_applyspeichert es.
Drei Dinge werden immer geprüft. Ein Text, der schon gefüllt ist, wird nicht überschrieben, es sei denn, das wird ausdrücklich verlangt. Codes wie {NAME} oder ##OWNER_ID## und die HTML-Formatierung eines Textes müssen nach dem Übersetzen genau so zurückkommen. Und ein Text darf nicht länger sein, als das Feld erlaubt. Eine Inhaltsseite in einer neuen Sprache braucht eine eigene URL; sie wird nicht von der ursprünglichen Seite übernommen.
E-Mail- und PDF-Vorlagen gehören nicht dazu: Das sind eigene Dokumente pro Sprache, die Sie mit den Vorlagentools anlegen.
Für alle diese Tools ist das Recht menu_config_language nötig, dazu das Recht des Bildschirms, auf dem der Text normalerweise bearbeitet wird. Wer die Produkte nicht ändern darf, kann sie auch über KI nicht übersetzen.
Die exakte, stets aktuelle Liste mit allen Eingabefeldern fragen Sie mit der Standard-MCP-Methode tools/list an der Tür selbst ab. Was Sie zurückbekommen, hängt von Ihren Rechten ab; eine kürzere Liste als hier bedeutet meist, dass ein Recht fehlt.
Welche Rechte jedes Werkzeug braucht, steht Recht für Recht auf Berechtigungen für KI-Konfigurationstools.
BETA. Diese Tür ist neu und wird noch weiterentwickelt. Toolnamen, Eingabefelder und Stufen können sich zwischen Releases ohne Übergangsfrist ändern. Nutzen Sie die Plan-Variante, bevor Sie etwas anwenden, und bauen Sie darauf noch keine Produktivintegration, die nicht ausfallen darf.


