Skip to main content
Glama
Abishai95141

fincon

by Abishai95141

Bücher schließen mit einem Beweis, nicht mit einem Stopfen.

FinCon gleicht ab, was Ihr Zahlungs-Gateway als ausgezahlt meldet, gegen das, was die Bank tatsächlich erhalten hat, schreibt die Doppelbuchung und reicht das, was übrig bleibt, weiter — eingestuft, bepreist und an einen Arbeitsplatz geroutet. Jeder Treffer trägt eine Arithmetik, die ein Prüfer ohne uns nachvollziehen kann.


Das Problem

Abstimmungssoftware matcht bereits 90–99 % der Transaktionen. Trintech weist 99 %+ aus. NetSuite liefert N:M-Regeln mit einem Konfidenz-bewertenden Assistenten. Dieses Problem ist gelöst, und alles, was mit „unsere KI matcht besser" wirbt, konkurriert auf der einen Dimension, bei der niemand Hilfe braucht.

Zwei Kosten überleben die Automatisierung, und keine davon ist ein Matching-Problem.

Der Rest kommt ohne Begründung zurück. Die Automatisierung des Bankfeeds verkürzt eine Abstimmung von rund 47 Minuten auf nur noch Ausnahmebehandlung — und das ist die ganze Geschichte in einer Statistik: Die gematchten Datensätze waren nie die Kosten. Aber die 1–10 %, die fehlschlagen, kommen als flache Warteschlange zurück, und der Controller leitet den Kontext von Hand nach, Zeile für Zeile. Das Volumen sank. Die Kosten pro Position nicht.

Und die Quote zerfällt. Automatische Match-Raten werden gepflegt, nicht erreicht. Ein neues Lieferantenformat verschlechtert das Matching stillschweigend, bis jemand eine Regel schreibt, und das Schreiben von Regeln hängt an der Entwicklung — die Person, die die Ausnahme versteht, ist also nie die Person, die sie beheben kann.

Was ein Controller heute tut: drei Exporte ziehen, auf Auszahlungsebene matchen, weil Zeilenebene unmöglich ist, die Differenz als Stopfen buchen, drei Tage in Excel verbringen, wenn es nicht aufgeht, das Journal von Hand tippen — und zusehen, wie derselbe Rest im nächsten Monat wiederkommt.


Related MCP server: MCP-Finance-Reconciliation

Die Lösung

Offener Eingang, verifizierter Abschluss. Das Modell schlägt vor. Eine deterministische Engine beweist. Ein benannter Mensch entscheidet.

Die KI übernimmt drei Aufgaben — und es sind genau die drei, die sie braucht

Das ist keine Regel-Engine mit aufgesetztem Chatbot, und es ist kein Modell, das Arithmetik errät. Das Modell wird exakt auf die Arbeit gerichtet, die kein deterministisches System leisten kann:

Liest ein Format, das niemand konfiguriert hat

Eine Abrechnungsdatei in einem Layout, das wir nie gesehen haben. Das Modell liest zwölf rohe Zeilen und erstellt die Parse-Spezifikation — Trennzeichen, Kopfzeile, Nebenwährungseinheiten, ein Nicht-ISO-Datum. Es übernimmt ohne Integrationsprojekt.

Benennt den Rest

Was die Arithmetik nicht auflösen konnte, geht mit den vom Engine abgeleiteten Beinahe-Treffern an das Modell und kommt mit einem Code, einer Hypothese und zitierten Belegen in etwa 2,1 s zurück.

Schreibt die Regel von morgen

Sie lösen eine Abweichung in eigenen Worten auf; das Modell leitet eine deterministische Regel ab, die sie verhindert hätte. R-DUP-06 wurde so geschrieben — aus einem Satz eines Controllers — und greift seitdem bei jedem Abschluss.

Das System wird mit der Zeit deterministischer, nicht agentischer. Das ist das Gegenteil davon, wie Agent-Produkte normalerweise altern — und es ist die gesamte These.

Und es ist eingezäunt, deshalb können Sie es einschalten

Sprachmodelle fallen von 95,6 % bei Nachschlagen auf nahe null bei multivariater Berechnung ab, und sie scheitern selbstbewusst. Deshalb wird das Modell konstruktiv von der Arithmetik ferngehalten — jede Grenze unten ist ein Test, der fehlschlägt, wenn jemand sie entfernt:

  • Kein Modellaufruf in einem Abschluss. Sechs Stufen, null Modellaufrufe, und die Quittung weist es aus.

  • Ein Vorschlag kann eine abgeleitete Antwort nicht überschreiben. P2 bestenfalls, und er darf P0 ARITHMETIC nicht überschreiben — ein vom Engine abgeleiteter Posten wird nie einmal angeboten.

  • Kein generierter Code wird ausgeführt. Kein eval, kein exec. Adapter sind deklarative Spezifikationen, die von einem geschlossenen Vokabular an Parse-Verben gelesen werden.

  • Kein Tool trägt Autorität. Kein einziges MCP-Tool akzeptiert eine Richtlinie, eine Toleranz, eine Vorzeichenkonvention oder einen Regelsatz — geprüft gegen die generierten Schemata.

Beweis auf jeder Zeile, und vier ehrliche Enden

Jeder akzeptierte Treffer gibt ein Arithmetik-Objekt aus, keinen Konfidenzwert: die Datensatz-IDs beider Seiten, den auf null schließenden Rest, die verbrauchte Toleranz, die ausgelöste Regel. Ein Treffer ohne bestandenen Beweis ist kein Treffer und erscheint nicht in der Trefferzahl.

match M-0412   tier T2 subset-sum   rule R-017@v3
  payout    BANK/2026-08-14/CR         +4,378.21
  charges   87 × settlement rows       +4,612.90
  refunds    4 × settlement rows         -118.40
  fees     162 × settlement rows         -114.02
  ────────────────────────────────────────────
  residual                                  0.00    tolerance used 0.00 / 0.50
  verdict   PROVEN      provenance  P0 ARITHMETIC

Alles Übriggebliebene wird nach Bargeldwirkung × Alter eingestuft und an einen Arbeitsplatz geroutet. Jeder Posten endet in der Doppelbuchung — buchen, vortragen, nachfassen oder abschreiben — unter Ihrem Namen, zweifach durch signierte Richtlinie begrenzt.


Wirkung

Gemessen an Labels, die vor der Existenz der Engine erstellt wurden, und allein aus dem Entscheidungsprotokoll re-abgeleitet:

Auto-Match

90,9 % — 20 von 22 Ankern, nach Stufe T0=17 T1=2 T4=1

Fehltreffer

0,00 %

Ausnahmeabdeckung

6 / 6 — jeder eingepflanzte Fehler gefunden

Klassifikation

4 / 6 korrekt

Mehrdeutigkeit

1 / 1 erkannt und verweigert statt geraten

Journal

23 Buchungen, ausgeglichen — und der beancount-Export wird von beancount selbst neu geladen

Abschlusszeit

etwa 1,4 s, mit null Modellaufrufen

Die Allgemeinheit ist gemessen, nicht behauptet. Eine zweite Abstimmung — Formular 26AS der Steuerbehörde gegen ein TDS-Forderungshauptbuch, gematcht auf TAN + Abschnitt + Quartal über ein April–März-Jahr — läuft auf derselben Engine mit null Änderungen daran, byte-für-byte durch ihr Gate bestätigt.

Wo es sagt, dass es es nicht weiß. Vier von sieben Posten in einem echten Abschluss sind E14die Engine kann nicht sagen, warum — und das wird oben auf dem Rest gedruckt, statt in eine plausible Vermutung geglättet zu werden, die an den falschen Arbeitsplatz geroutet wird. E09 ist der, bei dem man innehalten sollte: Zwei verschiedene Teilmengen summieren sich innerhalb der Toleranz auf dieselbe Gutschrift, also gibt es keine richtige Antwort zu wählen, und jedes Tool, das die erste gefundene Teilmenge zurückgibt, liegt dort selbstbewusst falsch.


Weisen Sie einen Assistenten darauf an — MCP

FinCon ist ein Model Context Protocol-Server. Fragen Sie „Was blockiert den Oktober-Abschluss, das Größte zuerst?" — und er liest den Datensatz, führt einen deterministischen Abschluss aus, verifiziert einen Beweis, löst einen Posten auf und zeichnet ab — als Sie, denn er hält ein Token, das Sie ausgestellt haben.

// Claude Desktop, Claude Code, or any MCP client
{
  "mcpServers": {
    "fincon": { "url": "https://fincon.astutecomputer.com/mcp" }
  }
}

OAuth über Cognito, Discovery an der Origin gemäß RFC 9728, dynamische Client-Registrierung. Oder führen Sie ihn auf stdio gegen Ihre eigenen Dateien aus: make mcp.

21 Tools; 4 davon schreiben. Ein Assistent ist kein Fremder — er trägt Ihre Anmeldedaten, und das sub auf diesem Token ist dieselbe Zeichenkette, zu der Ihre Browsersitzung aufgelöst wird. Er kann also tun, was Sie tun können, und jede Entscheidung protokolliert die Tür, durch die sie kam, sodass Sie in einem Jahr sagen können, welche Posten Sie gelesen und welche Sie delegiert haben. Die Grenzen, die zählen — die Abschreibungs-Obergrenze, das Budget, die Saldenprüfung, Posten, die niemand geöffnet hat — waren nie Fragen danach, wer aufruft, und sie binden einen Agenten identisch.


Architektur

Das Modell schlägt vor → die Engine beweist → ein Mensch entscheidet. Nichts überschreitet eine Grenze ohne Beweis oder Namen.

  SOURCES                    ENGINE  (no model, ever)                 RECORD
  ─────────                  ────────────────────────                 ──────
  bank CAMT.053 ┐            ┌──────────────────────┐
  settlement    ├─ intake ──▶│ block → match         │──▶ verify ──┐
  order register┘   │        │ T0 exact              │   re-derive │
  Form 26AS     ┘   │        │ T1 tolerant           │   from raw  │
                    │        │ T2 subset-sum         │   records   │
              5 proofs       │ T4 declared           │             ▼
              row count      └──────────┬───────────┘      ┌──────────────┐
              control total             │                  │ double entry │
              roll-forward         unmatched               │ + balance    │
              type/domain              │                   │   assertion  │
              idempotence              ▼                   └──────┬───────┘
                              ┌────────────────┐                  │
                              │ near-miss      │                  ▼
                              │ diagnosis      │           hash-chained
                              │ (arithmetic)   │           decision log
                              └───────┬────────┘                  │
                                      │ genuinely unexplained     │
                                      ▼                           │
                        ╔═════════════════════════╗               │
                        ║  MODEL  (proposes only) ║               │
                        ║  adapter synthesis      ║               │
                        ║  classification         ║               │
                        ║  rule induction         ║               │
                        ╚═══════════╤═════════════╝               │
                                    │ P2 at best, never overwrites P0
                                    ▼                             │
                        ┌───────────────────────┐                 │
                        │  HUMAN decides        │◀────────────────┘
                        │  book · carry · chase │
                        │  · write off · sign   │
                        └───────────┬───────────┘
                                    ▼
                          close pack · journal.csv
                          journal.beancount · POST /v1/verify

Beweisstufen, weil ein echter Abschluss Posten enthält, die niemand allein aus Arithmetik ableiten kann. Die Regel ist niemals still bewegen, nicht verweigern, was du nicht beweisen kannst:

P0 ARITHMETIC von jedem nachvollziehbar · P1 RULE eine übernommene, regressionsgetestete Regel griff · P2 ATTESTED ein benannter Mensch genehmigte es · P3 DECLARED mit angegebener Lücke akzeptiert.

Gehostet auf AWS

Live unter https://fincon.astutecomputer.com — ein CloudFormation-Stack in ap-south-1. Vollständige Aufschlüsselung, einschließlich der vier Entscheidungen, über die es sich zu streiten lohnt, und dessen, was dieser Bestand bewusst nicht hat, in docs/14-AWS.md.

   Cloudflare DNS ──▶ ALB (ACM, TLS 1.3) ──▶ ECS Fargate ──┬─▶ EFS  runs + uploads
                       :80 → :443           1 task          ├─▶ Cognito   identity
                       /healthz 30s         256cpu/512mb    ├─▶ Secrets Manager
                                            screens · API   └─▶ CloudWatch Logs
                                            · MCP /mcp

EFS statt S3, weil das Entscheidungsprotokoll append-only und hash-verkettet ist und der Schreiber eine POSIX-Sperre nimmt — und flock auf EFS stillschweigend nicht funktioniert, was die Wahl fast beendet hätte. Öffentliche Subnetze, kein NAT — ein Gateway für 32 $/Monat für einen Einzel-Task-Bestand, eingetauscht gegen eine Security Group, die nur den ALB zulässt. Images nach Commit-SHA getaggt, nie latest, damit ein Rollback benennbar ist.


Ausführen

make setup     # uv sync
make gen       # regenerate the synthetic batches from a seed
make verify    # every green gate
make serve     # → http://127.0.0.1:8000/
make eval      # 4 ablation arms, 9 metrics, batches A and B
make mcp       # MCP on stdio

make test und make verify brauchen keinen API-Schlüssel — die modellgestützten Gates sind ausgeschlossen und in der Ausgabe benannt, denn ein stillschweigend übersprungenes Gate, das als grün gelesen wird, ist genau das Versagen, um das es in diesem gesamten Repository geht.


Ohne uns verifizieren

Die Behauptung ist nicht „vertraut unseren Zahlen". Geben Sie einem Prüfer das Entscheidungsprotokoll und die Quelldateien, und er leitet jeden Treffer auf einem öffentlichen Endpunkt neu ab, der kein Konto braucht und keinen unserer Zustände berührt:

curl -X POST https://fincon.astutecomputer.com/v1/verify \
     -H 'content-type: application/json' -d @proof.json

Jedes Urteil nennt die Richtlinie, unter der es erzeugt wurde, und stempelt, ob diese Richtlinie in Kraft oder vom Aufrufer geliefert war — denn ein Urteil, das unter einer mitgebrachten Richtlinie erzeugt wurde, darf nie ununterscheidbar von einem zurückkommen, das unter unserer erzeugt wurde.


Was es noch nicht kann

Eine README, die nur auflistet, was funktioniert, ist ein Prospekt.

  • Im kleinen Maßstab validiert — Hunderte Zeilen, zwei Gateways, eine Währung.

  • Vier von sieben Abweichungen sind noch unbenannt. Gemeldet, nicht geraten.

  • Der Schwanz erinnert sich nicht. Eine Abweichung wird per Inhalts-Fingerprint erfasst, sodass dieselbe im nächsten Monat wiedererkennbar ist — aber nichts sagt bisher „vierter Monat in Folge".

  • settlement_3way verbindet zwei Beine, nicht drei. Gateway ↔ Bank ist erledigt; Auftragsregister ↔ Gateway steht als Nächstes an, und genau dort versteckt sich der Umsatzverlust.

  • Ein Modell, ein Prompt, ein Anbieter, und derselbe Autor hat Generator und Engine geschrieben — weshalb der Adversarial-Satz eingefroren ist und die Mutations-Suite existiert.


Dokumentation

CLAUDE.md

Dauerhafter Kontext — die Regeln, das Vokabular, die acht Invarianten

STATUS.md

Live-Build-Status, mit der Befehlsausgabe, die jedes Gate belegt

docs/01-DECISION-SPEC.md

Problem, Lösung, Kompromisse

docs/08-AS-BUILT.md

Was heute tatsächlich läuft

docs/10-THE-USER-FLOW.md

Der Ablauf und was er wert ist

docs/13-THE-SCREENS.md

Jeder Bildschirm und die Frage, die er beantwortet

docs/14-AWS.md

Der AWS-Bestand, vollständig

docs/decisions/

ADRs — zwei davon irreversibel

FinCon ausprobieren →  ·  Kontakt

Install Server
F
license - not found
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Automates month-end close reconciliation tasks including bank statement matching, GL account reconciliation, intercompany balance checking, and close task tracking.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    An accounting-ops agent that reconciles payments against open orders, auto-books provably safe payments through a deterministic policy gate, and escalates exceptions to a human queue with audit trails.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Deterministic verification for AI-generated analysis. Reconciliation, consistency and Excel-integrity checks that stop the line when the numbers don't add up.
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Abishai95141/FinCon'

If you have feedback or need assistance with the MCP directory API, please join our Discord server