Production-ready MCP server for financial data integration with ChatGPT and Claude, featuring Plaid bank connectivity, Stripe subscriptions, and financial insights tools
This server has significant gaps in definition quality. While 11 of 12 tools have descriptions, many are generic and lack actionable detail. Input schemas are present for only 5 tools (get_transactions, get_spending_insights, get_financial_tips, calculate_budget, hello_world, manage_subscription, connect_bank_account); the remainder lack visible schema definitions in source code. Parameter descriptions are sparse or missing entirely. Output schemas are type-defined in TypeScript interfaces but lack actionable format guidance for LLMs. Error handling is not evident in the visible code. Tool naming follows verb_noun conventions (good), but several tools combine multiple concerns. Overall, this is a D-grade server with basic structure but insufficient detail for confident LLM use in production.
Calculate budget allocations using the 50/30/20 rule (needs/wants/savings) with optional debt payment tracking
Analyze account health status with warnings for low balances, overdrafts, high credit utilization, and upcoming payment due dates
Initialize Plaid Link to connect user bank accounts and financial institutions
Retrieve account balances and summary information for all connected bank accounts
Analyze business cash flow with revenue, expenses, net flow, runway calculations, and 6-month projections
Retrieve personalized financial tips and best practices with categorized recommendations and resources
Retrieve investment account holdings including securities, costs basis, current values, and portfolio composition
Missing input schemas for 7 of 12 tools: get_account_balances, check_account_health, get_investment_holdings, get_liabilities, get_business_cashflow, manage_subscription, connect_bank_account. LLMs cannot determine valid parameter names or types for these tools.
Descriptions are generic and lack actionable detail. E.g., 'Retrieve account balances and summary information for all connected bank accounts' does not indicate when to call this vs. check_account_health, what fields are returned, or whether authentication is required. Descriptions should answer: What? When? Why? What do you get back?
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Retrieve liability information including credit cards, student loans, mortgages, and other debts with APR, payment details, and status
Analyze spending patterns with category breakdown and percentage allocation over a date range
Retrieve transaction history with optional filtering, pagination, and metadata including category breakdown and merchant analysis
Example widget showing basic MCP integration with greeting response
Manage subscription and billing with access to Stripe billing portal and current plan information
Output schemas are defined as TypeScript interfaces but lack practical guidance for LLMs on field meaning, format, and chaining. E.g., AccountBalancesContent includes 'lastUpdated: string' but LLMs do not know whether this is ISO 8601, Unix timestamp, or natural language. Format must be explicit.
No visible error handling or recovery guidance in tool definitions. Tools do not document what happens if user is not authenticated, account is not connected, or request fails. LLMs receive silent failures with no guidance on next steps.
manage_subscription and connect_bank_account are marked WRITE but lack confirmation or dry-run patterns. LLMs may trigger subscription changes or bank connections without explicit user consent, risking unintended state changes.
Parameter descriptions missing for all tools that accept input. E.g., get_transactions accepts startDate, endDate, limit, offset but descriptions like 'Start date for transaction range (ISO 8601)' lack constraints (e.g., must be in past, max range 90 days). Unconstrained LLM input risks API abuse.
No visible pagination guidance for tools that return many results. E.g., get_transactions returns 'Transaction[]' but does not document max result size, whether pagination is automatic, or how to fetch the next batch. Large result sets risk context window exhaustion.
Tool compose and chaining clarity is poor. E.g., connect_bank_account and get_account_balances seem related, but it is unclear whether connect must be called first or what error indicates missing connection. Tool responses do not include references needed for follow-up calls.
Tool naming blends concerns. E.g., 'get_spending_insights' could filter by category, date range, or merchant, the tool title does not disambiguate. Consider 'get_spending_by_category', 'get_spending_by_merchant', etc.