analyze_weg_abrechnung
ChatGPTLiest eine hochgeladene WEG-Jahresabrechnung (Hausgeld-/Einzelabrechnung der Hausverwaltung) per KI aus und sortiert jede Position: auf den Mieter umlegbar (§ 2 BetrKV), bleibt beim Vermieter (Verwaltung, Instandhaltung, Rücklage …) oder bitte klären. Liefert analysisId, Summen, Abgleich mit der Summe der Verwaltung, Abrechnungsergebnis gegenüber der WEG, Hinweise (Grundsteuer fehlt, CO2-Anteil). Aufrufen, wenn der Nutzer eine Jahres-/Hausgeldabrechnung schickt oder daraus die Nebenkostenabrechnung für den Mieter will. Im MCP: Dokument vorher mit upload_receipt hochladen und dessen receiptId übergeben.
create_expense
ChatGPTLegt eine neue Ausgabe für den Nutzer an. WICHTIG: Rufe VORHER list_properties auf, wenn eine Immobilie zugeordnet werden soll oder du eine vorschlagen willst — nutze ausschließlich echte IDs/Namen aus dem Tool-Ergebnis, niemals Immobilien aus deinem Gedächtnis. Nennt der Nutzer keine Immobilie, schlage die zuletzt angelegte vor (erster Eintrag in list_properties) und frage kurz nach. Kategorie NUR aus der erlaubten Liste wählen. NUR aufrufen, wenn der Nutzer das Anlegen eindeutig bestätigt hat oder unmissverständlich darum gebeten hat (inkl. Titel und Betrag). Stammt die Ausgabe aus einem hochgeladenen Beleg (receiptId aus dem Beleg-Upload oder search_pending_receipts bekannt), übergib IMMER receiptId — nur so wird das Belegbild an die Ausgabe angehängt. Der Beleg verschwindet dabei aus dem Belege-Eingang (search_pending_receipts), das Belegbild bleibt an der Ausgabe erhalten. Handelt es sich um eine GUTSCHRIFT/Erstattung (Warenrückgabe im Baumarkt, Retoure, Storno, Korrekturrechnung), setze isGutschrift=true und übergib amount trotzdem positiv — der Betrag wird dann als Kostenminderung negativ verbucht. Kategorie bleibt die des ursprünglichen Kaufs.
create_loan
ChatGPTLegt einen neuen Kredit/Darlehen an. Pflicht: name, bank, ursprungsBetrag, jahreszins (in %, z.B. 3.8). kreditart: Annuitätendarlehen (Standard, braucht monatlicheRate), Tilgungsdarlehen (konstante monatlicheTilgung, sinkende Rate), Endfälliges Darlehen (nur Zinsen; optional faelligkeitsdatum und Tilgungsersatz wie Bausparvertrag mit tilgungsersatzRate), KfW-Darlehen, Variables Darlehen (zinsbindungJahre 0, referenzzins + zinsaufschlag), Forward-Darlehen, Bauspardarlehen, Privatdarlehen, Sonstiges Darlehen. tilgungsfreieMonate für Zins-only-Anlaufzeit (z.B. KfW). restschuld Standard: ursprungsBetrag. Für die Immobilien-Zuordnung VORHER list_properties aufrufen. NUR aufrufen, wenn der Nutzer das Anlegen eindeutig bestätigt hat.
create_nebenkosten_abrechnung
ChatGPTErstellt aus einer ausgewerteten WEG-Abrechnung (analysisId) die Betriebskostenabrechnung für einen Mieter: Zeitraum aus Mietzeit und Abrechnungszeitraum, umlegbare Anteile, Grundsteuer (automatisch aus dem Bescheid in der App, falls nicht in der WEG-Abrechnung), CO2-Abzug, Vorauszahlungen aus den erfassten Mieten. Speichert die Abrechnung in der App und erzeugt das PDF (downloadUrl). Versendet NICHTS an den Mieter. Vorher müssen alle 'bitteKlaeren'-Positionen über umlegen/beiMir entschieden sein.
create_property
ChatGPTLegt eine neue Immobilie an. Pflicht: name. Optional: adresse, typ (Standard: Wohnung), kaufpreis, qm, baujahr, kaufdatum (Standard: heute), geschaetzteKaltmiete, notizen. NUR aufrufen, wenn der Nutzer das Anlegen eindeutig bestätigt hat. Details wie AfA und Kaufnebenkosten kann der Nutzer danach in der App verfeinern.
create_receipt_tax_split
ChatGPTTeilt genau EINEN bereits analysierten Beleg atomar in mehrere steuerlich getrennte Ausgaben auf, insbesondere Notarkosten für Kaufvertrag (Anschaffungsnebenkosten/AfA) und Grundschuld (Finanzierungskosten/grundsätzlich sofort absetzbar). VORHER search_pending_receipts und list_properties aufrufen. Zeige dem Nutzer Titel, Teilbeträge, Summe und steuerliche Behandlung und rufe dieses Tool ERST nach ausdrücklicher Bestätigung auf. Nutze ausschließlich die echte receiptId und propertyId. Wenn search_pending_receipts taxAllocationStatus=complete meldet, können die erkannten Positionen ohne allocations-Parameter übernommen werden. Bei needs_review müssen die vom Nutzer geprüften allocations übergeben werden. Die Teilbeträge müssen exakt dem Belegbetrag entsprechen. Das Tool legt alle Teil-Ausgaben in einem atomaren Schreibvorgang an, hängt denselben Beleg an alle an und entfernt anschließend den offenen Beleg.
create_rental_contract_draft
ChatGPTStartet einen deutschen Mietvertrag: sammelt die Vertragsdaten und legt sie als Entwurf im Konto des Nutzers ab. Nutze dieses Tool, wenn der Nutzer sinngemäß sagt 'erstell mir einen Mietvertrag', 'neuer Mieter zieht ein' oder 'Vertrag für die Wohnung X'. Vorgehen: VORHER list_properties aufrufen und die echte immobilieId verwenden (nur wenn die Immobilie nicht in ImmoFluss liegt, stattdessen propertyAddress angeben); danach die bekannten Daten in EINEM Aufruf übergeben, statt jede Angabe einzeln zu erfragen. Das Ergebnis nennt unter missing genau die noch fehlenden Pflichtangaben — frage sie gebündelt nach und ergänze sie mit update_rental_contract_draft. warnings enthält rechtliche Hinweise (z.B. Kaution über drei Kaltmieten nach § 551 BGB, Befristung ohne Grund nach § 575 BGB) — diese IMMER wörtlich an den Nutzer weitergeben. Das Tool erzeugt bewusst KEIN PDF: Den fertigen Vertrag erstellt, prüft und unterschreibt der Nutzer im Mietvertrags-Assistenten der ImmoFluss-App, den der zurückgegebene openUrl-Link mit allen Daten vorausgefüllt öffnet. Nenne diesen Link immer.
create_tenant
ChatGPTLegt einen neuen Mieter an. Pflicht: name, immobilieId (VORHER list_properties aufrufen — echte ID verwenden), kaltmiete. mietbeginn Standard: heute. haushaltsgroesse = Personen im Haushalt (optional, nur wenn der Nutzer sie nennt — nicht schätzen). NUR aufrufen, wenn der Nutzer das Anlegen eindeutig bestätigt hat.
create_tenant_privacy_notice
ChatGPTErzeugt die Datenschutzinformation nach Art. 13 DSGVO für einen Mieter als PDF (Verantwortlicher, tatsächlich verarbeitete Datenarten, Zwecke mit Rechtsgrundlage, Empfängerkategorien, Löschfristen, Betroffenenrechte). VORHER list_tenants aufrufen und die echte tenantId verwenden. Über recipients lassen sich die Empfängerkategorien steuern (software, steuerberater, handwerker, hausverwaltung, messdienst, bank, versicherung, rechtsverfolgung, behoerden); ohne Angabe gilt die übliche Auswahl. Jede Erstellung wird beim Mieter mit Datum und Fassung protokolliert. Das Tool verschickt NICHTS — gib dem Nutzer die downloadUrl und sage, dass er das Dokument in der App an den Mieter senden kann. Weise darauf hin, dass das keine Rechtsberatung ist.
create_termin
ChatGPTTrägt einen eigenen Termin in den Termine-Screen der App ein (mit Erinnerung am Vortag): art = eigentuemerversammlung | handwerker | uebergabe | besichtigung | frist | sonstiges, date JJJJ-MM-TT, optional time HH:MM, propertyId (aus list_properties) und note. Für 'Trag mir die Eigentümerversammlung am 12.11. ein', 'Handwerker kommt Dienstag um 9'.
delete_expense
ChatGPTLöscht eine Ausgabe endgültig. VORHER search_expenses aufrufen, dem Nutzer Titel + Betrag des Treffers nennen und seine ausdrückliche Bestätigung einholen — Löschen ist nicht rückgängig zu machen.
delete_hausgeld
ChatGPTLöscht genau einen Hausgeld-Zeitraum. Vorher list_hausgeld aufrufen, Immobilie, Jahr, Zeitraum und Monatsbetrag nennen und ausdrücklich bestätigen lassen; Löschen ist nicht rückgängig zu machen.
delete_rental_contract_draft
ChatGPTLöscht einen Mietvertrags-Entwurf endgültig. VORHER list_rental_contract_drafts aufrufen, dem Nutzer Objekt und Mieter des Treffers nennen und seine ausdrückliche Bestätigung einholen.
draft_rent_reminder
ChatGPTSchreibt eine freundliche Zahlungserinnerung an einen Mieter für einen Monat (Standard: aktueller Monat) mit offenem Betrag und liefert fertige Links für WhatsApp und E-Mail. Verschickt NICHTS selbst: Der Nutzer tippt auf den Link und sendet von seinem eigenen Handy. Für 'Erinnere X an die Miete', 'Schreib Y wegen der fehlenden Miete'. VORHER list_tenants aufrufen; ist die Miete schon da, kommt ein Hinweis statt Text.
generate_rental_contract_pdf
ChatGPTErzeugt das fertige Mietvertrags-PDF (alle 18 Paragraphen) direkt auf dem Server aus einem vollständigen Entwurf. VORHER list_rental_contract_drafts oder get_rental_contract_draft aufrufen, die echte draftId holen und sicherstellen, dass complete=true ist. Das PDF wird in der Dokumentenablage des Nutzers gespeichert; zurück kommen Dateiname, Größe und downloadUrl. Gib dem Nutzer die downloadUrl weiter.
get_account_status
ChatGPTZeigt Abo-Tier des ImmoFluss-Kontos und das heutige MCP-Nutzungskontingent. Verbraucht selbst kein Kontingent.
get_bauzinsen
ChatGPTAktuelle Bauzinsen (ImmoFluss Zinsindex): Effektivzins-Richtwerte für 5/10/15 Jahre Zinsbindung, täglich aktualisierte Marktdaten. Für Fragen wie 'Wie stehen die Bauzinsen?' oder zur Einordnung einer Anschlussfinanzierung.
get_expense_breakdown
ChatGPTAuswertung der Ausgaben: Summen und Anzahl je Kategorie und je Immobilie, optional gefiltert nach Jahr und/oder Immobilie. Nutze dieses Tool für Fragen wie 'Wofür habe ich am meisten ausgegeben?', 'Wie viel habe ich pro Immobilie ausgegeben?' oder Jahresvergleiche — NICHT search_expenses.
get_mcp_server_status
ChatGPTZeigt MCP-Server-Version, Tool-Katalog-Version und Hinweise zum Aktualisieren der Tool-Liste. Verbraucht selbst kein Kontingent.
get_portfolio_summary
ChatGPTKompakte Übersicht: Anzahl Immobilien/Mieter/Kredite, Gesamt-Kaufpreis, monatliche Kaltmiete gesamt, Ausgaben im laufenden Jahr.
get_rent_status
ChatGPTMieteingang eines Monats (Standard: aktueller Monat): pro Mieter, ob die Miete bezahlt, teilweise bezahlt, überfällig oder noch nicht fällig ist, mit Soll, eingegangenem Betrag, offenem Rest, Zahlungsdatum und ob die Bank sie erkannt hat. Dieselbe Logik wie der Mieteingang in der App. Für Fragen wie 'Wer hat diesen Monat noch nicht gezahlt?', 'Ist die Miete von X da?', 'Wie viel Miete fehlt im September?'. Optional nach Immobilie filtern.
get_rental_contract_draft
ChatGPTLiefert einen Mietvertrags-Entwurf vollständig mit allen Feldern, den fehlenden Pflichtangaben und den rechtlichen Hinweisen. Nutze es, bevor du einen Entwurf zusammenfasst oder änderst.
get_tax_summary
ChatGPTBerechnet eine steuerliche Jahresübersicht im Anlage-V-Stil für ein Kalenderjahr: Mieteinnahmen aus tatsächlich eingegangenen Zahlungen (pro Immobilie, ohne Kautionen), Werbungskosten (sofort abziehbare Ausgaben nach Kategorie, Finanzierungskosten, Fahrtkosten, absetzbares Hausgeld, Grundsteuer, Schuldzinsen aus der Kredit-Tilgungsrechnung, Sonderzinsen), AfA pro Immobilie (§ 7 EStG, Gebäudeanteil, Kaufnebenkosten in der Bemessungsgrundlage, aktivierte Herstellungskosten) und den Einnahmen-Überschuss. Nutze dieses Tool für Fragen wie 'Wie sieht mein Steuerjahr 2025 aus?', 'Was kann ich absetzen?', 'Wie viel AfA/Zinsen habe ich?' oder als Grundlage für die Anlage V. Ohne year: aktuelles Kalenderjahr. Die Werte sind eine unverbindliche Orientierung (keine Steuerberatung) und spiegeln die Steuer-Übersicht der App.
get_tenant_account
ChatGPTMieterkonto eines Mieters: aktueller Rückstand mit allen offenen Posten (Miete, Nebenkostennachzahlung, Kaution), Mahnstufen, Überzahlungen und der Zahlungsverlauf der letzten Monate. Für Fragen wie 'Zahlt X pünktlich?', 'Wie hoch ist der Rückstand von X?'. VORHER list_tenants aufrufen und die echte tenantId verwenden.
get_upcoming_deadlines
ChatGPTWas steht an? Dieselben Termine & Fristen wie der Termine-Screen der App: Zinsbindungsende und Anschlussfinanzierung, endfällige Darlehen, Tilgungsbeginn, Mietende, Staffelmiet-Sprünge, Nebenkostenabrechnungs-Fristen, Grundsteuer-Raten, Steuererklärung und eigene Termine – getrennt nach überfällig, kommend (Standard 90 Tage, days bis 730) und möglich (Chancen wie Mieterhöhung).
list_hausgeld
ChatGPTListet die Hausgeld-Zeiträume des Nutzers mit Immobilie, Jahr, Gültigkeitsmonaten, monatlicher Aufteilung in umlagefähig/nicht umlagefähig/Rücklage sowie Jahresbeträgen. VOR jeder Aussage oder Änderung am Hausgeld aufrufen; optional nach Immobilie und Jahr filtern.
list_loans
ChatGPTListet alle Kredite/Darlehen des Nutzers mit Bank, Ursprungsbetrag, Rate, Zins, Tilgung und restschuldHeute (aktuelle Restschuld aus der Tilgungsrechnung der App). Für Fragen zur Restschuld immer restschuldHeute nennen, nicht selbst nachrechnen.
list_nebenkosten_abrechnungen
ChatGPTListet die Nebenkostenabrechnungen mit Jahr, Mieter, Immobilie, Kosten, Mieteranteil, Vorauszahlung, Ergebnis (Nachzahlung/Guthaben) und Versanddatum – plus 'offen': Mieter, für die eine Abrechnung des Vorjahres noch fehlt bzw. nicht versendet ist, mit gesetzlicher Frist. Für 'Welche Nebenkostenabrechnungen fehlen noch?', 'Was kam bei der Abrechnung von X raus?'. Optional year.
list_properties
ChatGPTListet alle Immobilien des Nutzers mit ID, Name, Adresse, Typ, Kaufpreis, qm, Baujahr, Kaufdatum, Wertschätzungen und Anlagedatum — sortiert nach zuletzt angelegt (neueste zuerst). IMMER aufrufen, bevor du Immobilien des Nutzers erwähnst, vorschlägst oder zuordnest — verlasse dich nie auf Namen aus deinem Gedächtnis oder früheren Unterhaltungen.
list_rental_contract_drafts
ChatGPTListet die Mietvertrags-Entwürfe des Nutzers (neueste zuerst) mit Objekt, Parteien, Mietbeginn, Miete und ob sie vollständig sind. Vor jeder Aussage über bestehende Entwürfe aufrufen.
list_tenants
ChatGPTListet alle Mieter des Nutzers mit Name, Kontaktdaten, zugeordneter Immobilie (immobilieId), Kaltmiete, Nebenkosten, Personen im Haushalt (haushaltsgroesse, fehlt = nicht erfasst), Mietbeginn/-ende. Vor jeder Aussage über Mieter aufrufen — nicht raten. Zahlungsstatus steht hier NICHT drin: dafür get_rent_status bzw. get_tenant_account.
mark_rent_paid
ChatGPTMarkiert die Miete eines Mieters für einen Monat (Standard: aktueller Monat) als eingegangen – wie das Abhaken im Mieteingang der App. Für Barzahlungen oder Überweisungen, die die Bank nicht erkannt hat: 'Ali hat bar bezahlt', 'Die Miete von Lisa für September ist da'. amount = insgesamt für den Monat erhaltener Betrag (weglassen = volle Miete; weniger = Teilzahlung), paidDate optional. VORHER list_tenants.
search_app_help
ChatGPTDurchsucht die offizielle ImmoFluss-Hilfe (kuratierte Wissensbasis) nach Anleitungen und Feature-Erklärungen. IMMER aufrufen, bevor du Fragen zur Bedienung der App beantwortest ('Wie lege ich … an?', 'Wo finde ich …?') — antworte auf Basis der Treffer, nicht aus dem Gedächtnis. Ohne query: Themen-Übersicht.
search_bank_transactions
ChatGPTDurchsucht die Bankumsätze des verbundenen Kontos (neueste zuerst): nach Text (Gegenpartei/Verwendungszweck), Betrag (amount, ±amountTolerance), Richtung (in = Eingänge, out = Ausgänge), Zeitraum (from/to JJJJ-MM-TT) oder nur noch nicht zugeordnete (onlyUnassigned). Zeigt, wofür jeder Umsatz verbucht ist (Miete von X, Ausgabe, Kreditrate, Hausgeld, privat) bzw. 'noch nicht zugeordnet'. Für 'Was war die Buchung über 450 €?', 'Hat X überwiesen?', 'Welche Umsätze sind offen?'. Nur lesend.
search_expenses
ChatGPTDurchsucht die Ausgaben/Belege des Nutzers. Liefert Treffer inkl. Gesamtsumme. Kann nach Text, Kategorie, Immobilie, Jahr und Betrag filtern. Wenn der Nutzer nach einer Ausgabe mit konkretem Betrag fragt, übergib amount und ggf. query/year/propertyId; wenn matchCount 0 ist, sage klar, dass keine passende Ausgabe gefunden wurde. Ohne Filter: die neuesten Ausgaben.
search_pending_receipts
ChatGPTDurchsucht die hochgeladenen, noch nicht final als Ausgabe gespeicherten Belege des Nutzers. Liefert Status, erkannte Beträge, Händler, Datum, Kategorie, Titelvorschlag und eine mögliche steuerliche Aufteilung (z.B. Kaufvertrag als Anschaffungsnebenkosten plus Grundschuld als Finanzierungskosten) mit Belegstellen und Prüfhilfen. Optional werden Bild-/PDF-URLs geliefert. Nutze dieses Tool, wenn der Nutzer nach offenen, hochgeladenen, analysierten oder zu prüfenden Belegen fragt. Eine erkannte Aufteilung immer verständlich erklären und vor dem Speichern vom Nutzer bestätigen lassen.
set_hausgeld_periods
ChatGPTSpeichert einen vollständigen Hausgeld-Jahresplan für genau eine Immobilie atomar. Damit lassen sich unterschiedliche Monatsbeträge als mehrere nicht überlappende Zeiträume abbilden, z.B. Januar–März 300 € und April–Dezember 260 €. Das Tool ersetzt ALLE vorhandenen Hausgeld-Zeiträume dieser Immobilie in diesem Jahr. Deshalb vorher list_hausgeld aufrufen, den vollständigen neuen Plan mit Monatsbereichen und drei Betragsbestandteilen nennen und ausdrücklich bestätigen lassen. Kennt der Nutzer nur den Gesamtbetrag, erst suggest_hausgeld_split aufrufen und den Vorschlag bestätigen lassen – die Aufteilung in umlagefähig, nicht umlagefähig und Rücklage niemals selbst ausdenken.
submit_mcp_feedback
ChatGPTErstellt ein Feedback-Ticket, wenn ein MCP-Tool fehlt, ein MCP-Server nicht funktioniert, Berechtigungen fehlen oder der Nutzer sich eine neue KI-/MCP-Funktion wünscht. Nutze dieses Tool nur, wenn der Nutzer ausdrücklich ein Ticket erstellen möchte oder seine Meldung klar als Feedback/Wunsch gemeint ist. Sammle, soweit vorhanden, gewünschte Aktion, betroffenen MCP-Server, fehlendes Tool, vorhandene Tools, Fehlermeldung, Client/App-Version und ob ein Reconnect nötig sein könnte. Dieses Tool verbraucht kein MCP-Tageskontingent.
suggest_hausgeld_split
ChatGPTSchlägt für einen bekannten monatlichen Hausgeld-Gesamtbetrag die Aufteilung in umlagefähig, nicht umlagefähig und Rücklage vor. Nutzt das Verhältnis des jüngsten hinterlegten Zeitraums derselben Immobilie, sonst eine als Schätzung markierte Standardverteilung. Schreibt nichts: Vorschlag inklusive Herkunft (basis) nennen, bestätigen oder korrigieren lassen und erst dann set_hausgeld_periods oder update_hausgeld aufrufen.
update_expense
ChatGPTÄndert Felder einer bestehenden Ausgabe (nur die übergebenen Felder werden geändert). VORHER search_expenses aufrufen und die echte expenseId aus dem Ergebnis verwenden — nie raten. Mit receiptId kannst du ein hochgeladenes Belegbild nachträglich an die Ausgabe anhängen (Ausgabe dafür NICHT löschen und neu anlegen!). Mit isKaufnebenkosten, isFinanzierungskosten und expenseType lässt sich die steuerliche Einordnung korrigieren: Kaufnebenkosten wandern in die AfA-Bemessungsgrundlage, Finanzierungskosten (typisch die Grundschuldbestellung) sind sofort abziehbar. Beides zugleich ist unzulässig und wird abgewiesen. NUR aufrufen, wenn der Nutzer die Änderung eindeutig bestätigt hat.
update_hausgeld
ChatGPTÄndert genau einen vorhandenen Hausgeld-Zeitraum. Vorher list_hausgeld aufrufen und nur eine echte hausgeldId verwenden. Der geänderte Zeitraum darf sich nicht mit einem anderen Zeitraum derselben Immobilie und desselben Jahres überschneiden. Nur nach einem eindeutigen Änderungsauftrag aufrufen.
update_loan
ChatGPTÄndert Felder eines bestehenden Kredits (nur die übergebenen Felder werden geändert). VORHER list_loans aufrufen und die echte loanId verwenden. NUR aufrufen, wenn der Nutzer die Änderung eindeutig bestätigt hat.
update_property
ChatGPTÄndert Stammdaten einer bestehenden Immobilie: Name, Kaufpreis, qm, Baujahr, manuell geschätzter Wert, Notizen, Übergang von Nutzen und Lasten (uebergangNutzenLasten, bestimmt den AfA-Beginn) (nur die übergebenen Felder werden geändert). VORHER list_properties aufrufen und die echte propertyId verwenden. NUR aufrufen, wenn der Nutzer die Änderung eindeutig bestätigt hat.
update_rental_contract_draft
ChatGPTErgänzt oder ändert Felder eines Mietvertrags-Entwurfs (nur die übergebenen Felder werden geändert). VORHER list_rental_contract_drafts oder get_rental_contract_draft aufrufen und die echte draftId verwenden. Nach jeder Ergänzung liefert das Tool erneut missing und warnings — arbeite die Liste ab, bis complete=true ist, und nenne dem Nutzer dann den openUrl-Link.
update_tenant
ChatGPTÄndert Felder eines bestehenden Mieters (nur die übergebenen Felder werden geändert), z.B. neue Kaltmiete, Kontaktdaten oder Mietende (Auszug). VORHER list_tenants aufrufen und die echte tenantId verwenden. mietende="" entfernt ein gesetztes Mietende, haushaltsgroesse=0 die Personenzahl. NUR aufrufen, wenn der Nutzer die Änderung eindeutig bestätigt hat.
upload_receipt
ChatGPTLädt genau einen Beleg als Bild oder PDF in den Belege-Eingang des Nutzers hoch und startet automatisch die KI-Analyse. NUR aufrufen, wenn der Nutzer den Upload eindeutig verlangt oder bestätigt hat. Übergib den Dateiinhalt vollständig als Base64 in contentBase64; lokale Dateipfade sind für den entfernten Server nicht erreichbar. Erlaubt sind JPEG, PNG, WebP und PDF bis 10 MB. Nach dem Upload die zurückgegebene receiptId aufbewahren und search_pending_receipts verwenden, um den Analyse-Status zu prüfen. Noch keine Ausgabe anlegen, solange der Nutzer den erkannten Vorschlag nicht bestätigt hat.