Deterministic Finance & CAD

Des outils précis pour les agents IA : rapprochez les relevés bancaires (MT940, camt, BAI2, CODA), créez et validez des fichiers SEPA et NACHA ACH, et calculez le prix des pièces DXF pour la découpe laser.

Documentation

Deterministic Finance & CAD MCP

An MCP server that gives Claude, Cursor and other AI assistants exact, rule-based tools for:

  • Bank statements: parse MT940/MT942, camt.052/053/054, BAI2 and CODA, check that opening balance + transactions = closing balance, convert to CSV, hledger, beancount, camt.053 or DATEV.
  • SEPA payment files: generate and validate pain.001 / pain.008 XML (XSD, IBAN/BIC checksums, control sums, EPC and German DK rules), read pain.002 status reports.
  • NACHA ACH files: generate, validate and parse ACH files, explain return (R) and notification-of-change (C) codes.
  • DXF laser-cut quotes: measure cut length, pierces, part area and drawing problems, then price a part from your own rates.

This repository is only a thin client. The work is done by hosted APIs on RapidAPI; the server forwards your request and returns the API's answer.

Why deterministic tools?

Language models are good at reading a request and bad at exact arithmetic and strict formats. Ask a model to sum 400 transactions, check an IBAN checksum or measure the cut length of a DXF and it will produce a plausible number that may be wrong. These tools compute the answer with fixed rules: the same input always gives the same output, and errors are reported, not guessed around. The assistant decides what to do; the tool does the counting.

Tools

ToolWhat it does
reconcile_statementParse and reconcile a bank statement; optional CSV / hledger / beancount / camt.053 / DATEV output
analyze_dxfCut length, pierces, bounding box, area, open contours of a DXF
quote_dxfItemised cutting quote from material, cut, pierce and setup rates
generate_sepaBuild and validate a pain.001 / pain.008 file from JSON or CSV
validate_sepaValidate a pain.001 / pain.008 file
read_sepa_statusExplain a pain.002 status report
structure_addressSplit a free-text address into ISO 20022 structured fields (or a hybrid address); uncertain splits are flagged, not guessed
fix_sepa_addressesFix the payer and payee addresses of a pain.001 / pain.008 file, with a change report
generate_achBuild and validate a NACHA ACH file
validate_achValidate a NACHA ACH file
parse_achACH file to JSON or CSV rows
explain_ach_returnsExplain R and C codes in an ACH return file

File tools take source: a path to a local file, or the file content itself.

1. Get a free RapidAPI key

  1. Create a free account at rapidapi.com.
  2. Open the APIs you want and subscribe to the free plan:
  3. Copy your key (X-RapidAPI-Key) from any endpoint page. One key works for all three.

The free plans have a monthly quota. When it runs out the tools return a clear "quota reached" message instead of failing silently.

2. Install

Needs Python 3.10+. With uv you don't need to install anything by hand; uvx runs the server straight from this repository.

uvx --from git+https://github.com/SSYkolos/deterministic-finance-cad-mcp deterministic-finance-cad-mcp

Or with pip:

pip install git+https://github.com/SSYkolos/deterministic-finance-cad-mcp

3. Configure your assistant

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "deterministic-finance-cad": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/SSYkolos/deterministic-finance-cad-mcp", "deterministic-finance-cad-mcp"],
      "env": { "RAPIDAPI_KEY": "your-rapidapi-key" }
    }
  }
}

Restart Claude Desktop. If you installed with pip, use "command": "deterministic-finance-cad-mcp" and drop args.

Cursor

Add the same block to ~/.cursor/mcp.json (or .cursor/mcp.json in a project).

Claude Code

claude mcp add deterministic-finance-cad -e RAPIDAPI_KEY=your-rapidapi-key -- uvx --from git+https://github.com/SSYkolos/deterministic-finance-cad-mcp deterministic-finance-cad-mcp

Then ask, for example: "Reconcile ~/Downloads/statement.sta and list any balance gaps" or "Quote part.dxf in 3 mm steel: 45 EUR/m², 1.10 EUR per metre cut, 0.15 per pierce, 20 pieces".

Privacy

Files you pass to a tool are sent to the API over HTTPS for processing. For how data is handled, see ssydynamics.dev.

Development

pip install -e ".[test]"
pytest

Tests mock the HTTP layer. test_smoke_real_api calls the live reconciler and runs only when RAPIDAPI_KEY is set.

n8n workflow

No MCP client? examples/n8n has an importable n8n workflow: bank statement email → balance check → Google Sheets, with an alert when a statement does not add up.

More

Docs, demos and direct (non-RapidAPI) plans: ssydynamics.dev

MIT licensed.