{
  "formatVersion": "1.0",
  "documentType": "ceis-it-webmcp-tool-catalog",
  "standardizedManifest": false,
  "schemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "updated": "2026-07-20",
  "notice": "Projektspezifische Dokumentation. Chrome liest diese Datei nicht als WebMCP-Manifest ein; maßgeblich sind die Registrierungen im HTML und in JavaScript.",
  "documentation": {
    "overview": "https://developer.chrome.com/docs/ai/webmcp?hl=de",
    "declarativeApi": "https://developer.chrome.com/docs/ai/webmcp/declarative-api",
    "imperativeApi": "https://developer.chrome.com/docs/ai/webmcp/imperative-api"
  },
  "tools": [
    {
      "name": "runSeoCheck",
      "registration": "declarative",
      "page": "/seo-check",
      "source": "/inc/pages/seo-check.php",
      "description": "Prüft eine öffentlich erreichbare Website auf SEO, Codequalität, WCAG-Quelltextregeln, konservative KI-Code-Muster und WebMCP-Anmerkungen.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Vollständige öffentlich erreichbare URL der Website, die geprüft werden soll."
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "selectItDiagnosis",
      "registration": "declarative",
      "page": "/assistent/",
      "source": "/assistent/index.php",
      "description": "Wählt ein typisches IT-Problem aus und lädt die dazu passenden Diagnosefragen.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "diagnosis": {
            "type": "string",
            "enum": [
              "pc-langsam",
              "wlan-abbruch",
              "drucker-offline",
              "windows-startet-nicht",
              "internet-langsam",
              "kein-internet",
              "virus-verdacht",
              "email-probleme",
              "bluescreen-absturz",
              "fernwartung-problem"
            ],
            "description": "Das IT-Problem, für das eine geführte Kurzdiagnose geladen werden soll."
          }
        },
        "required": [
          "diagnosis"
        ]
      }
    },
    {
      "name": "evaluateItDiagnosis",
      "registration": "declarative-dynamic",
      "page": "/assistent/",
      "source": "/assistent/assets/assistent.js",
      "description": "Wertet vier Antworten zur zuvor ausgewählten IT-Kurzdiagnose aus und nennt passende nächste Schritte.",
      "humanConfirmation": true,
      "lifecycle": "Wird erst registriert, nachdem der Diagnosefall gewählt und alle zugehörigen Antwortfelder erzeugt wurden.",
      "inputSchema": {
        "type": "object",
        "description": "Die vier Property-Namen richten sich nach dem gewählten Diagnosefall. Jeder Parameter ist erforderlich und verwendet die im sichtbaren Formular angebotenen Enum-Werte.",
        "minProperties": 4,
        "maxProperties": 4,
        "additionalProperties": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unknown",
            "wifi",
            "usb"
          ]
        }
      },
      "schemaVariants": {
        "pc-langsam": [
          "boot_slow",
          "program_slow",
          "fan_loud",
          "updates_old"
        ],
        "wlan-abbruch": [
          "all_devices",
          "distance",
          "router_restart",
          "specific_time"
        ],
        "drucker-offline": [
          "display_on",
          "connection_type",
          "recent_change",
          "other_print"
        ],
        "windows-startet-nicht": [
          "power_on",
          "logo_seen",
          "error_message",
          "after_update"
        ],
        "internet-langsam": [
          "all_sites",
          "all_devices",
          "wifi_only",
          "time_based"
        ],
        "kein-internet": [
          "router_online",
          "all_devices",
          "recent_change",
          "cable_test"
        ],
        "virus-verdacht": [
          "popups",
          "slowdown",
          "scanner",
          "account_signs"
        ],
        "email-probleme": [
          "receive",
          "send",
          "error_text",
          "password_changed"
        ],
        "bluescreen-absturz": [
          "often",
          "during_load",
          "recent_update",
          "heat"
        ],
        "fernwartung-problem": [
          "downloaded",
          "startable",
          "internet_ok",
          "security_block"
        ]
      }
    },
    {
      "name": "askItAssistant",
      "registration": "declarative",
      "page": "/assistent/",
      "source": "/assistent/index.php",
      "description": "Sucht eine kurze Antwort und passende CEIS-IT-Seiten zu einer konkreten IT-Frage.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Konkrete Frage zu IT-Problemen, Leistungen, Fernwartung, Kaufberatung oder Preisen."
          }
        },
        "required": [
          "q"
        ]
      }
    },
    {
      "name": "runSecurityAudit",
      "registration": "declarative",
      "page": "/sicherheitscheck/",
      "source": "/sicherheitscheck/templates/form.php",
      "description": "Erstellt eine strukturierte Ersteinschätzung typischer IT-Sicherheitsrisiken für einen kleinen Betrieb.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "company_name": {
            "type": "string",
            "description": "Firma / Betrieb"
          },
          "contact_name": {
            "type": "string",
            "description": "Ansprechpartner"
          },
          "employee_count": {
            "type": "string",
            "enum": [
              "1-5",
              "6-10",
              "11-25",
              "26+"
            ],
            "description": "Wie groß ist der Betrieb?"
          },
          "it_contact": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Gibt es eine feste Zuständigkeit für IT-Themen?"
          },
          "system_updates": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Werden Betriebssysteme und Programme regelmäßig aktualisiert?"
          },
          "old_systems": {
            "type": "string",
            "enum": [
              "no",
              "partial",
              "yes"
            ],
            "description": "Gibt es noch alte oder nicht mehr unterstützte Systeme?"
          },
          "antivirus": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Ist ein aktiver Virenschutz vorhanden?"
          },
          "firewall": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Ist eine Firewall aktiv und sinnvoll eingerichtet?"
          },
          "admin_rights": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Arbeiten Mitarbeitende im Alltag ohne Admin-Rechte?"
          },
          "separate_accounts": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Hat jede Person ein eigenes Benutzerkonto?"
          },
          "mfa": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Ist Mehrfaktor-Authentifizierung für wichtige Zugänge aktiv?"
          },
          "password_quality": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Werden sichere Passwörter verwendet und nicht offen notiert?"
          },
          "backup_exists": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Gibt es ein regelmäßiges Backup?"
          },
          "backup_tested": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Wurde die Wiederherstellung bereits getestet?"
          },
          "backup_offline": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Gibt es eine getrennte oder externe Sicherung?"
          },
          "remote_access": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Wird Fernzugriff genutzt und ist er bewusst verwaltet?"
          },
          "remote_secured": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Sind Fernzugänge zusätzlich abgesichert?"
          },
          "router_password": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Wurde das Standardpasswort von Router, NAS und ähnlichen Geräten geändert?"
          },
          "guest_wifi": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Gibt es ein getrenntes Gäste-WLAN oder eine saubere Netztrennung?"
          },
          "mail_awareness": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Werden verdächtige E-Mails im Betrieb erkannt und hinterfragt?"
          },
          "emergency_plan": {
            "type": "string",
            "enum": [
              "yes",
              "partial",
              "no"
            ],
            "description": "Gibt es einen klaren Ablauf für IT-Ausfall oder Schadensfall?"
          }
        },
        "required": [
          "company_name",
          "contact_name",
          "employee_count",
          "it_contact",
          "system_updates",
          "old_systems",
          "antivirus",
          "firewall",
          "admin_rights",
          "separate_accounts",
          "mfa",
          "password_quality",
          "backup_exists",
          "backup_tested",
          "backup_offline",
          "remote_access",
          "remote_secured",
          "router_password",
          "guest_wifi",
          "mail_awareness",
          "emergency_plan"
        ]
      }
    },
    {
      "name": "createSecurityAuditPdf",
      "registration": "declarative",
      "page": "/sicherheitscheck/",
      "source": "/sicherheitscheck/templates/results.php",
      "description": "Erzeugt aus der aktuell angezeigten IT-Sicherheitsauswertung einen PDF-Bericht.",
      "humanConfirmation": true,
      "requiresPageState": true,
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "prepareSecurityTraining",
      "registration": "declarative",
      "page": "/trainingsportal/track.php",
      "source": "/trainingsportal/track.php",
      "description": "Bereitet den optionalen Teilnehmernamen und die Einwilligung vor; anschließend wählt der Nutzer Training oder Prüfung.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Name der teilnehmenden Person; für die Prüfung und das Zertifikat erforderlich."
          },
          "name_consent": {
            "type": "boolean",
            "description": "Einwilligung, den Namen in dieser Sitzung für das Zertifikat zu verwenden."
          }
        }
      },
      "manualChoiceAfterPreparation": [
        "training",
        "exam"
      ]
    },
    {
      "name": "answerSecurityQuestion",
      "registration": "declarative-state-dependent",
      "page": "/trainingsportal/quiz.php",
      "source": "/trainingsportal/quiz.php",
      "description": "Wählt eine Antwort auf die aktuell angezeigte Frage des IT-Sicherheitstrainings aus.",
      "humanConfirmation": true,
      "lifecycle": "Nur registriert, solange die aktuelle Frage beantwortet werden kann; nach angezeigtem Feedback ist das Tool abgemeldet.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "choice": {
            "type": "string",
            "description": "Ausgewählte Antwortoption für die aktuell angezeigte Sicherheitsfrage; die Enum-Werte entstehen aus den sichtbaren Antwortoptionen."
          }
        },
        "required": [
          "choice"
        ]
      }
    },
    {
      "name": "updateCertificateName",
      "registration": "declarative",
      "page": "/trainingsportal/certificate.php",
      "source": "/trainingsportal/certificate.php",
      "description": "Aktualisiert den Namen, der auf dem Teilnahmezertifikat angezeigt wird.",
      "humanConfirmation": true,
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Name, der auf dem Teilnahmezertifikat erscheinen soll."
          }
        }
      }
    },
    {
      "name": "calculateWebdesignPrice",
      "registration": "imperative",
      "page": "/preise/preiskalkulator-webdesign",
      "source": "/assets/js/pages/webdesign-preiskalkulator.js",
      "description": "Berechnet serverseitig Kaufpreis oder Website-Abo einschließlich Zusatzseiten, Joomla-Kosten, Zusatzmodulen sowie Monats-, Jahres- und rabattiertem Zweijahrespreis.",
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": false
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "payment_mode": {
            "type": "string",
            "enum": [
              "one_time",
              "subscription"
            ],
            "description": "Zahlungsmodell: einmaliger Festpreis oder Website-Abo inklusive Hosting."
          },
          "budget_one_time": {
            "type": "integer",
            "minimum": 199,
            "maximum": 2500,
            "description": "Optionales einmaliges Projektbudget in Euro; Werte werden serverseitig auf gültige Stufen normalisiert."
          },
          "budget_subscription": {
            "type": "integer",
            "minimum": 19,
            "maximum": 149,
            "description": "Optionales monatliches Abo-Budget in Euro; Werte werden serverseitig auf gültige Stufen normalisiert."
          },
          "budget_unknown": {
            "type": "boolean",
            "description": "Gibt an, dass noch kein Budget festgelegt wurde."
          },
          "project_type": {
            "type": "string",
            "enum": [
              "custom_new",
              "joomla_new",
              "redesign",
              "joomla_redesign"
            ],
            "description": "Art des Webprojekts: neue individuelle oder Joomla-Webseite beziehungsweise entsprechendes Redesign."
          },
          "page_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Geplanter Inhaltsumfang von einer Landingpage bis zu 20 Seiten."
          },
          "images": {
            "type": "string",
            "enum": [
              "customer",
              "optimize",
              "research"
            ],
            "description": "Legt fest, ob Bilder geliefert, durch CEIS-IT optimiert oder recherchiert werden."
          },
          "texts": {
            "type": "string",
            "enum": [
              "customer",
              "edit",
              "create"
            ],
            "description": "Legt fest, ob Texte geliefert, überarbeitet oder durch CEIS-IT erstellt werden."
          },
          "seo": {
            "type": "string",
            "enum": [
              "none",
              "basic"
            ],
            "description": "Optionale SEO- und AIO-Auswahl für ein Redesign; bei neuen Webseiten ist die Grundoptimierung enthalten."
          },
          "package": {
            "type": "string",
            "enum": [
              "web_visitenkarte",
              "handwerker",
              "business"
            ],
            "description": "Grundpaket: Webvisitenkarte, Handwerker-Webseite oder Betriebs-Webseite."
          },
          "extra_pages": {
            "type": "integer",
            "minimum": 0,
            "maximum": 19,
            "description": "Zusätzliche Inhaltsseiten über den im Paket enthaltenen Umfang hinaus; jede zusätzliche Seite kostet 50 Euro einmalig."
          },
          "addons": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "contact_form",
                "appointment_booking",
                "career_portal"
              ]
            },
            "description": "Optionale einmalige Zusatzmodule: Kontaktformular, Terminbuchung oder Karriereportal."
          }
        },
        "required": [
          "payment_mode",
          "package",
          "project_type",
          "extra_pages",
          "images",
          "texts"
        ]
      }
    }
  ]
}
