Verbinde einen KI-Assistenten (MCP)
MoneyLights hat einen integrierten MCP Server, sodass ein KI-Assistent — Claude Desktop, Claude Code, ein IDE-Agent, alles, was das Protokoll spricht — auf Anfrage mit den Daten deiner Organisation arbeiten kann.
Es ist der gleiche Zugang wie die REST API: Eine MCP-Verbindung ist ein API-Schlüssel, mit den gleichen Berechtigungen, den gleichen Limits und dem gleichen Widerruf-Button. Es gibt nichts Separates zu verwalten.
Verbindung herstellen
Abschnitt betitelt „Verbindung herstellen“Der Endpunkt ist https://api.moneylights.app/mcp (Streamable HTTP). Eine typische
Client-Konfiguration:
{ "mcpServers": { "moneylights": { "url": "https://api.moneylights.app/mcp", "headers": { "X-API-Key": "ml_sk_..." } } }}Mit Claude Code ist es ein Befehl:
claude mcp add --transport http moneylights https://api.moneylights.app/mcp \ --header "X-API-Key: ml_sk_..."Erstelle den Schlüssel in Einstellungen → API-Schlüssel und gewähre ihm nur die Berechtigungen, die der Assistent benötigt. Alles erfordert den Schlüssel, einschließlich der Auflistung der Werkzeuge.
Was der Assistent tun kann
Abschnitt betitelt „Was der Assistent tun kann“Die Werkzeugliste wird aus den Berechtigungen deines Schlüssels bei jeder Anfrage berechnet. Ein Schlüssel ohne Berechtigung erfährt nicht einmal, dass das entsprechende Werkzeug existiert.
| Werkzeug | Berechtigung | Was es tut |
|---|---|---|
get_cashflow_overview | cashflow:read | Monatliches Einkommen/Ausgaben/Netto, Eröffnungsbilanz, Top-Kategorien |
get_analytics_overview | analytics:read | Aggregationen nach Kategorie, Kunde, Projekt und Person |
list_transactions | transactions:read | Transaktionen, gefiltert und paginiert, jede mit den verknüpften Dokumenten |
list_documents | documents:read | Dokumente und deren extrahierte Felder, jedes mit den verknüpften Bewegungen |
get_document_file | documents:read | Die Originaldatei eines Dokuments — das PDF oder Bild, das die App anzeigt |
get_pending_distribution | profitpulse:read | Ausstehende Sicher ausgebbare Verteilungen |
list_vendors | vendors:read | Lieferanten, mit Gesamtausgaben |
list_clients | clients:read | Kunden, mit Gesamteinnahmen |
list_projects | projects:read | Projekte, mit Gesamtsummen und Zielen |
upload_document | documents:write | Legt eine Rechnung oder Quittung in deinen Dokumenten ab |
Beide Übersichten berechnen auf der gleichen Basis und geben dies an: jede Antwort trägt eine basis — Zeitraum, Währungen, die abgedeckten Konten (jedes sichtbare, es sei denn, es wird nach ID gefragt) und wie Überweisungen zwischen den eigenen Konten der Organisation behandelt wurden. Standardmäßig sind sie ausgeschlossen von Einnahmen und Ausgaben, Bewegung für Bewegung, genau wie die Cashflow-Ansicht der App sie zeigt; übergib includeInternalTransfers: true an eines der Werkzeuge für die rohen Bankbewegungen, die dann von der basis als solche gekennzeichnet werden und nicht mit dem Standard vergleichbar sind. Vergleiche Zahlen über die beiden Werkzeuge nur, wenn ihre basis übereinstimmt. netCashResult ist Einkommen minus Ausgaben von Bankbewegungen — ein Cash-Ergebnis, kein buchhalterischer Gewinn.
Welches Dokument gehört zu welcher Bewegung
Abschnitt betitelt „Welches Dokument gehört zu welcher Bewegung“Beide Listen sagen es, von beiden Seiten, so wie die App es zeigt. Jede Transaktion trägt linkedDocuments und jedes Dokument trägt linkedTransactions; jeder Eintrag nennt die andere Seite und einen link:
confirmed— das Dokument ist mit der Bewegung verknüpft, was als dokumentiert zählt.suggested— der Matcher schlägt die Zuordnung vor; niemand hat sie bestätigt, und der Bewegung fehlt noch ihr Dokument. Der Eintrag trägt diescoredes Matchers.
Ein Assistent kann daher zwischen keine Rechnung, eine Rechnung, die auf Bestätigung wartet, und bereits abgelegt unterscheiden — kann aber nichts davon ändern, da diese Verbindung kein Werkzeug dafür hat.
Eine Bewegung kann mehrere bestätigte Dokumente tragen. Ein Dokument verknüpft sich mit maximal einer Bewegung, sodass eine in mehreren Teilen bezahlte Rechnung nur die Bewegung zeigt, mit der sie verknüpft wurde. Ein Dokument, das noch Processing ist, hat noch keine Links; None bedeutet keine.
Die Berechtigungen gelten weiterhin: Die gegenüberliegende Seite eines Links wird (Lieferant und Nummer oder Beschreibung und Betrag) nur einem Schlüssel beschrieben, der auch auf diese Ressource zugreifen kann. Mit einer Berechtigung erhältst du die ID der anderen Seite, die Art des Links und die Punktzahl — genug, um zu wissen, dass eine Bewegung dokumentiert ist, nicht was die Rechnung sagt.
Lesen eines Originals
Abschnitt betitelt „Lesen eines Originals“get_document_file nimmt eine documentId von list_documents und gibt die gespeicherte Datei selbst zurück — das gleiche PDF oder Bild, das die App öffnet — als eingebettete Ressource mit ihrem MIME-Typ (application/pdf, image/jpeg, …), neben der ID des Dokuments, dem Dateinamen und der Größe — Dateien bis zu 10 MB, die gleiche Obergrenze wie beim Hochladen. So überprüft ein Assistent, ob ein Unterschied von der Rechnung, von dem, was extrahiert wurde, oder von der Bewegung, mit der es verknüpft wurde, kommt, ohne etwas zu exportieren. Es ist ein Lesen: Nichts am Dokument, seinen extrahierten Feldern oder seinen Links ändert sich. Ein Dokument, das nicht dir gehört, wird einfach nicht gefunden.
Dokumente ablegen
Abschnitt betitelt „Dokumente ablegen“upload_document ist das einzige Werkzeug, das schreibt, und es wurde absichtlich für diese Rolle gewählt: Es fügt nur hinzu. Der Assistent sendet die Datei (PDF oder Bild, bis zu 10 MB) auf genau eine von zwei Arten — ihre Bytes (contentBase64, mit einem fileName), oder eine url, von der MoneyLights sie herunterlädt, wie einen vorab signierten Link, den ein anderer Dienst ausgegeben hat (fileName ist dann optional: ohne ihn wird die Datei nach dem Download selbst benannt, niemals nach dem Link, der möglicherweise sein Geheimnis trägt) — und MoneyLights verarbeitet sie durch dieselbe Pipeline wie ein Upload in der App — gespeichert, ihre Felder extrahiert (Lieferant, Datum, Nummer, Beträge) und automatisch mit deinen Banktransaktionen abgeglichen.
Das zweimalige Senden derselben Datei dupliziert deine Daten niemals: Das erneute Hochladen wird als gekennzeichnetes Duplikat aufgezeichnet, das auf das Original verweist — egal, ob es als Bytes oder per URL kam. Alles, was der Assistent ablegt, ist in der App sichtbar — und löschbar.
Eine url muss https sein, keine Anmeldeinformationen tragen und auf einen öffentlich erreichbaren Host zeigen; Weiterleitungen werden nur ein paar Mal verfolgt und bei jedem Hop erneut überprüft, und der Download muss ein PDF, PNG oder JPEG von maximal 10 MB sein, der innerhalb von 30 Sekunden ankommt. Ablehnungen sagen, was zu beheben ist, ohne den Link zu wiederholen, und der geheime Teil eines signierten Links wird niemals protokolliert.
Jede andere Schreiboperation (Erstellen von Kunden, Umklassifizieren von Transaktionen, Konfigurieren von Umschlägen…) bleibt absichtlich in der App: Diese Aktionen setzen einen Menschen voraus, der sie bestätigt.
Kuratierte Eingabeaufforderungen
Abschnitt betitelt „Kuratierte Eingabeaufforderungen“Der Server bietet auch fertige Ausgangspunkte — eine monatliche Cashflow-Überprüfung, eine Analyse der Ausgaben bei Lieferanten, eine Bereinigung fehlender Dokumente — die nur aufgelistet werden, wenn dein Schlüssel jedes Werkzeug ausführen kann, das sie benötigen. Nutze sie so, wie sie sind, oder bearbeite sie nach Belieben.
Sicherheit
Abschnitt betitelt „Sicherheit“- Der Assistent ist durch den Schlüssel begrenzt, der bei jeder Anfrage erneut überprüft wird. Degradierst oder entfernst du den Ersteller des Schlüssels, wird der Assistent beim nächsten Aufruf eingeschränkt oder gestoppt.
- Finanzdaten enthalten Texte, die von Fremden geschrieben wurden — Zahlungsreferenzen, per E-Mail gesendete Dokumente. Die Ergebnisse der Werkzeuge werden innerhalb einer gekennzeichneten Grenze geliefert, die dem Modell sagt, sie als Daten zu behandeln, niemals als Anweisungen. Betrachte das als eine Minderung, nicht als eine Garantie, und schränke Schlüssel eng ein.
- Um einen Assistenten zu trennen, widerrufe seinen Schlüssel in Einstellungen → API-Schlüssel. Sofort, immer verfügbar.
Gib jedem Assistenten seinen eigenen Schlüssel — einer pro Kunde bedeutet, dass du einen trennen kannst, ohne die anderen zu stören.