MCP server for finance: cash flow, working capital, ROI, pricing, invoicing, tax, depreciation, valuation. Business financial tools.
All 15 tools suffer from severely underdeveloped schemas and descriptions. Every tool accepts a single generic 'input' parameter of type string with minimal guidance ('Input data (JSON)'), forcing LLMs to guess JSON structure. Descriptions are 2 - 5 words, far below the 10 - 1024 character baseline and insufficient for tool selection. No output schemas documented. Tool names lack action verbs (e.g., 'cashflow_forecast' vs 'forecast_cashflow'). No parameter validation, error handling guidance, or composition support. This is a wrapper around an external API with minimal MCP-specific design.
Asset register generator
Break-even analysis
Cash flow forecast and projection
Debt service coverage ratio
Asset depreciation calculator
Expense report generator
Financial ratio analyzer
All 15 tools accept a single generic 'input' parameter of type string with description 'Input data (JSON)'. This violates the constrained-input pattern and forces LLMs to guess JSON structure without schema guidance. No validation, no examples, no field documentation.
Tool descriptions are 2 - 5 words (e.g., 'Cash flow forecast and projection'). Baseline is 10 - 1024 chars; 94% of A+ tools have 50 - 200 char descriptions. These are too brief to guide LLM tool selection or explain when to use each tool vs. similar ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 25 | 2026-07-28+ | v2 |
Invoice generator
Profit margin calculator
Payment tracking
Pricing model generator
Return on investment calculator
Tax planning calculator
Business valuation model
Working capital calculator
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. Responses are JSON-stringified blobs with no field documentation.
Tool names lack action verbs. 'cashflow_forecast' should be 'forecast_cashflow'; 'working_capital_calc' should be 'calculate_working_capital'. LLMs infer intent from verb-noun naming; these names are ambiguous.
No error handling or recovery guidance. callBankr() catches exceptions and returns {status: 'error', error: e.message}, but LLMs receive no actionable next steps. Missing error classification (retryable vs. user-fixable vs. fatal).