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.
Was bestätigt wird
Abschnitt betitelt „Was bestätigt wird“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.
Drei Arten zu fragen
Abschnitt betitelt „Drei Arten zu fragen“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:
- Der erste Aufruf gibt statt der Antwort des Tools ein
InputRequiredResultzurück. Es enthält eine Anfrage,confirm, ein Formular mit einem einzigen booleschen Feldvalue, dessen Nachricht die Vorschau ist (bis zu 20 Änderungen, dann „… and N more“), und einenrequest_state: den Fingerabdruck. - Der Client zeigt das Formular. Der Nutzer setzt ein Häkchen oder lehnt ab.
- Der Client ruft das Tool erneut mit denselben Argumenten auf, die Antwort in
input_responsesund den erhaltenenrequest_state. FastMCP versiegelt diesen Zustand auf dem Übertragungsweg und weist Manipulationen zurück. - avenir-mcp berechnet den Plan und seinen Fingerabdruck neu. Weichen sie von
request_stateab – 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.
3. Der Client unterstützt keine Elicitation
Abschnitt betitelt „3. Der Client unterstützt keine Elicitation“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.
Wie Antworten gelesen werden
Abschnitt betitelt „Wie Antworten gelesen werden“| 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.
Bestätigungscodes
Abschnitt betitelt „Bestätigungscodes“| 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.“
Die eigene Antwort des Nutzers verlangen
Abschnitt betitelt „Die eigene Antwort des Nutzers verlangen“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.
Was der Nutzer sieht
Abschnitt betitelt „Was der Nutzer sieht“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