modelforge
ModelForge
Bulge-tier Excel financial model factory for credit & structured finance. Every cell live-formulated. Every number traceable back to the source document page it came from.
A developer tool for analysts and engineers who build credit and corporate-finance models programmatically. Covers unitranche, sponsor-backed LBO, project finance, real estate credit, NPL, structured credit, restructuring, M&A, DCF and IPO templates. Extensible to any asset class.
The moat: builds are byte-identical deterministic (same spec โ same workbook bytes, every run) and ship with a verifiable manifest + certificate โ formula integrity, accounting/conservation invariants (balance sheet balances, cash ties out), and SHA-256 hashes of spec + sources + workbook. Run certify --strict / build --trust-strict and it's fail-closed: non-zero exit on any integrity violation, so a broken model never ships. That's model generation with a portable audit trail โ not just generation. For an AI agent or an app that emits financial models, it's the layer that turns "the LLM produced a spreadsheet" into "here is a certificate that the spreadsheet is internally correct and reproducible."
๐ Using ModelForge in production โ or want managed features, priority support, or a specific template/connector? Tell me about your use case โ โ I read every one.
What this solves
Your agent needs to produce an Excel model from a structured spec โ without an LLM hallucinating numbers directly into cells. ModelForge keeps the model deterministic: the LLM writes a typed YAML spec with source IDs, and a Python builder emits the live-formula workbook.
You need every output number to be auditable back to where it came from โ without manually maintaining a sources sheet. Each hardcoded input carries a source ID, and the model's linkage graph is persisted to SQLite so a cell can be traced to its driver, source, and document page.
You want a model that recalculates instead of being a static dump โ without writing formula strings by hand. Every cell is a real Excel formula, with named ranges, sign conventions, and WORST/BASE/BEST scenario toggles wired across sheets.
You need to gate a workbook for review โ without eyeballing it. The QC tool runs an automated structural check suite (QC sheet present, named ranges populated, source references resolve, print areas set, no orphan sheets) and returns a per-check pass/fail report.
You need to triage many candidate deals fast โ without building a workbook for each one. The screening tool filters and ranks a directory of spec YAMLs by quantitative criteria (margins, leverage, IRR) on their
screening:block alone.You want the whole pipeline available to an AI assistant โ without bespoke glue code. ModelForge ships an MCP server (
modelforge-mcp) so agents in Claude Code, Cursor, Cline, or ChatGPT Enterprise can list templates, build, QC, trace lineage, ingest a data room, and export deliverables.
Related MCP server: fundos-mcp
Use it inside Claude Code, Cursor, ChatGPT Enterprise (MCP-native)
PyPI name: modelforge-finance (the unscoped modelforge was taken by source{d}'s ML library). Import name stays modelforge.
pip install "modelforge-finance[mcp,export]"
# wire into your MCP client config:
{
"mcpServers": {
"modelforge": { "command": "modelforge-mcp" }
}
}Then in your AI assistant:
"Build me a unitranche LBO model from this YAML spec, export the committee deck."
Tools available: list_templates ยท build_model ยท qc_workbook ยท list_sources ยท lineage_walk ยท ingest_dataroom ยท screen_deals ยท compute_tax ยท export_pptx ยท export_docx ยท plus 7 unified-feed tools (data_providers_status ยท quote ยท history ยท fundamentals ยท search_filings ยท entity_lookup ยท search_securities) across a 14-provider data stack.
The architectural principle
LLMs produce specs + sources + narrative. Deterministic Python produces the workbook.
The LLM never writes a number into a cell. It writes a typed YAML spec with source IDs. A deterministic builder emits the Excel via openpyxl. A QC gate validates before export. Excel is a render of a linkage graph; the graph is persisted to SQLite and is the canonical artifact.
Quality standards (bulge-tier, non-negotiable)
Formatting
Blue = hardcoded input. Black = formula. Green = cross-sheet link. Red = warning.
No mixed formulas (no magic numbers embedded). Named ranges for every driver.
Costs NEGATIVE (sign convention enforced and checked).
EN primary labels, multi-language secondary (DE / ES / IT shipped; SV / NO / DA / NL on the v0.10 roadmap as design-partner asks).
Historical vs Projected column separator, obvious.
Check row at top of every sheet (BS balance, CFS tie, covenant headroom โ TRUE or 0).
Sourcing
Every hardcoded cell has a comment with source ID (S-001, S-002, ...).
Sourcessheet lists each source: doc, page, publisher, date, URL, verified-flag.Assumptions (not sourced) tagged A-001 with rationale + confidence H/M/L.
Scenarios
WORST / BASE / BEST toggle on Assumptions. Drives every sheet via CHOOSE.
Every sheet respects the toggle โ no orphan assumptions.
Audit
QCsheet with 8 automated checks, all must pass.Revision log on Cover.
Named ranges mandatory.
Print areas set. Print-ready on every sheet.
Quick start
pip install "modelforge-finance[mcp,export]"
# Scaffold a ready-to-build spec โ no repo checkout needed (works for any of the 19
# templates; run `modelforge list-templates` to see them all)
modelforge scaffold dcf -o demo_dcf.yaml
# Build it: live-formula workbook + linkage graph + manifest sidecar
modelforge build demo_dcf.yaml # -> output/demo_dcf.xlsx
# Certify the delivered artifact: zero formula errors, byte-identical, manifest-valid
modelforge certify output/demo_dcf.xlsxTrust Layer v1 (new in v0.9.7)
Why should a buyer trust the number in cell
B42?
The Trust Layer is a semantic gate (separate from the structural QC gate). It answers the question every IC asks in the first five minutes: is this number plausible? It catches issues like a DCF EV that's 8ร the company's real market cap before the model ever leaves QA.
25+ built-in rules cover all shipped templates:
DCF: WACC band (3-25%), terminal growth โค GDP + 1%, EV vs market-cap deviation, terminal-value share, sensitivity-table monotonicity
Three-statement: balance-sheet integrity, cash reconciliation, retained-earnings link
NPL: cumulative recovery โค 100%, vintage staircase monotone
Project finance: DSCR floor, wire degradation > 0, P90 < P50
Sponsor LBO: XIRR plausibility, multiple expansion vs entry
M&A / fairness / structured credit / unitranche / credit memo: per-template plausibility
Each violation produces a RedFlags worksheet inside the built workbook with severity (info / warn / fail), the rule that fired, expected-vs-actual, and the recommended remediation.
modelforge audit-all examples/ # every shipped example, 0 FAIL violations in current shipSee AUDIT_REPORT.md for the current ship's audit.
Data-room ingestion (v0.3.1)
Turn a directory of PDFs, XLSXs and CSVs into a validated ModelForge YAML spec using Claude Opus. Every extracted number traces back to a doc page via the auto-built Sources registry.
pip install -e .[ingest] # installs anthropic, pdfplumber, pypdf
export ANTHROPIC_API_KEY=sk-ant-... # required
modelforge ingest path/to/dataroom/ \
--template project_finance \
-o output/my_deal.yaml --verbose
# Review output/my_deal.yaml + output/my_deal.ingestion.md
# (INGESTION_REPORT.md lists every extracted field, S-id, confidence)
modelforge build output/my_deal.yaml # produces the workbook
modelforge qc output/my_deal.xlsx # 8/8 quality gateSupported template: project_finance (MVP). Templates 1, 3, 5-8 queued for v0.3.2.
Package layout
modelforge/
โโโ graph/ # First-class linkage graph (nodes, edges, SQLite persistence)
โโโ spec/ # Pydantic schemas per template
โ โโโ base.py # Source, Assumption, Scenario, Target (shared types)
โ โโโ unitranche.py # Template 1: Unitranche LBO
โโโ builder/ # Deterministic openpyxl writer
โ โโโ styles.py # Bulge-tier formatting library
โ โโโ formulas.py # Formula string builders
โ โโโ i18n.py # EN/IT label dictionary
โ โโโ workbook.py # Top-level builder
โ โโโ sheets/ # One module per sheet (cover, sources, assumptions, ...)
โโโ qc/ # Quality gate (8 structural checks + PDF report)
โโโ data/ # Market data loaders (Damodaran, ECB, Borsa minibond)
โโโ cli.py # build | certify | qc | scaffold | validate | screen | ingest | ...Templates (19: 17 shipped + 2 preview)
โ Unitranche LBO โ Mid-market direct lending (Cash sweep + IFRS 9 EIR + covenant package)
โ Minibond / Private Placement Bond โ Direct private debt instrument (Gross YTM + Net YTM + jurisdiction-specific WHT)
โ Credit Memo โ Extends Unitranche with recovery waterfall + PDรLGDรEAD
โ Project Finance โ Construction + operating phases, DSCR-driven
โ Real Estate โ NOI build, exit cap, LP/GP promote waterfall
โ NPL Portfolio โ Collection curves, servicing fees, senior/mezz capital structure
โ Structured Credit โ Tranche waterfall with attachment/detachment points
โ 3-Statement โ P&L + BS + CFS with BS balance integrity check
โ DCF โ WACC build, fade, terminal normalization, 2D sensitivity (Trust Layer protected)
โ Merger โ Accretion/dilution, breakeven, contribution, collar, PPA
โ Fairness Opinion โ Selected comps, regression, premium analysis
โ Sponsor LBO โ Returns waterfall, debt schedule, 14-story block
โ IPO โ Float build, lock-up, stabilization, fee schedule
โ Restructuring โ Going-concern recovery, plan-feasibility, creditor classes
โ Development (RE) โ Ground-up development: phased capex, lease-up S-curve, forward-NOI exit, LTC debt, promote
โ Bank / FIG โ NII, RWA, CET1 & leverage ratios, MDA-gated dividends & buybacks (Basel III/IV)
โ Loan-Tape Securitization โ CLO/RMBS: stratified tape, pool cashflow (CPR/CDR/recovery), sequential-pay turbo waterfall (OC/IC + reserve), note WAL/IRR/rating
๐ฌ HGB Carveout (preview) โ German HGB carve-out financials
๐ฌ Portfolio Review (preview) โ Multi-asset portfolio performance review
Run modelforge list-templates to see them all (preview templates are flagged). Each shipped template has an anonymized example YAML in examples/.
Tax jurisdictions (7)
US ยท Federal CIT + state + NOL + R&D credit + GILTI + BEAT + ASC 740
UK ยท FRS 102 + main rate + marginal relief + RDEC + AIA + WDA + group relief
DE ยท KSt + SolZ + GewSt (Hebesatz + ยง 8 add-backs + min-tax loss CF) โ HGB roadmap v0.10
FR ยท IS + small-profits + social surcharge + CVAE + CIR + 88% participation
ES ยท IS + SME 23% + newly-created 15% + 95% participation + R&D + min-tax 15%
JP ยท NCT + LCT + Enterprise Tax + Special Local Corp Tax + R&D credit
IT ยท IRES / IRAP / SIIQ / PEXData providers (14, unified Provider Protocol)
Tier-0 (free, live today): EDGAR ยท OpenFIGI ยท GLEIF ยท Yahoo Finance ยท FRED Tier-1 (low-cost paid): Polygon ($29/mo) ยท FMP ($19/mo) ยท Finnhub ยท Tiingo ยท Alpha Vantage Tier-2 (institutional): Bloomberg ยท Refinitiv ยท FactSet ยท S&P Capital IQ
Tier-1 and Tier-2 are interface-complete โ paid keys activate them via env vars. Local TTL cache prevents rate-limit blow-ups.
Security & SBOM
CycloneDX 1.5 SBOM auto-generated by CI on every push and attached to every GitHub release (
scripts/generate_sbom.py)CI gates: pytest across Python 3.11 + 3.12, ruff lint, SBOM structure validation (
.github/workflows/ci.yml)Audit log with append-only SQLite (
modelforge/audit_log.py)Trust Layer semantic gates auto-injected into every built workbook
Security policy: see SECURITY.md
Procurement-grade controls (SOC 2 Type II, ISO 27001, pen-test, multi-tenant SaaS with SSO/SCIM) are Phase-B work.
The pitch
Bulge-tier Excel models, every cell live-formulated, every number traceable back to the data room page it came from.
This server cannot be installed
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
- -license-quality-maintenanceAn MCP server that automates extraction of structured financial data from investment memorandums and generates standardized PowerPoint presentations through a RESTful API.Last updated
- Alicense-qualityBmaintenanceAI-native MCP server for fund managers โ deal pipeline, LP management, covenant monitoring, VDR document intelligence, fund accounting (K-1, waterfall, audit packs), and HF ops (DTCC CTM, OMS, FIX). 47 tools.Last updated1MIT
- Flicense-qualityBmaintenanceTurns financial documents into AI-generated investment briefs by exposing banking tools like search financials, compare companies, and risk flagging as an MCP server, allowing an LLM agent to discover and use them dynamically.Last updated3
- AlicenseAqualityAmaintenanceMCP server providing 25 financial calculation tools in Spanish: ratios, DuPont, Altman Z-Score, Piotroski F-Score, WACC, CAPM, DCF, multiples, NPV/IRR, break-even, AR aging, depreciation, loan amortization, indirect cash flow, and Chilean tax helpers. Pure computation, no external connections.Last updated251MIT
Related MCP Connectors
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Hosted MCP for stocks, options, Greeks, brokers, order previews, alerts, and workflows.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
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/Whatsonyourmind/modelforge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server