{
  "formatVersion": "1.0",
  "documentType": "ceis-it-webmcp-tool-catalog",
  "standardizedManifest": false,
  "schemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "updated": "2026-07-17",
  "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, technische Qualität, KI-Signale 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 einen unverbindlichen Preisrahmen für eine CEIS-IT-Webseite und zeigt das Ergebnis im Preiskalkulator an.",
      "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": 49, "maximum": 99, "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."}
        },
        "required": ["payment_mode", "project_type", "page_count", "images", "texts"]
      }
    }
  ]
}
