fincon
Cierra los libros con una prueba, no con un parche.
FinCon concilia lo que tu pasarela de pago dice haber pagado contra lo que el banco recibió realmente, asienta el doble juego, y devuelve lo que queda — clasificado, valorado y enrutado a un puesto. Cada coincidencia lleva una aritmética que un auditor puede re-derivar sin nosotros.
El problema
El software de conciliación ya empareja el 90–99% de las transacciones. Trintech publica un 99%+. NetSuite incorpora reglas N:M con un asistente de puntuación de confianza. Ese problema está resuelto, y cualquier propuesta que venda "nuestra IA empareja mejor" compite en la única dimensión en la que nadie necesita ayuda.
Dos costes sobreviven a la automatización, y ninguno es un problema de emparejamiento.
La cola vuelve sin ninguna razón adjunta. La automatización del feed bancario reduce una conciliación de unos 47 minutos a solo gestión de excepciones — y eso lo dice todo en una sola estadística: los registros emparejados nunca fueron el coste. Pero el 1–10% que falla vuelve como una cola plana, y el controller re-deriva el contexto a mano, fila a fila. El volumen bajó. El coste por partida no.
Y la tasa decae. Las tasas de auto-emparejamiento se mantienen, no se logran. Un nuevo formato de proveedor degrada silenciosamente el emparejamiento hasta que alguien escribe una regla, y la creación de reglas está bloqueada detrás de ingeniería — así que la persona que entiende la excepción nunca es la persona que puede arreglarla.
Lo que hace un controller hoy: extraer tres exportaciones, emparejar a nivel de pago porque a nivel de fila es imposible, contabilizar la diferencia como un parche, pasar tres días en Excel cuando no cuadra, teclear el asiento a mano, y ver cómo la misma cola vuelve el mes siguiente.
Related MCP server: MCP-Finance-Reconciliation
La solución
Entrada abierta, compromiso verificado. El modelo propone. Un motor determinista demuestra. Un humano con nombre decide.
La IA hace tres trabajos, y son los tres que la necesitan
Esto no es un motor de reglas con un chatbot pegado, ni es un modelo adivinando aritmética. El modelo apunta exactamente al trabajo que ningún sistema determinista puede hacer:
Lee un formato que nadie configuró | Un archivo de liquidación con una estructura que nunca hemos visto. El modelo lee doce líneas en bruto y redacta la especificación de parseo — delimitador, fila de cabecera, unidades menores, una fecha no ISO. Lo ingiere sin proyecto de integración. |
Nombra la cola | Lo que la aritmética no pudo resolver va al modelo con los casi-aciertos que el motor derivó, y vuelve con un código, una hipótesis y evidencia citada en unos 2,1s. |
Escribe la regla de mañana | Resuelves un desajuste con tus propias palabras; el modelo induce una regla determinista que lo habría evitado. |
El sistema se vuelve más determinista con el tiempo, no más agéntico. Eso es lo contrario de cómo suelen envejecer los productos de agentes, y es toda la tesis.
Y está vallado, que es por lo que puedes activarlo
Los modelos de lenguaje caen de 95,6% en búsquedas a casi cero en cálculo multivariable, y fallan con confianza. Así que el modelo se mantiene fuera de la aritmética por construcción — cada frontera de abajo es una prueba que falla si alguien la elimina:
Ninguna llamada al modelo en un cierre. Seis etapas, cero llamadas al modelo, y el recibo lo dice.
Una propuesta no puede sobrescribir una respuesta derivada.
P2como máximo, y no puede sobrescribirP0 ARITHMETIC— una partida que el motor derivó ni siquiera se ofrece.Ningún código generado se ejecuta. Sin
eval, sinexec. Los adaptadores son especificaciones declarativas leídas por un vocabulario cerrado de verbos de parseo.Ninguna herramienta tiene autoridad. Ni una sola herramienta MCP acepta una política, una tolerancia, una convención de signos o un conjunto de reglas — verificado contra los esquemas generados.
Prueba en cada fila, y cuatro finales honestos
Cada coincidencia aceptada emite un objeto aritmético, no una puntuación de confianza: los ids de registro de ambos lados, el residual que cierra a cero, la tolerancia consumida, la regla que se disparó. Una coincidencia sin una prueba que pase no es una coincidencia y no aparece en el recuento de coincidencias.
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 ARITHMETICTodo lo que queda se clasifica por impacto de caja × antigüedad y se enruta a un puesto. Cada partida termina en doble juego — contabilízala, arrástrala, persíguela o castígala — bajo tu nombre, acotada dos veces por política firmada.
Impacto
Medido contra etiquetas creadas antes de que existiera el motor, y re-derivado solo a partir del registro de decisiones:
Auto-emparejamiento | 90,9% — 20 de 22 anclas, por nivel |
Falsas coincidencias | 0,00% |
Cobertura de excepciones | 6 / 6 — todos los defectos plantados encontrados |
Clasificación | 4 / 6 correctas |
Ambigüedad | 1 / 1 detectada y rechazada en lugar de adivinada |
Asiento | 23 apuntes, cuadrado — y la exportación beancount es recargada por el propio beancount |
Tiempo de cierre | unos 1,4s, con cero llamadas al modelo |
La generalidad se mide, no se afirma. Una segunda conciliación — el Form
26AS del Income Tax Department contra un libro mayor de cuentas por cobrar de
TDS, emparejado por TAN + sección + trimestre en un año de abril a marzo — se
ejecuta en el mismo motor con cero cambios en él, verificado byte a byte por
su gate.
Donde dice que no sabe. Cuatro de siete partidas en un cierre real son
E14 — el motor no puede decir por qué — y eso se imprime al principio de la
cola en lugar de suavizarse en una suposición plausible enrutada al puesto
equivocado. E09 es en la que hay que detenerse: dos subconjuntos distintos
suman el mismo abono dentro de la tolerancia, así que no hay una respuesta
correcta que elegir, y toda herramienta que devuelve el primer subconjunto que
encuentra está confiadamente equivocada ahí.
Apunta un asistente a ello — MCP
FinCon es un servidor de Model Context Protocol. Pregunta "¿qué está bloqueando el cierre de octubre, de mayor a menor?" y lee el registro, ejecuta un cierre determinista, verifica una prueba, resuelve una partida y firma — como tú, porque tiene un token que tú emitiste.
// Claude Desktop, Claude Code, or any MCP client
{
"mcpServers": {
"fincon": { "url": "https://fincon.astutecomputer.com/mcp" }
}
}OAuth vía Cognito, descubrimiento en el origen según RFC 9728, registro
dinámico de clientes. O ejecútalo en stdio contra tus propios archivos:
make mcp.
21 herramientas; 4 de ellas escriben. Un asistente no es un extraño —
lleva tu credencial, y el sub de ese token es la misma cadena a la que
resuelve tu sesión de navegador. Así que puede hacer lo que tú puedes hacer, y
cada decisión registra la puerta por la que entró, de modo que dentro de un
año puedes saber qué partidas leíste tú y cuáles delegaste. Los límites que
importan — el techo de castigos, el presupuesto, la comprobación de saldo, las
partidas que nadie ha abierto — nunca fueron preguntas sobre quién llamaba, y
atan a un agente de forma idéntica.
Arquitectura
El modelo propone → el motor demuestra → un humano decide. Nada cruza una frontera sin una prueba o un nombre.
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/verifyNiveles de prueba, porque un cierre real contiene partidas que nadie puede derivar solo con aritmética. La regla es nunca moverse en silencio, no rechazar lo que no puedes probar:
P0 ARITHMETIC re-derivable por cualquiera · P1 RULE se disparó una regla
promocionada y probada por regresión · P2 ATTESTED un humano con nombre lo
aprobó · P3 DECLARED aceptado con una brecha declarada.
Alojado en AWS
En vivo en https://fincon.astutecomputer.com — una pila de CloudFormation
en ap-south-1. Desglose completo, incluidas las cuatro decisiones que merecen
discusión y lo que este entorno deliberadamente no tiene, en
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 /mcpEFS en lugar de S3 porque el registro de decisiones es de solo añadidura y
está encadenado por hash, y el escritor toma un bloqueo POSIX — y flock
silenciosamente no funciona en EFS, lo que casi acaba con la elección.
Subredes públicas, sin NAT — una pasarela de 32 $/mes para un entorno de una
sola tarea, cambiada por un grupo de seguridad que solo admite el ALB.
Imágenes etiquetadas por sha de commit, nunca latest, para que un
rollback tenga nombre.
Ejecútalo
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 stdiomake test y make verify no necesitan clave API — los gates respaldados
por modelo están excluidos y nombrados en la salida, porque un gate omitido en
silencio que se lee como verde es el fallo del que trata todo este repositorio.
Verifícalo sin nosotros
La afirmación no es "confía en nuestros números". Entrega a un auditor el registro de decisiones y los archivos fuente, y re-deriva cada coincidencia en un endpoint público que no necesita cuenta y no toca ninguno de nuestros estados:
curl -X POST https://fincon.astutecomputer.com/v1/verify \
-H 'content-type: application/json' -d @proof.jsonCada veredicto nombra la política bajo la que se produjo y sella si esa política estaba en vigor o suministrada por el llamante — porque un veredicto producido bajo una política que alguien trajo consigo nunca debe volver indistinguible de uno producido bajo la nuestra.
Lo que aún no puede hacer
Un README que solo enumera lo que funciona es un folleto.
Validado a pequeña escala — cientos de filas, dos pasarelas, una moneda.
Cuatro de siete rupturas siguen sin nombre. Reportadas, no adivinadas.
La cola no recuerda. Una ruptura tiene huella de contenido, por lo que la misma es reconocible el próximo mes — pero nada dice todavía "cuarto mes consecutivo".
settlement_3wayune dos tramos, no tres. Pasarela ↔ banco está hecho; registro de pedidos ↔ pasarela es lo siguiente, y ahí es donde se esconde la fuga de ingresos.Un modelo, un prompt, un proveedor, y el mismo autor escribió el generador y el motor — por lo que el conjunto adversarial está congelado y existe la suite de mutaciones.
Documentación
Contexto permanente: las reglas, el vocabulario, los ocho invariantes | |
Estado de compilación en vivo, con la salida de comandos que prueba cada puerta | |
Problema, solución, compensaciones | |
Lo que realmente se ejecuta hoy | |
El flujo, y lo que vale | |
Cada pantalla, y la pregunta que responde | |
El patrimonio de AWS, en su totalidad | |
ADR: dos de ellos irreversibles |
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
- AlicenseAqualityBmaintenanceAI agents that automate bookkeeping, bank reconciliation, and month-end financial close for SMBs and CA firms.261MIT
- AlicenseNot gradedqualityCmaintenanceAutomates month-end close reconciliation tasks including bank statement matching, GL account reconciliation, intercompany balance checking, and close task tracking.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceAn 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
- AlicenseNot gradedqualityAmaintenanceDeterministic verification for AI-generated analysis. Reconciliation, consistency and Excel-integrity checks that stop the line when the numbers don't add up.1MIT
Related MCP Connectors
AI agents for bookkeeping, reconciliation, and financial close for SMBs.
Deterministic signed verification of numeric & financial claims for AI agents & spreadsheets.
Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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