MCP server exposing a deterministic project cash flow engine: IRR, NPV, payback, working capital, break-even and sensitivity analysis as tools an agent can call.
Strong tool definitions with excellent descriptions (avg 180+ chars), comprehensive parameter schemas with proper enums and constraints, and clear output documentation. All 6 tools have detailed, LLM-optimized descriptions explaining WHAT, WHEN, and WHY. Parameters are well-typed with enums (schedule_detail, response_format, rank_by, period, template). Schemas visible and properly structured. Minor gaps: no explicit error handling guidance in descriptions, no per-parameter validation rules stated, and output schemas documented in code but not in tool registration metadata.
Compute NPV, IRR and payback directly on a list of period cash flows, with no contract model involved. Use this when the numbers already exist, for example flows lifted from a spreadsheet, a schedule produced elsewhere, or a quick sanity check. The first element sits at period 0 and is not discounted. Outflows are negative.
Evaluate two to five named contract variants and rank them side by side. Built for the question these models exist to answer: pay cash or finance, 24 months interest-free or 36 with interest, higher fixed fee or higher per-unit price, 3-year term or 5-year.
Expand a contract into a month-by-month cash flow schedule and compute the metrics that follow from it: IRR, NPV, simple and discounted payback, MOIC, ROI, working capital, break-even volume, and the financing cost of any asset paid in installments. Use this as the main entry point whenever someone asks whether a deal, contract, lease, managed-service agreement or equipment purchase is worth doing.
Compute the level monthly payment that amortizes a principal, plus the total paid and the interest it costs. Matches the spreadsheet PMT(rate/12, nper, -pv) convention, including the zero-rate case, so the output can be checked against Excel cell by cell. Note the rate convention: loans divide the annual rate by 12, they do not compound it. This tool divides. Discounting elsewhere in this server compounds. Mixing the two is the most common error in a hand-built model.
Error handling descriptions missing. Tools do not document what errors can occur, when they are retryable, or what the LLM should do next (e.g., invalid contract model, out-of-range discount rates).
Output schemas not registered in tool metadata. Descriptions mention 'structuredContent' and 'json' format but the actual response schema is not visible in tool registration, only in format.ts helper functions. LLMs cannot plan downstream calls without knowing response structure.
Parameter constraints not fully documented in descriptions. 'discount_rate_annual' accepts -1 to 10 but description does not explain what negative rates mean or when they are valid. 'term_months' max 600 but no guidance on practical limits.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 74 | 2025-06-18+ | v2 |
Return a filled-in, valid contract model to copy and edit. Call this first when you are about to build a model and are unsure how the fields fit together. Editing a working example is faster and safer than assembling one from the schema, and the returned object is guaranteed to validate. Three shapes are available: - 'managed_service': exercises every field, including metered streams, staged investments, a financed asset with interest, maintenance and working capital. - 'subscription': flat fee, no metered volume, no financed asset. - 'equipment_lease': fully metered revenue, interest-free installments, residual value.
Re-evaluate a contract under a set of scenarios and report each one against the base case. Five scenarios run by default: volume -20%, volume -10%, volume +20%, no price indexation, and operating cost +10%. Pass your own scenarios to override them. Volume is listed first on purpose: a volume forecast taken from a customer's own estimate is a negotiating position, not a measurement, and it is the assumption that breaks most often.
No confirmation or dry-run pattern for sensitive operations. cashflow_evaluate_contract and cashflow_compare_contracts accept complex contract models but do not offer a preview or validation step before committing to analysis.
Tool composition: cashflow_model_template is a discovery tool but not linked in other tool descriptions. LLMs may not know to call it first when building a contract model, forcing trial-and-error.