Both protocols, day one. Your agent calls the same engine your backend can curl.
quickstart →A financial modeling MCP
your agent can call.
Typed IR. DAG. Sensitivity. Scenarios. One npx command, and your agent harness has a deterministic finance backend behind it. No custom-tool glue, no JSON pretending to be a model.
Per-record sensitivity propagation. Compiled cold to warm in under a second.
bench · sensitivity →Same IR always produces same outputs.
determinism →npx flatland-setup auto-detects Claude Code and Cursor. Writes config, runs end-to-end test.
install →flatland_initflatland_create_modelflatland_compileflatland_sensitivityflatland_save_modelflatland_load_modelYour agent calls.
A real compiler answers.
Intake
Your compile runs on our servers and is saved so you can share it. It also feeds the live heartbeat: counts, timing, and a coarse region — never the model itself.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flatland_compile",
"arguments": {
"model_id": "ndo_q3"
}
}
}Header: X-API-Key: fl_live_…
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"model_id": "ndo_q3",
"bindings": {
"arr": 1617720,
"gross_margin": 0.82,
"runway_months": 18.27,
"burn_multiple": 3.86
},
"assertions": [
{ "id": "gm_floor", "passed": true },
{ "id": "runway_target", "passed": true },
{ "id": "burn_mult_ceiling", "passed": false },
{ "id": "arr_floor", "passed": true }
],
"latency_ms": 47,
"bit_identical": true
}
}The model produced a number and told your agent which assumption broke. That's the difference between an answer and a guess.
What your end-user sees.
The page the founder hits when their agent compiles their fundraising model. Useful for understanding what your downstream user is doing.
Get the key. Try it.
Two minutes from here to a working compile on your machine. No card.
Bring your agent.
We'll bring the math.


