Zum Inhalt springen

MCP-Schnittstelle

Geprüft

MitoOps stellt unter der Adresse /api/mcp einen standardmäßigen Remote-MCP-Server (Model Context Protocol) bereit, über den sich eine kompatible KI-Anwendung die Daten selbst abruft. Er baut auf denselben Fähigkeiten auf wie REST: Es ist keine zweite Schnittstelle mit eigenen Abfragen, sondern ein anderer Weg, dieselbe Frage zu stellen.

MCP ist keine Eigenschaft des Modells, sondern der Anwendung, in der das Modell läuft (des Clients). Verbinden kann sich jede Anwendung, die Remote-MCP über HTTP mit OAuth oder mit einem Zugriffsschlüssel unterstützt. Claude.ai ist der im Produktivbetrieb geprüfte Client, sein genauer Ablauf steht weiter unten. Für jede andere Anwendung gilt der allgemeine Ablauf im nächsten Abschnitt. Clients, die wir nicht getestet haben, erklären wir nicht für geprüft.

Es gibt zwei Wege, sich auszuweisen:

  • mit einem Zugriffsschlüssel, den Sie in der Anwendung ausstellen: für ein eigenes Programm oder einen Server, der einen Server aufruft;
  • über OAuth, wenn sich eine KI-Anwendung verbindet, die das unterstützt: Dann melden Sie sich selbst an und wählen auf dem Einwilligungsbildschirm aus, was die Anwendung lesen darf.

In beiden Fällen wird das Token im Header Authorization: Bearer übertragen, und in beiden Fällen gilt derselbe Berechtigungsbereich: Was der Schlüssel oder die Einwilligung nicht abdeckt, liefert kein Tool.

Claude.ai verbinden: geprüft, Schritt für Schritt

Abschnitt betitelt „Claude.ai verbinden: geprüft, Schritt für Schritt“

Claude.ai verbindet sich nicht mit einzelnen E-Shops, sondern mit MitoOps, also mit der Ebene, die die Daten all Ihrer E-Shops bereits zusammenführt.

Sie brauchen weder einen Schlüssel noch eine Client ID noch ein Secret. Claude.ai ermittelt alles selbst aus der Adresse der Schnittstelle.

  1. Öffnen Sie in Claude.ai Settings → Customize → Connectors (bei einem Team-Plan fügt ihn zuerst ein Inhaber unter Organization settings → Connectors hinzu).
  2. Klicken Sie auf Add custom connector.
  3. Geben Sie in das Feld Name MitoOps ein.
  4. Fügen Sie in das Feld URL die MCP-Adresse aus der Ansicht Einstellungen → API & MCP ein, in der Form https://<Ihre Adresse>/api/mcp, zum Beispiel https://app.mitoops.com/api/mcp.
  5. Lassen Sie Advanced settings leer: Claude.ai verwendet seine eigenen gehosteten Client-Metadaten (OAuth). Klicken Sie auf Add.
  6. Klicken Sie beim Connector auf Connect.
  7. Die Anmeldung bei MitoOps öffnet sich (auch mit zweitem Faktor, falls Sie ihn nutzen). Melden Sie sich an.
  8. Sie sehen den Einwilligungsbildschirm: welche Anwendung, welcher Mandant, was sie lesen darf und welche Shops betroffen sind. Die Berechtigungen sind nach Bereichen der App gruppiert (Verkauf, Lager, Versand, Marketing, Partnerprogramm, Automatisierungen). Lesen ist vorausgewählt, sensible Daten und das Vorbereiten von Entwürfen nicht; Änderungen mit direkter Wirkung (zum Beispiel das Löschen von Gutscheinen oder die Freigabe eines Versands) stehen einzeln im eingeklappten Abschnitt Erweiterte Berechtigungen. Bei jeder Gruppe steht, was sie genau umfasst.
  9. Prüfen Sie die Berechtigungsbereiche. Die sensiblen (zum Beispiel Berichte, Einkaufspreise, Personenbezogene Kundendaten, Lieferanten und Einkauf, Automatisierungen: Entwürfe, Verfügbarkeiten: Änderungsvorschläge und Reklamationen: Änderungsvorschläge für Einstellungen) sind nicht angehakt. Wenn Claude Margen oder personenbezogene Daten sehen, Entwürfe und Änderungen von Automatisierungen oder Änderungen an Verfügbarkeiten oder Reklamationseinstellungen vorschlagen soll, haken Sie sie bewusst an. Vorlagen und Einstellungen der Reklamationen liest der Berechtigungsbereich Reklamationen: Einstellungen und Vorlagen. Wählen Sie die Shops aus.
  10. Klicken Sie auf Erlauben. Claude.ai kehrt auf seine Seite zurück, und der Connector ist verbunden.
  11. Klicken Sie in einer Unterhaltung auf + → Connectors und schalten Sie MitoOps ein.

Was Sie auf dem Einwilligungsbildschirm anhaken, das gilt, und nie mehr, als Sie selbst sehen dürfen. Wer in der Anwendung kein Recht auf Einkaufspreise hat, kann es auch nicht weitergeben. Das Token, das Claude.ai erhält, trägt nur die erlaubten Berechtigungsbereiche.

Anderer MCP-Client oder andere KI-Anwendung über OAuth

Abschnitt betitelt „Anderer MCP-Client oder andere KI-Anwendung über OAuth“

Sie geben der Anwendung dieselbe Adresse /api/mcp und sonst nichts, keinen Schlüssel. Der Rest läuft automatisch:

  1. Die Anwendung fragt bei uns an, wohin sie die Anmeldung schicken soll (Metadaten der geschützten Ressource nach RFC 9728).
  2. Ihre Anmeldung bei MitoOps öffnet sich.
  3. Sie sehen den Einwilligungsbildschirm und wählen Berechtigungsbereiche und Shops aus.
  4. Nach der Freigabe ist die Verbindung fertig, und die Anwendung sieht die Tools.

Eine Anwendung, die ihre Berechtigungsbereiche selbst wählt, muss sie in ihrer Anfrage angeben: Der Einwilligungsbildschirm bietet nur an, was die Anwendung angefordert hat (und worauf Sie Anspruch haben). Die Schnittstelle bewirbt alle Berechtigungsbereiche einschließlich der sensiblen, in der Challenge WWW-Authenticate und in scopes_supported. Sensible Berechtigungsbereiche werden trotzdem nie von selbst erteilt: Auf dem Einwilligungsbildschirm sind sie gekennzeichnet und nicht angehakt, und das Token wird auf das eingeschränkt, was Sie erlaubt haben (scope in der Token-Antwort).

Der Assistent oder das Programm braucht die Adresse /api/mcp auf Ihrer Domain und einen Zugriffsschlüssel, der MCP unter seinen Schnittstellen hat. Die genaue Adresse zeigt die Ansicht Einstellungen → API & MCP im Block „Wo Sie ihn eintragen“. Ein nur für REST ausgestellter Schlüssel funktioniert nicht über MCP und umgekehrt.

Die Liste der Tools richtet sich nach den Berechtigungsbereichen des Schlüssels oder der Einwilligung: Der Assistent sieht genau das, was ihm erlaubt wurde, und nichts anderes. Ein Tool außerhalb des Berechtigungsbereichs existiert für ihn nicht.

MCP-Werkzeug Berechtigungsumfang REST Was es liefert
account_connection stores:read GET /account/connection Diagnose dieser Verbindung: die App, wer den Zugriff wann erteilt hat, erteilte und fehlende Berechtigungen nach Bereich, E-Shops und der Schreibmodus über KI.
account_entitlements account:read GET /account/entitlements Tarif des Mandanten, Funktionen und Limits mit aktueller Nutzung.
affiliate_articles_create affiliate:write — schreiben: Anlegen eines eigenen Hilfeartikels in allen Sprachen zugleich (Titel und Text in der angegebenen Sprache); HTML wird bereinigt.
affiliate_articles_get affiliate:read GET /affiliate/articles/:key Ein Hilfeartikel mit seinem Wortlaut (HTML) in allen oder in einer Sprache; Variablen nicht ersetzt.
affiliate_articles_list affiliate:read GET /affiliate/articles Hilfeartikel des Partnerportals: Schlüssel, Standard/eigener, aktiviert, Reihenfolge, Status je Sprache.
affiliate_articles_set_state affiliate:write — schreiben: Aktivieren oder Deaktivieren eines Hilfeartikels für alle Sprachen zugleich; Standardartikel werden deaktiviert, nie gelöscht.
affiliate_articles_update affiliate:write — schreiben: Bearbeiten eines Hilfeartikels in einer Sprache (Titel, Adresse, Text; HTML wird bereinigt) oder Wiederherstellen des Standardwortlauts; liefert unbekannte Variablen.
affiliate_campaigns_create affiliate:write — schreiben: Anlegen einer Kampagne in einem Shop: Name, Vergütung (nie erfunden), Zuordnungsfenster, Verfügbarkeit, Freigabe der Conversions.
affiliate_campaigns_get affiliate:read GET /affiliate/campaigns/:campaignId Eine Kampagne des Partnerprogramms.
affiliate_campaigns_list affiliate:read GET /affiliate/campaigns Kampagnen des Partnerprogramms eines Shops mit Vergütung, Verfügbarkeit und Anzahlen.
affiliate_campaigns_update affiliate:write — schreiben: Bearbeiten einer Kampagne: Name, Vergütung, Zuordnungsfenster, Verfügbarkeit, Freigabe, Aktivieren/Deaktivieren, Beschreibung für Partner je Sprache.
affiliate_code_requests_decide affiliate:write — schreiben: Bearbeitung einer Partneranfrage nach einem Code: Die Freigabe legt den Code direkt in den Shops der Kampagne an (erfordert auch coupons:write), retry wiederholt das Anlegen, eine Ablehnung erfordert einen Grund; der Partner erhält eine E-Mail.
affiliate_code_requests_list affiliate:read GET /affiliate/code-requests Anfragen von Partnern nach einem eigenen Rabattcode mit Status und Grund; offene zuerst.
affiliate_conversions_decide affiliate:approve — schreiben: Entscheidung über eine Provision nach id: approve (neu → freigegeben), reject (neu → abgelehnt, Grund erforderlich), cancel (freigegeben → storniert, Grund erforderlich); eine ausgezahlte Provision wird nie zurückgesetzt, dieselbe Entscheidung ein zweites Mal ändert nichts; der Partner erhält eine E-Mail.
affiliate_conversions_get affiliate:read GET /affiliate/conversions/:conversionId Detail einer Conversion: Beträge, Provision, Provisionsstatus mit Grund, Bestellstatus im Shop, Gutschrift, Auszahlung.
affiliate_conversions_list affiliate:read GET /affiliate/conversions Conversions des Partnerprogramms eines Shops: Provisionsbasis und Bestellsumme inkl. MwSt., Provision, Provisionsstatus mit Grund, Bestellstatus im Shop, Verknüpfung zur Auszahlung.
affiliate_discount_codes_ensure coupons:write — schreiben: Stellt sicher, dass der Partner im Shop einen Rabattcode hat: Der Gutschein wird über die kanonischen Gutscheine angelegt (oder ein vorhandener wird verwendet) und dem Partner zugeordnet; die Notiz im Shop entsteht automatisch.
affiliate_discount_codes_list affiliate:read GET /affiliate/discount-codes Rabattcodes der Partner in einem Shop mit Anzahl der Verwendungen und Umsatz.
affiliate_documents_draft_create affiliate:write — schreiben: Vorschlag eines neuen Wortlauts eines Rechtsdokuments als Entwurf; der gültige Wortlaut bleibt unverändert, veröffentlicht wird er von einem Menschen in der Anwendung mit Vergleich und Prüfprotokoll.
affiliate_documents_get affiliate:read GET /affiliate/documents/:key/content Ein Rechtsdokument des Programms mit Wortlaut je Sprache (gespeicherter Text, öffentlicher Wortlaut, Version, Hashes, Quelle, PDF-Metadaten) und offenen Entwürfen.
affiliate_documents_list affiliate:read GET /affiliate/documents Dokumente des Programms (Bedingungen, Vereinbarungen): Bestätigungsrichtlinie, unterschriebene Kopie, E-Mail-Anhang, Versionen je Sprache, Bereitschaft und Anzahl der Bestätigungen.
affiliate_documents_update affiliate:write — schreiben: Richtlinie eines Programmdokuments (für wen es gilt, wann es bestätigt wird, Bestätigungsart: Kenntnisnahme / elektronische Unterschrift / hochgeladene Kopie, E-Mail-Anhang, aktiviert); der Wortlaut wird in der Anwendung hochgeladen.
affiliate_email_templates_list affiliate:read GET /affiliate/email-templates Vorlagen der E-Mails an Partner je Sprache (Betreff, aktiviert, mit Ereignis auch der Text) und automatische Anhänge der E-Mail „Konto freigegeben“.
affiliate_email_templates_update affiliate:write — schreiben: Bearbeiten einer E-Mail-Vorlage für Partner in einer Sprache (Betreff, Text) oder Aktivieren/Deaktivieren eines Ereignisses.
affiliate_links_generate affiliate:read GET /affiliate/links/generate Nachverfolgter Partnerlink auf die Startseite, ein Produkt oder eine Kategorie des Kampagnen-Shops; erhält nach dem Klick die Zuordnung zum Partner.
affiliate_partners_get affiliate:read GET /affiliate/partners/:partnerId Ein Partner des Programms mit den Kampagnen, die ihm zur Verfügung stehen.
affiliate_partners_list affiliate:read GET /affiliate/partners Partner des Programms mit Status, Leistung und Provisionen; Kontaktdaten nur mit personenbezogenen Daten.
affiliate_partners_set_market affiliate:write — schreiben: Mitgliedschaft eines Partners in einem Shop: aktivieren (active, genehmigt auch eine Anfrage aus dem Portal) oder entziehen; Kampagnen, Gutscheine und Dokumente des Shops betreffen den Partner nur bei aktiver Mitgliedschaft.
affiliate_partners_set_state affiliate:write — schreiben: Entscheidung über ein Partnerkonto (freigeben, ablehnen, sperren, zurück zu den Wartenden); die Freigabe sendet die E-Mail mit der Vereinbarung.
affiliate_payouts_list affiliate:read GET /affiliate/payouts Auszahlungen von Provisionen an Partner mit Status; ohne Bank- und Rechnungsdaten.
affiliate_portal_get affiliate:read GET /affiliate/portal Öffentliches Partnerportal: Adressen je Shop, Offenheit der Registrierung mit Grund, eigene Domains, Kontaktperson, Erscheinungsbild und Status der Texte je Sprache.
affiliate_portal_pages_update affiliate:write — schreiben: Eigene Texte des öffentlichen Portals in einer Sprache (Seiten Anmeldung/Registrierung/Übersicht, Datenschutzhinweis, Programmbeschreibung); HTML wird bereinigt.
affiliate_settings affiliate:read GET /affiliate/settings Einstellungen des Partnerprogramms: Provisionen, Klicks, Mindestauszahlung, Empfehlungen.
affiliate_settings_update affiliate:write — schreiben: Nicht finanzielle Einstellungen des Programms: Name, Registrierung, automatische Freigabe, Kontaktperson, Farben, Link zur Datenschutzerklärung.
affiliate_signatures_get affiliate:read GET /affiliate/signatures/:signatureId Eine elektronische Unterschrift mit dem unterschriebenen Wortlaut und einer Momentaufnahme der Werte; ein unveränderlicher Eintrag, das PDF wird in der Anwendung erstellt.
affiliate_signatures_list affiliate:read GET /affiliate/signatures Elektronisch unterschriebene Dokumente der Partner (wer, Dokument, Version, Sprache, Shop, Zeit, Art, Prüfung, Hashes, Status) und Partner, denen eine Unterschrift fehlt; nur Lesen, eine Unterschrift entsteht ausschließlich im Portal.
affiliate_statistics affiliate:read GET /affiliate/statistics Statistik des Partnerprogramms: Verlauf nach Tagen, Zuordnungsquellen, Rangliste der Partner.
affiliate_summary affiliate:read GET /affiliate/summary Übersicht des Partnerprogramms eines Shops für einen Zeitraum: Klicks, Conversions, Provisionen, Partner.
affiliate_variables_list affiliate:read GET /affiliate/variables Register der Inhalts- und E-Mail-Variablen des Partnerprogramms: kanonische Namen, Aliasse, Typ, Einsatzorte, Beispiel; optionale Prüfung eines Textes auf unbekannte Variablen.
analytics_advertising reports:read GET /analytics/advertising Werbung: Ausgaben, Budget, ROAS, Werbekostenanteil, CPA, durchschnittlicher Bestellwert und MER mit Vergleich; Google Ads und Meta Ads, Klicks aus GA4, 6 Monate.
analytics_channels analytics:read GET /analytics/channels Besucherkanäle einschließlich ChatGPT und anderer KI-Quellen.
analytics_comparison reports:read GET /analytics/comparison Umsatz im Vergleich: Umsatz, Bestellungen, AOV, Besuche, CR und KI/LLM gegenüber dem Vorzeitraum oder Vorjahr.
analytics_monthly reports:read GET /analytics/monthly Umsatz, Bestellungen und Besuche nach Monaten (höchstens 24), zum Beispiel im Jahresvergleich.
analytics_order_coverage analytics:read GET /analytics/order-coverage Abdeckung der Bestellungen durch das Tracking.
analytics_order_heatmap reports:read GET /analytics/order-heatmap Wann Bestellungen eingehen: Wochentag × Stunde, stärkster Tag und stärkste Stunde.
analytics_overview analytics:read GET /analytics/overview Besuche, Bestellungen, Umsatz, Konversionsrate, AOV, Anteil der KI-Quellen.
analytics_revenue_sources reports:read GET /analytics/revenue-sources Woher der Umsatz kam: Kanäle, Summen für KI/LLM, MitoOps und Affiliate, Akquise laut GA4.
analytics_seo analytics:read GET /analytics/seo Search Console nach Suchanfrage oder Seite.
automations_catalog automations:read GET /automations/catalog Katalog der Automatisierungen: Auslöser, Bedingungsfelder, Operatoren, Aktionen, Vorlagen und catalogVersion.
automations_create_draft automations:write — schreiben: Erstellt einen DEAKTIVIERTEN Automatisierungsentwurf. Aktiviert und startet nichts.
automations_get automations:read GET /automations/:workflowId Eine Automatisierung mit DSL und Validierungsergebnis.
automations_list automations:read GET /automations Automatisierungen des Mandanten mit Status und Shop-Umfang.
automations_options automations:read GET /automations/options Optionsliste für ein Feld einer Automatisierung (Status, Versandarten, Zahlungen, Vorlagen, Reklamationen…): der Wert für die DSL und ein Name.
automations_revision_create_draft automations:write — schreiben: Schlägt eine Änderung einer veröffentlichten Automatisierung als Revision zur Freigabe durch einen Menschen vor; die laufende Version ändert sich nicht.
automations_revision_discard_draft automations:write — schreiben: Zieht eine offene Revision einer veröffentlichten Automatisierung zurück.
automations_revision_update_draft automations:write — schreiben: Bearbeitet eine offene Revision einer veröffentlichten Automatisierung.
automations_runs automations:read GET /automations/:workflowId/runs Verlauf der Ausführungen einer Automatisierung.
automations_templates automations:read GET /automations/templates Fertige Automatisierungsvorlagen mit DSL.
automations_update_draft automations:write — schreiben: Bearbeitet einen unveröffentlichten Automatisierungsentwurf mit optimistischer Nebenläufigkeitskontrolle.
automations_validate_draft automations:read — Prüft einen Automatisierungsentwurf, ohne zu schreiben.
chatbot_conversations_get chatbot-conversations:read GET /chatbot/conversations/:sessionId Transkript einer Unterhaltung mit dem Web-Chatbot einschließlich der Quellen der Bot-Antworten.
chatbot_conversations_list chatbot-conversations:read GET /chatbot/conversations Unterhaltungen von Kunden mit dem Web-Chatbot, beginnend mit der zuletzt aktiven, mit der ersten Frage; Cursor.
chatbot_outcomes chatbot:read GET /chatbot/outcomes How web chatbot conversations ended: since when the outcome is measured, measured and unmeasured conversations, known and unknown outcome, resolved, unresolved, bot error and resolution rate with its denominator; N/A with a reason when the denominator is zero. Totals only.
chatbot_stats chatbot:read GET /chatbot/stats Statistik des Web-Chatbots für einen Zeitraum: Trichter der Sprechblase aus einer einzigen Messung (ältere Zahlen kommen als historische mit), Öffnungsrate des Chats, Unterhaltungen, Ergebnis auf Ebene der Unterhaltung, Bewertungen.
chatbot_topics chatbot:read GET /chatbot/topics Worum es in den Unterhaltungen ging: Anteile der Themen aus einer geschlossenen Taxonomie, Lösungsrate und Kandidaten für Wissenslücken je Thema, die häufigsten Produkte, der Typ der Startseite und der Verlauf nach Tagen. Die Anteile werden aus den ausgewerteten Unterhaltungen berechnet, deren Anzahl ebenfalls geliefert wird. Nur Summen.
claims_config_change_draft claims-settings:draft — schreiben: Schlägt eine Änderung an Reklamationsprozessen, Status, Tags, Vorlagen, Formulartexten und Moduleinstellungen vor; geschrieben wird sie erst, wenn ein Mensch sie in der Anwendung freigibt.
claims_config_draft_get claims-settings:read GET /claims/config-drafts/:draftId Status eines Änderungsvorschlags für die Reklamationseinstellungen (wartend, geschrieben, abgelehnt).
claims_configuration claims-settings:read GET /claims/configuration Reklamationseinstellungen: Tags, Felder, Rückversand, das Formular im Shop und Formulartypen.
claims_get claims:read GET /claims/:code Eine Reklamation mit Positionen, Erstattungen, Rücksendungen, Tags, Zeitachse und versendeten E-Mails.
claims_list claims:read GET /claims Reklamationen und Retouren eines Shops mit Verknüpfung zur Bestellung.
claims_refund_options claims-settings:read GET /claims/refund-options Refunds: variable symbol source, refund coupon validity, coupon in the form, when the form asks for an account number.
claims_refund_readiness claims:read GET /claims/:code/refund-readiness Claim before a refund: what the customer requests, masked account, variable symbol, mode and whether the claim can be deleted.
claims_refund_settings claims-settings:read GET /claims/refund-settings Erstattungen von Reklamationen: Modus, Bankkonten mit Eignung für Zahlungsaufträge (maskiert), Standard- und manuelles Konto.
claims_routes claims-settings:read GET /claims/routes Rückversand für Reklamationen: Routen, Adressen, Versandprofile mit IDs und Retourenunterstützung, Falltypen.
claims_routes_change_draft claims-routes:draft — schreiben: Schlägt eine Rückversandroute (auch für die ganze EU oder weltweit) und eine Empfängeradresse vor; geschrieben durch Freigabe (oder autonomes Schreiben, falls eingeschaltet).
claims_settings claims:read GET /claims/settings Reklamationsprozesse mit IDs und Namen (Typen, Schritte, Status, Fristen), Tags; Moduleinstellungen mit dem Berechtigungsbereich claims-settings:read.
claims_statistics claims:read GET /claims/statistics Statistik der Reklamationen und Retouren für einen Zeitraum: Anzahlen, Bearbeitungszeiten, Typen, Bewertungen, Gründe.
claims_templates claims-settings:read GET /claims/templates E-Mail-Vorlagen der Reklamationen (Betreff, Text, wann und ob sie automatisch versendet werden) und Dokumentvorlagen.
content_articles_search products:read GET /content/articles Blogartikel und Shop-Inhalte aus dem kanonischen Spiegel nach Titel oder Text.
coupons_activation_link coupons:read GET /coupons/activation-link Ein Link, der einen VORHANDENEN Gutschein im Warenkorb des Kunden anwendet. Erstellt keine Gutscheine.
coupons_activation_status coupons:read GET /coupons/activation-status Ob sich ein Gutschein im Shop über den Aktivierungslink verwenden lässt: Spiegel des Gutscheins + Status des Codes auf der Website.
coupons_capabilities coupons:read GET /coupons/capabilities Was die Plattform des Shops mit Gutscheinen kann. Vor dem Anlegen lesen.
coupons_ensure coupons:write — schreiben: Stellt sicher, dass der Gutschein in den ausgewählten Shops existiert. Bei einem anderen Rabatt wird er NICHT überschrieben.
coupons_get coupons:read GET /coupons/:code Ein Gutschein nach Code.
coupons_list coupons:read GET /coupons Rabattgutscheine des Shops mit Rabattart und -höhe, Gültigkeit und abgeleitetem Status.
coupons_remove coupons:delete — schreiben: Unwiderrufliches Löschen eines Gutscheins im ausgewählten Shop: ohne Bestätigung nur eine Vorschau mit Abhängigkeiten, mit Bestätigung das Löschen; ein Gutschein mit einer aktiven Abhängigkeit wird nicht gelöscht.
coupons_update coupons:write — schreiben: Ausdrückliche Bearbeitung eines vorhandenen Gutscheins einschließlich Einschränkungen auf Produkte und Kategorien; Vorschau, dann Bestätigung.
customers_get customers:read GET /customers/:customerKey Ein Kunde aus dem Verzeichnis: Identität, Shops, Beträge über die gesamte Kundenbeziehung und optional für einen Zeitraum, aufgeschlüsselt nach Shop.
customers_list customers:read GET /customers Kundenverzeichnis: Identität (mit Maskierung personenbezogener Daten), Shops, Sprache, Anzahlen über die gesamte Kundenbeziehung und Umsatz je Währung; optionaler Filter nach Kaufaktivität in einem Zeitraum.
customers_performance reports:read GET /customers/performance Kunden als Pseudonyme: Bestellungen, Umsatz, LTV, neue und wiederkehrende.
credit_notes_search invoices:read GET /credit-notes Suche in Gutschriften.
documents_list invoices:read GET /documents Buchhaltungsbelege einer Art (Rechnungen, Proformarechnungen, Gutschriften) seitenweise mit Lebenszyklus, Status in der Quelle, Gültigkeitsfilter und PDF-Verfügbarkeit.
documents_pdf_link invoices:read — Kurzlebiger Link (10 Minuten) zum PDF einer Rechnung, Proformarechnung oder Gutschrift zum Öffnen im Browser.
invoices_get invoices:read GET /invoices/:invoiceCode Eine Rechnung mit Belegpositionen, Gutschriften, Proformarechnungen und der Bestellnummer.
invoices_search invoices:read GET /invoices Suche in Rechnungen.
inventory_movements inventory:read GET /inventory/movements Verlauf der Lagerbewegungen: wann, was, wie viel, Art, Herkunft, Bestellung.
inventory_product_availability inventory:read GET /inventory/availability Lagerbestand mehrerer Positionen auf einmal.
inventory_stock inventory:read GET /inventory/stock Lagerbestand einer Position einschließlich der Quelle des Wertes.
orders_get orders:read GET /orders/:orderCode Eine gespeicherte Bestellung einschließlich Positionen.
orders_list orders:read GET /orders Gespeicherte Bestellungen eines Shops, die neueste zuerst.
availabilities_change_draft availabilities:draft — schreiben: Ein VORSCHLAG zur Änderung der Verfügbarkeitsliste (anlegen, bearbeiten, löschen). In den Shop schreibt ihn erst ein Mensch, indem er ihn in MitoOps freigibt.
availabilities_draft_get products:read GET /availabilities/drafts/:draftId Status eines Änderungsvorschlags für die Verfügbarkeitsliste: wartet auf Freigabe, mit Ergebnis geschrieben, abgelehnt, abgelaufen.
availabilities_list products:read GET /availabilities Verfügbarkeitsliste des Shops: Name, Beschreibung, Einlagerungs- und Lieferzeit, Bedeutung für Google, Farbe, Standardrolle.
categories_content_change_draft category-content:draft — schreiben: VORSCHLAG neuer Kategorietexte (bis zu 30 auf einmal); in den Shop schreibt sie erst ein Mensch durch Freigabe in MitoOps.
categories_content_draft_get category-content:read GET /catalog/category-content-drafts/:draftId Status eines Kategorietext-Vorschlags: wartet auf Freigabe, geschrieben, abgelehnt, abgelaufen.
categories_content_get category-content:read GET /categories/:guid/content Texte einer Kategorie (obere und untere Beschreibung, SEO-Titel und -Beschreibung) mit Hash und Schreibbarkeit.
categories_list products:read GET /categories Kategorien des Shops mit Anzahl der Produkte.
products_content_change_draft product-content:draft — schreiben: VORSCHLAG neuer Produkttexte (bis zu 30 auf einmal); in den Shop schreibt sie erst ein Mensch durch Freigabe in MitoOps.
products_content_draft_get product-content:read GET /catalog/product-content-drafts/:draftId Status eines Produkttext-Vorschlags: wartet auf Freigabe, geschrieben mit Shop-Hinweisen, abgelehnt, abgelaufen.
products_content_get product-content:read GET /products/:code/content Texte eines Produkts aus dem Shop (Beschreibung, Kurzbeschreibung, SEO-Titel und -Beschreibung) mit Hash und Schreibbarkeit.
products_content_policy product-content:read GET /product-content/policy Inhaltsrichtlinie des Shops ohne Aufruf des Shops: was dieser Zugang lesen und vorschlagen darf, welche Felder die Plattform schreibt, Freigabemodus und autonomes Schreiben, Limits und Hashes.
products_get products:read GET /products/:code Ein Produkt nach Code einschließlich Kategorie und Preis aus der Produktkarte.
products_search products:read GET /products Produktsuche nach Name, Code, EAN oder PLU.
reports_financial_summary reports:read GET /reports/financial-summary Finanzübersicht eines Zeitraums; mit purchase-prices:read auch Wareneinsatz, Rohgewinn und Marge.
sales_order_performance reports:read GET /sales/order-performance Umsatz je Bestellung mit Summen für den gesamten Zeitraum; mit purchase-prices:read auch Einkauf, Gewinn und Marge.
sales_product_performance reports:read GET /sales/product-performance Verkäufe je Produkt mit Summen für den gesamten Zeitraum.
search_console_query search-console:read GET /search-console/query Search Console nach Tag, Suchanfrage, Seite, Land und Gerät, mit Paginierung und Inhalts-Hash.
search_console_status search-console:read GET /search-console/status Search-Console-Status eines Shops: Verbindung, Property, Berechtigung, Synchronisierung und Umfang des Archivs.
shipping_carriers shipping:read GET /shipping/carriers Verbundene Versanddienstleister und Profile, ohne Zugangsdaten.
shipping_shipment_detail shipping:read GET /shipping/shipments/:shipmentId Eine Sendung mit allen Sendungsverfolgungsereignissen.
shipping_shipments shipping:read GET /shipping/shipments Sendungen mit Versanddienstleister, Land, Übergabe- und Zustellzeit, seitenweise.
shipping_stats shipping:read GET /shipping/stats Zustellstatistik je Versanddienstleister: Anzahlen, Erfolgsquote, Median und p90 der Zustellzeit, Länder.
stores_integration_status stores:read GET /stores/integration-status Status des MitoOps-Codes auf der Website je Shop: installiert, Version, Module, Bereitschaft des Gutscheins per Link.
stores_list stores:read GET /stores Shops des Mandanten mit ihrem Code.
suppliers_get purchasing:read GET /suppliers/:supplierId Ein Lieferant mit Angeboten und Kostenbestandteilen.
suppliers_list purchasing:read GET /suppliers Lieferanten mit Angeboten und Kostenbestandteilen.
webhooks_deliveries webhooks:read GET /webhooks/endpoints/:endpointId/deliveries Zustellungsprotokoll eines Endpoints ohne Inhalte.
webhooks_endpoint webhooks:read GET /webhooks/endpoints/:endpointId Ein Webhook-Endpoint mit der Anzahl ausstehender Zustellungen.
webhooks_endpoints webhooks:read GET /webhooks/endpoints Webhook-Endpoints des Mandanten ohne Secrets und der Zustand der Warteschlange.
webhooks_events webhooks:read GET /webhooks/events Katalog der Ereignisse ausgehender Webhooks, Umschlag und Signatur.

Name, E-Mail, Telefon und Straße des Kunden sind in orders_list, orders_get, claims_list und claims_get nur mit dem Berechtigungsbereich personal-data:read enthalten; ohne ihn trägt die Antwort Land und Ort. Dasselbe gilt für die Kontaktdaten von Lieferanten und Partnern des Programms (affiliate_partners_*). Der Berechtigungsbereich hat kein eigenes Tool.

Im Kundenverzeichnis (customers_list, customers_get) entscheidet derselbe Berechtigungsbereich über Name, Firma, E-Mail, Telefon und das Marketing-Geschlecht; ohne ihn bleiben Pseudonym, Shops, Land, Sprache, Anzahlen und Daten. Umsatz und LTV liegen zusätzlich hinter reports:read. Das Marketing-Geschlecht ist eine Schätzung aus dem Vornamen (genderSource: "name_inference"), keine Angabe des Kunden, und so soll es ein Assistent auch darstellen. Bank- und Steuerdaten von Partnern werden nie ausgegeben.

Web-Chatbot: Themen der Unterhaltungen. chatbot_topics (derselbe Berechtigungsbereich chatbot:read) beantwortet die Frage „Worum ging es?“ mit einem einzigen Aufruf: den Anteil der Unterhaltungen je Thema aus einer geschlossenen Taxonomie, die Lösungsrate und die Anzahl der Kandidaten für Wissenslücken je Thema, die häufigsten Produkte (nach denen Kunden gefragt und die der Bot empfohlen hat), den Seitentyp, auf dem die Unterhaltungen beginnen, und den Verlauf nach Tagen. Die Auswertung ist deterministisch, zwei Aufrufe über denselben Zeitraum liefern also dieselben Zahlen. Sie liefert nur Summen: Text von Kunden gelangt auf keinem Weg hinein, auch nicht als „häufigste Frage“. Jeder Anteil kommt mit seiner Anzahl. chatbot_conversations_list hat die Filter topic und knowledgeGapCandidate; das Transkript einer bestimmten Unterhaltung bleibt hinter dem sensiblen Berechtigungsbereich und innerhalb der Aufbewahrungsfrist.

Web-Chatbot. Die Statistik (chatbot_stats, Berechtigungsbereich chatbot:read) liefert nur Summen: wie vielen Seitenbesuchen die Sprechblase angezeigt wurde und wie viele davon darauf geklickt haben, Fensteröffnungen, Anzahl der Unterhaltungen und Nachrichten, was der Bot erledigt hat, Bewertungen der Kunden und den Trichter der Newsletter-Anmeldung. Die Unterhaltungen der Kunden (chatbot_conversations_list, chatbot_conversations_get) liegen hinter einem eigenen sensiblen Berechtigungsbereich chatbot-conversations:read, den Sie auf dem Einwilligungsbildschirm bewusst anhaken: Der Kunde ist in den Aufzeichnungen nur ein zufälliger Schlüssel der Unterhaltung (ohne IP, Cookie, Name oder E-Mail); E-Mail, Telefon und IBAN, die der Kunde in den Text geschrieben hat, erhält der Assistent nur mit personal-data:read, sonst sieht er an ihrer Stelle die Platzhalter [e-mail], [telefón], [iban]. Unterhaltungen werden nur innerhalb der Aufbewahrungsfrist des Shops ausgegeben (Einstellung Verlauf im KI-Zentrum); ein Shop mit Aufbewahrungsfrist null gibt nichts aus. Bis zum 21. 9. 2026 wurden Anzeigen der Sprechblase bei jedem Aufspringen der Meldung gezählt; seit dem 22. 9. 2026 ist eine Anzeige ein Seitenbesuch, und measurementChanges in der Antwort gibt an, ob der gewählte Zeitraum beide Messungen mischt.

Jedes Tool hat ein REST-Gegenstück über derselben Fähigkeit. Die Antworten unterscheiden sich im Umschlag, die Geschäftsdaten sind identisch. Zeitraum, Paginierung und die Bedeutung der Finanzfelder sind in der REST-Schnittstelle beschrieben.

Zusammenfassende Tools (shipping_stats, analytics_*, reports_financial_summary) liefern fertige Zahlen aus der Anwendung: Der Assistent muss keine Tausende von Datensätzen herunterladen und selbst rechnen. Die Rohlisten (shipping_shipments, orders_list) bleiben für die Detailansicht.

Nach der Verbindung beantwortet Claude.ai aus den Daten von MitoOps zum Beispiel:

  • „Wie war die Verteilung auf die Versanddienstleister im August?“: shipping_stats
  • „Wie hoch war der Median der Zustellzeit bei DHL und GLS?“ und „Wie viele wurden nicht zugestellt oder zurückgeschickt?“: shipping_stats
  • „In welche Länder haben wir über DHL versendet?“: shipping_stats (Feld countries)
  • „Wie hoch waren Umsatz und Konversionsrate im August?“: analytics_overview oder reports_financial_summary
  • „Wie viele Bestellungen und wie viel Umsatz kamen von ChatGPT?“: analytics_channels
  • „Welche Suchanfragen hatten die höchste CTR?“: analytics_seo
  • „Wie hoch ist die Marge von Produkt X im letzten Monat?“: sales_product_performance (mit purchase-prices:read)
  • „Wonach haben Kunden den Chatbot diesen Monat am häufigsten gefragt, und worüber sollte der nächste Blogartikel sein?“: chatbot_conversations_list und chatbot_conversations_get (mit chatbot-conversations:read)
  • „Wie viele Unterhaltungen hatte der Chatbot, und wie viele davon hat er ohne Support gelöst?“: chatbot_stats
  • „Welche Verfügbarkeiten hat der SK-Shop, und welche sind die Standardwerte?“ (availabilities_list)
  • „Füge im SK-Shop die Verfügbarkeit Vorbestellung Oktober mit der Bedeutung Vorbestellung und Lieferung innerhalb von 14 Tagen hinzu“ (availabilities_change_draft mit availabilities:draft; es entsteht ein Vorschlag, den Sie durch Freigabe in der Anwendung schreiben)
  • „Ändere die aktivierte Automatisierung 12 so, dass sie nur bei der Versandart Kurier benachrichtigt“ (automations_options für die Versandart, dann automations_revision_create_draft; die laufende Version bleibt unverändert, bis Sie die Revision im Editor veröffentlichen)
  • „Welche Reklamations-E-Mails werden automatisch versendet, und was steht auf Deutsch darin?“ (claims_templates mit claims-settings:read)
  • „Benenne den Reklamationsstatus Wartet auf Ware in Wir warten auf die Sendung um“ (claims_settings für die ID, dann claims_config_change_draft mit claims-settings:draft; Sie schreiben ihn durch Freigabe in der Anwendung)

Lesen und eng begrenzte Schreibzugriffe: Automatisierungen, Gutschein, Partnerprogramm, Verfügbarkeiten, Reklamationen

Abschnitt betitelt „Lesen und eng begrenzte Schreibzugriffe: Automatisierungen, Gutschein, Partnerprogramm, Verfügbarkeiten, Reklamationen“

Betriebsdaten (Bestellungen, Lagerbestand, Produkte, Belege, Sendungen) werden über MCP nur gelesen. Jeder Schreibzugriff liegt hinter einem eigenen sensiblen Berechtigungsbereich: ein Automatisierungsentwurf, ein Rabattgutschein, die Verwaltung des Partnerprogramms, eine Entscheidung über eine Provision, ein Änderungsvorschlag für die Verfügbarkeitsliste, den erst ein Mensch in den Shop schreibt, und ein Änderungsvorschlag für die Reklamationseinstellungen, den ebenfalls erst ein Mensch schreibt.

Automatisierungsentwurf: Mit dem Berechtigungsbereich automations:write ist es ein deaktivierter Entwurf: Der Assistent kann anhand des Katalogs (automations_catalog) eine Regel entwerfen und als Entwurf speichern oder einen Entwurf bearbeiten, den noch niemand veröffentlicht hat. Der Entwurf erscheint unter Automatisierungen wie jede andere angefangene Arbeit. Aktivieren, veröffentlichen oder ausführen können ihn nur Sie in der Anwendung. Eine veröffentlichte Automatisierung ändert der Assistent nicht direkt.

Revision einer laufenden Automatisierung. Mit automations:write kann der Assistent auch eine veröffentlichte und aktivierte Automatisierung ändern, aber nur als Vorschlag: automations_revision_create_draft (Eingabe workflowId, expectedPublishedVersion aus automations_get, catalogVersion, die vollständige neue dsl, note und clientRequestId) speichert eine Revision neben der laufenden Version. Die laufende Automatisierung ändert sich nicht und arbeitet weiter. Eine Automatisierung hat höchstens eine offene Revision; sie wird mit automations_revision_update_draft und expectedRevisionVersion bearbeitet und mit automations_revision_discard_draft verworfen. Die Antwort trägt approvalUrl, einen Link in den Editor der Automatisierung. Dort sieht ein Mensch mit dem Recht, Automatisierungen zu bearbeiten, die Revision im oberen Bereich, lädt sie in den Editor (Schaltfläche Vorschlag in den Editor laden), prüft sie und veröffentlicht sie mit der üblichen Schaltfläche; die Automatisierung bleibt aktiviert. Oder er lehnt sie ab. Hat in der Zwischenzeit jemand eine andere Version veröffentlicht, wird die Revision geschlossen (REVISION_STALE), und es muss eine neue vorbereitet werden. automations_get liefert die offene Revision und den Verlauf (openRevision, revisions).

Optionslisten und Prüfung der Werte. Felder, die im Editor aus einer Liste gewählt werden (Bestellstatus, Versandart, Zahlungsart, Profil des Versanddienstleisters, Benachrichtigungsvorlage, Typ, Status, Tag und Vorlagen der Reklamation, Webhook-Endpoint und weitere), haben im Katalog eine Quelle. automations_options mit source und market liefert ihre Werte [{ value, name }] genau in der Form, die der Editor speichert (Status-ID, GUID von Versand- und Zahlungsart, ID des Reklamationsstatus); ohne source listet es die Quellen auf und ob sie sich je Shop unterscheiden (perShop). Die Validierung (automations_validate_draft) und das Speichern eines Entwurfs oder einer Revision lehnen einen Wert ab, der im Shop nicht existiert (FIELD_UNKNOWN_OPTION), sowie Platzhaltertext wie DOPLNIT_… oder TODO (FIELD_PLACEHOLDER). Lässt sich die Liste nicht prüfen (der Shop hat nicht geantwortet, die Liste ist gekürzt), kommt nur die Warnung FIELD_OPTIONS_UNVERIFIED. orders_get und orders_list tragen statusId, shippingGuid und paymentGuid, also dieselben Werte, mit denen die Bedingungen von Automatisierungen arbeiten.

Der Berechtigungsbereich automations:write ist sensibel: Auf dem Einwilligungsbildschirm ist er nicht vorausgewählt, er wird nur einem Menschen mit dem Recht angeboten, Automatisierungen zu bearbeiten, bestehende Verbindungen erhalten ihn nicht, und eine Erneuerung des Tokens erweitert ihn nicht. Bestellungen, Produkte, Lagerbestand, Belege, Erstattungen, Reklamationsfälle und Sendungen lassen sich über MCP nicht ändern; die Verfügbarkeitsliste eines Shops und die Reklamationseinstellungen ändern sich nur über einen Vorschlag, den ein Mensch in der Anwendung freigibt (siehe unten). Webhook-Endpoints werden über MCP nur gelesen. Zugangsdaten zu Versanddienstleistern, zum Shop oder zur Analytik lassen sich über MCP nicht lesen.

Rabattgutschein: Mit dem Berechtigungsbereich coupons:write legt der Assistent einen Gutschein nach den Parametern an, die Sie ihm geben (coupons_ensure, auch den Gutschein eines Partners über affiliate_discount_codes_ensure), und bearbeitet ausdrücklich einen vorhandenen (coupons_update, Vorschau und Bestätigung); das Löschen hat einen eigenen Berechtigungsbereich coupons:delete, und ein Gutschein mit einer aktiven Abhängigkeit wird nicht gelöscht.

Verwaltung des Partnerprogramms: Mit dem Berechtigungsbereich affiliate:write entscheidet der Assistent über ein Partnerkonto (affiliate_partners_set_state: freigeben, ablehnen, sperren; der Partner erhält eine E-Mail, je nach Dokumentrichtlinie auch mit dem PDF der Vereinbarung), bearbeitet eine Anfrage nach einem eigenen Code (affiliate_code_requests_decide), ändert die nicht finanziellen Einstellungen des Programms (affiliate_settings_update: Name, Registrierung, Kontaktperson, Farben), die Texte des Portals in einer Sprache (affiliate_portal_pages_update), Hilfeartikel (affiliate_articles_create, affiliate_articles_update einschließlich Wiederherstellung des Standardwortlauts, affiliate_articles_set_state; kein Löschen von außen), E-Mail-Vorlagen (affiliate_email_templates_update), Kampagnen (affiliate_campaigns_create, affiliate_campaigns_update), die Dokumentrichtlinie (affiliate_documents_update) und die Mitgliedschaft eines Partners in einem Shop (affiliate_partners_set_market: aktivieren oder entziehen). Den Wortlaut der Rechtsdokumente liest er (affiliate_documents_get: Text je Sprache, Version, Hashes, Entwürfe), und einen neuen Wortlaut schlägt er nur als Entwurf vor (affiliate_documents_draft_create; auch privacyNotice in affiliate_portal_pages_update ist ab dieser Version ein Entwurf). Den gültigen Wortlaut veröffentlicht ein Mensch in der Anwendung mit Vergleich und Prüfprotokoll. Das Register der Inhalts- und E-Mail-Variablen (kanonische Namen, Aliasse, Typ, Einsatzorte) liefert affiliate_variables_list; affiliate_email_templates_list liefert Variablennamen, keine Indizes. Auszahlungen, die Provisionsbasis und das Hochladen einer Dokumentdatei gibt es über MCP nicht, sie bleiben in der Anwendung.

Entscheidung über Provisionen: Mit einem eigenen sensiblen Berechtigungsbereich affiliate:approve (das Recht Freigabe von Provisionen, nicht Verwaltung des Programms) liest der Assistent zuerst die wartenden Provisionen zusammen mit dem Bestellstatus im Shop (affiliate_conversions_list mit state=new, Detail affiliate_conversions_get: Provisionsbasis revenue, Bestellsumme inkl. MwSt. revenueTotal, orderState open/completed/cancelled, orderPaid, Gutschrift), fasst sie zusammen und entscheidet erst auf ausdrückliche Anweisung des Benutzers über eine bestimmte Conversion (affiliate_conversions_decide: approve, reject oder cancel; Ablehnung und Stornierung erfordern einen Grund, den der Partner per E-Mail erhält). Es gilt derselbe Zustandsautomat wie in der Anwendung: Eine ausgezahlte Provision wird nie zurückgesetzt, storniert und abgelehnt sind Endzustände, dieselbe Entscheidung ein zweites Mal ändert nichts (changed: false). Eine Sammelfreigabe gibt es von außen nicht: Hundert Conversions bedeuten hundert Aufrufe, jeder mit Prüfprotokoll. Seit W-AFF10 trägt jede Conversion außerdem approvalPolicy (Freigabemodus der Kampagne, Frist, erlaubte Bestellstatus, Zahlungsbedingung) und approvalEligibility: ob die stündliche Automatik sie jetzt freigeben würde und warum nicht (minimum_age_not_reached, order_state_not_allowed, order_not_paid, order_cancelled, fully_refunded, approval_manual…), dieselbe Berechnung wie in der Anwendung. Die Liste hat die Filter orderPaid, minCommission, orderState und die Paginierung mit offset + hasMore, sodass „geh die neuen Conversions der letzten zwei Monate durch, zeig die unbezahlten oder die über 20 €“ ein einziger oder wenige Lesezugriffe ist. Die Bedingungen einer Kampagne setzt affiliate_campaigns_update (approval, approveAfterDays, requiredOrderStatusIds, paidRequired) mit dem Berechtigungsbereich affiliate:write. Auszahlungen an Partner werden über MCP nur gelesen (affiliate_payouts_list): Einen Auszahlungsstapel erstellen, seinen Beleg erzeugen, ihn an den Partner senden oder einen Bankauftrag einreichen kann der Assistent nicht; das bleibt in der Anwendung in der Hand des Betreibers.

Änderungsvorschlag für die Verfügbarkeitsliste. Mit dem sensiblen Berechtigungsbereich availabilities:draft bereitet der Assistent einen Vorschlag vor, in einem Shop Verfügbarkeiten anzulegen, zu bearbeiten oder zu löschen (availabilities_change_draft, nur MCP). In den Shop schreibt er nichts: Er prüft den Vorschlag, speichert ihn für 24 Stunden in MitoOps und liefert die draftId, eine Vorschau je Position (preview mit jedem Feld vorher und nachher, warnings und errors), expiresAt und eine approvalUrl, die auf die Ansicht Lager → Verfügbarkeiten führt, wo der Vorschlag in der Registerkarte Verwaltung wartet. Dort gibt ihn ein Mensch mit der passenden Berechtigung über die Schaltfläche Genehmigen und schreiben frei oder lehnt ihn ab, und das Schreiben läuft mit den Rechten dieses Menschen zum Zeitpunkt des Klicks. Hat sich die Liste des Shops seit dem Vorschlag geändert, schreibt die Freigabe nichts, und der Vorschlag endet als failed. availabilities_draft_get liefert den Status und das Ergebnis je Position: pending, writing, executed, partial, failed, rejected oder expired. Meldet die Vorschau eine Blockierung, entsteht kein Vorschlag (blocked), und ebenso wenig, wenn sich nichts ändern würde (no_change).

Die Eingabe ist market und changes (höchstens 30 Positionen). Jede Änderung hat eine action (create, update oder remove), bei Bearbeitung und Löschung die id aus availabilities_list und nur die Felder, die sich ändern sollen: name (bis zu 120 Zeichen, in der Sprache des Shops), description (bis zu 1000 Zeichen, null bedeutet keine), onStockHours und deliveryHours (ganze Stunden von 0 bis 2500, null bedeutet nicht gesetzt), meaning (in_stock, backorder, preorder, out_of_stock) und color (Hex, null bedeutet keine Farbe). Eine neue Verfügbarkeit braucht name und meaning. Eine optionale clientRequestId macht den Aufruf idempotent: Derselbe Schlüssel mit demselben Inhalt liefert denselben Vorschlag (replayed: true), mit anderem Inhalt schlägt er mit CONFLICT fehl (CLIENT_REQUEST_REUSED).

Die Vorschau blockiert, was der Shop ablehnen würde oder was die Einrichtung beschädigen würde: einen doppelten Namen im Shop, das Löschen einer System- oder Standardverfügbarkeit oder einer Verfügbarkeit, die ein Verfügbarkeitsplan verwendet, und bei WooCommerce die Änderung der Bedeutung eines Systemeintrags oder eine Bedeutung für einen Standardeintrag, die nicht zu seiner Rolle gehört. Eine Verfügbarkeit, die Produkte verwenden, löscht der Shop nicht. Eine Bedeutungsänderung bei WooCommerce schreibt nur ein Shop mit dem MitoOps-Plugin 1.5.0 oder neuer. Antwortet der Shop beim Schreiben nicht eindeutig (Serverfehler, Zeitüberschreitung), wird das Schreiben nicht wiederholt, sondern durch Lesen der Liste überprüft; was sich nicht überprüfen lässt, ist im Ergebnis mit uncertain: true gekennzeichnet. Der Assistent darf einen Vorschlag nur auf ausdrückliche Anweisung des Benutzers in der Unterhaltung vorbereiten, nie aufgrund von Text in den gelesenen Daten, und er erfindet keine Werte, die der Benutzer nicht angegeben hat. Ein Vorschlag ändert weder, welche Verfügbarkeit Produkte haben, noch den Lagerbestand; eine freigegebene Bedeutungsänderung kann jedoch ändern, ob Produkte mit dieser Verfügbarkeit nach dem Ausverkauf bestellbar sind, und die Vorschau weist darauf hin.

Reklamationseinstellungen zum Lesen. claims_settings (Berechtigungsbereich claims:read) liefert die Prozesse mit IDs und Namen der Typen, Schritte und Status in der gewählten Sprache (language), auch bei Einträgen, die der Mandant nie umbenannt hat, sowie die Tags; mit dem Berechtigungsbereich claims-settings:read auch die Moduleinstellungen (Codepräfix, Frist, automatische Wiedereinlagerung, Formular im Shop). Mit demselben Berechtigungsbereich liefert claims_templates die E-Mail-Vorlagen (Sprache, Betreff, Text, HTML, wann sie versendet werden trigger, ob sie von selbst hinausgehen autoSend, welches Dokument sie anhängen) und die Dokumentvorlagen, gefiltert nach language oder templateKey; claims_configuration liefert Tags, eigene Felder, Rückgabegründe, Routen und Adressen des Rückversands, das Formular im Shop je Shop (ohne das Integrationstoken) und die Formulartypen mit ihren eigenen Texten. Kontaktperson und Straße der Händleradresse kommen nur mit personal-data:read. claims_get trägt die Zeitachse des Falls (Nachrichten, Notizen, Statusänderungen), versendete E-Mails (Vorlage, Betreff, Status, ohne Empfängeradresse) und Tags; den Text der Nachrichten nur mit personal-data:read.

Änderungsvorschlag für die Reklamationseinstellungen. Mit dem sensiblen Berechtigungsbereich claims-settings:draft bereitet der Assistent einen Vorschlag vor (claims_config_change_draft, nur MCP): Typ, Schritt und Status eines Prozesses anlegen oder bearbeiten (Namen je Sprache, Farbe, Standard- und Abschlussstatus, Frist), einen Tag, den Text einer E-Mail-Vorlage in einer Sprache, ihren automatischen Versand und den Text einer Dokumentvorlage. Löschen gibt es nicht. In die Einstellungen schreibt er nichts: Er prüft den Vorschlag mit denselben Regeln wie die Ansicht (eine unbekannte Variable in einer Vorlage blockiert ihn zum Beispiel), speichert ihn für 72 Stunden in MitoOps und liefert draftId, eine Vorschau (preview, Feld vorher und nachher, errors), expiresAt und approvalUrl, einen Link zu Reklamationen → Einstellungen, wo der Vorschlag im Bereich Änderungsvorschläge zur Freigabe wartet. Ein Mensch mit dem Recht, die Einstellungen zu verwalten, gibt ihn frei (Freigeben und schreiben) oder lehnt ihn ab. Der Vorschlag wird vollständig geschrieben oder gar nicht: Hat sich ein Wert seit der Vorbereitung des Vorschlags geändert, wird nichts geschrieben, und der Vorschlag endet als failed. claims_config_draft_get liefert den Status (pending, executed, failed, rejected, expired); meldet die Vorschau einen Fehler, entsteht kein Vorschlag (blocked), und ebenso wenig, wenn sich nichts ändert (no_change). IDs und Schlüssel nimmt der Assistent aus claims_settings und claims_templates; clientRequestId macht den Aufruf idempotent.

Die Tools tragen Annotationen gemäß der Protokollrevision (readOnlyHint, destructiveHint, idempotentHint); automations_create_draft ist über clientRequestId idempotent, automations_update_draft erfordert expectedVersion und liefert bei einer Änderung des Katalogs CATALOG_CHANGED; automations_revision_create_draft ist über clientRequestId idempotent, und automations_revision_update_draft erfordert expectedRevisionVersion.

Der Server spricht die Revision 2026-07-28 und auch ältere (2025-11-25, 2025-06-18, 2025-03-26). Der Client wählt selbst, je nachdem, was er sendet; ältere Client-Bibliotheken verbinden sich also ohne Anpassung.

Die neuere Revision kommt ohne einleitenden Handshake und ohne Sitzung aus: Jede Anfrage trägt ihre eigene Version und die Pflicht-Header MCP-Protocol-Version, Mcp-Method und beim Aufruf eines Tools Mcp-Name. Weicht ein Header vom Body ab, lautet die Antwort 400: Nach den Headern zu routen und nach dem Body auszuführen würde zwei Wahrheitsquellen für denselben Aufruf bedeuten.