Zum Inhalt springen

Bestätigung

Jede Schreibaktion außer approve_transactions und import_transactions durchläuft eine einzige Funktion, confirm.ask, bevor sie etwas ändert. Diese Seite beschreibt genau, was sie tut.

Jedes Tool baut einen Gegenstand: die genaue Änderung, als Daten.

Tool Gegenstand
apply_categories die Liste der Änderungen (Transaktion, Kategorie danach)
set_category_budget Kategorie, Monat (aufgelöst), Betrag in Milliunits
move_money beide Kategorien, Monat (aufgelöst), umgeschichteter Betrag in Milliunits
flag_transactions die Markierungen (Buchung, Farbe nachher)
set_category_target Kategorie, die gesendeten Zielfelder (Betrag in Milliunits, Datum oder Häufigkeit)
update_category Kategorie, Name danach, Gruppe danach
create_category Gruppe, Name
create_transactions Konto, die Transaktionen, approved
reconcile_account Konto, Kontostand der Bank, anzupassende Differenz
split_transaction Transaktion, die Zeilen (Betrag, Kategorie, Verwendungszweck)
undo_operation die ID der Operation

Sein Fingerabdruck ist der SHA-256 des JSON [plan_id, subject], mit sortierten Schlüsseln; bei einer Liste von Änderungen spielt die Reihenfolge der Elemente keine Rolle. Eine Antwort oder ein Code bestätigt immer nur den Gegenstand, dessen Fingerabdruck er trägt.

ask prüft, was der Client beim Verbindungsaufbau erklärt hat, und wählt eine davon:

1. Der Client unterstützt Elicitation, Protokoll 2026-07-28

Abschnitt betitelt „1. Der Client unterstützt Elicitation, Protokoll 2026-07-28“

Im aktuellen MCP-Protokoll kann ein Server dem Client während eines Aufrufs keine eigene Anfrage senden. avenir-mcp nutzt den Hin- und Rückweg input required:

  1. Der erste Aufruf gibt statt der Antwort des Tools ein InputRequiredResult zurück. Es enthält eine Anfrage, confirm, ein Formular mit einem einzigen booleschen Feld value, dessen Nachricht die Vorschau ist (bis zu 20 Änderungen, dann „… and N more“), und einen request_state: den Fingerabdruck.
  2. Der Client zeigt das Formular. Der Nutzer setzt ein Häkchen oder lehnt ab.
  3. Der Client ruft das Tool erneut mit denselben Argumenten auf, die Antwort in input_responses und den erhaltenen request_state. FastMCP versiegelt diesen Zustand auf dem Übertragungsweg und weist Manipulationen zurück.
  4. avenir-mcp berechnet den Plan und seinen Fingerabdruck neu. Weichen sie von request_state ab – jemand hat den Plan inzwischen geändert –, schlägt der Aufruf mit „The plan changed between the preview and the answer“ fehl, und nichts wird geschrieben.

2. Der Client unterstützt Elicitation, älteres Protokoll

Abschnitt betitelt „2. Der Client unterstützt Elicitation, älteres Protokoll“

Der Server fragt während des Aufrufs (ctx.elicit) mit demselben Ja/Nein-Formular und wartet auf die Antwort.

Der erste Aufruf gibt status: "confirmation_required", die Vorschau und einen Bestätigungscode zurück. Der Agent zeigt dem Nutzer die Vorschau und ruft, nur wenn dieser zustimmt, erneut mit denselben Argumenten plus confirmation auf.

Antwort Ergebnis
Formular angenommen, Häkchen gesetzt applied
Formular angenommen, Häkchen nicht gesetzt declined
decline declined – nichts geschrieben
cancel (weggeklickt, oder ein Client, der es nicht anzeigen kann) Rückfall auf einen Bestätigungscode

Wegklicken ist keine Ablehnung: Clients ohne Oberfläche klicken jede Frage weg, und das als Nein zu werten, würde jede Schreibaktion unmöglich machen – der Fehler, den die Evaluierung von avenir-mcp bei ihrem ersten Lauf fand.

Eigenschaft Wert
Format 11 URL-sichere Zeichen (secrets.token_urlsafe(8))
Lebensdauer 600 Sekunden, auf einer monotonen Uhr
Verwendung einmal: Ein Code ist bei seiner ersten Verwendung verbraucht, auch wenn er nicht passt
Geltungsbereich der Fingerabdruck eines Gegenstands in einem Plan
Speicherung nur im Speicher des Servers: Ein Neustart vergisst jeden Code

Ein unbekannter, abgelaufener, bereits verwendeter oder für andere Änderungen ausgegebener Code wird abgelehnt mit: „This confirmation code is unknown, expired, already used, or was issued for different changes. Call again without confirmation to get a new preview.“

Ein Bestätigungscode beweist, dass es eine Vorschau gab, nicht, dass Sie sie gelesen haben. Mit AVENIR_MCP_REQUIRE_ELICITATION=1:

Situation Ohne die Variable Mit ihr
der Client kann fragen, Sie sagen Ja applied applied
Frage weggeklickt ein Bestätigungscode declined
der Client kann nicht fragen ein Bestätigungscode Fehler: nichts geändert
ein Code confirmation wird übergeben geprüft, dann angewendet Fehler: Codes sind abgeschaltet

Nur Clients, die MCP-Elicitation unterstützen, können dann schreiben.

Die Fragen stammen vom Server und sind auf Englisch:

Tool Frage
apply_categories Recategorise 2 transaction(s)?, dann eine Zeile je Änderung: Datum, Empfänger, Betrag, vorher → nachher
set_category_budget Budget Restaurants for 2026-09-01: 120.00 → 150.00?
move_money Move 30.00 from Tennis to Restaurants for 2026-09-01?, dann eine Zeile je Kategorie, vorher → nachher
flag_transactions Change the flag of 2 transaction(s)?, dann eine Zeile je Buchung: Datum, Empfänger, Betrag, Farbe vorher → nachher
set_category_target Set the target of Urlaub: no target → 1200.00 by 2027-06-01?, und ein Hinweis, wenn das Rückgängigmachen das vorherige Ziel nicht wiederherstellen kann
update_category Change category ‘Tennis’ (Freizeit) to ‘Sport’ (Freizeit)?
create_category Create category ‘Haustiere’ in Alltag?
create_transactions Create 1 transaction(s) on Girokonto?, dann eine Zeile je Transaktion
split_transaction Split 2026-09-12 Market 86.40 into 2 lines?, dann eine Zeile je Kategorie und ein Hinweis, dass nur YNAB es rückgängig machen kann
reconcile_account Reconcile Girokonto: mark 49 cleared transaction(s) reconciled?
undo_operation Undo: recategorise 2 transaction(s)?, oder die Art des Rückgängigmachens

Inoffizielles Projekt. „We are not affiliated, associated, or in any way officially connected with YNAB or any of its subsidiaries or affiliates. The official YNAB website can be found at https://www.ynab.com. The names YNAB and You Need A Budget, as well as related names, tradenames, marks, trademarks, emblems, and images are registered trademarks of YNAB.“ Wir sind mit YNAB oder einer seiner Tochtergesellschaften oder verbundenen Unternehmen weder verbunden noch assoziiert noch in irgendeiner Weise offiziell verknüpft. Die offizielle Website von YNAB finden Sie unter https://www.ynab.com. Die Namen YNAB und You Need A Budget sowie zugehörige Namen, Handelsnamen, Zeichen, Marken, Embleme und Bilder sind eingetragene Marken von YNAB. avenir-mcp wird ohne Gewähr bereitgestellt und ist keine Finanzberatung. Rechtliche Hinweise · Datenschutz