An MCP server for querying financial data from bank connections via the Pluggy API, providing tools for account management, transaction history, investments, and credit card bills.
OpenFinance MCP server demonstrates good tool definition quality with comprehensive descriptions and proper schema usage. All 12 tools are properly registered with explicit names, descriptions, and structured input schemas. Descriptions are well-written and explain WHEN to use each tool, which aligns with pattern:tool-description. Input parameters are typed with descriptions. However, the server lacks output schema documentation (no documented return types visible in code), and error handling guidance is minimal. The tool set is well-composed with single responsibilities and clear names (list_*, get_*, create_*, refresh_*). Missing are endpoint-level error codes and recovery guidance that would elevate this to 80+.
Creates a token for linking or updating a bank connection. Use this tool when: - The user wants to connect a new bank account - A bank connection needs to be re-authenticated - You need to generate a link for the user to update credentials Returns: A connect token URL that can be used to link/update bank credentials.
Gets detailed information for a specific account. Use this tool when: - You need current balance for a specific account - Looking for account details like number, type, or owner - The user asks about a specific account Returns: Account details including balance, type, name, and metadata.
Checks the health and sync status of a bank connection. Use this tool when: - You need to verify if a connection is still active - Checking if a connection needs re-authentication - Debugging connection issues before querying data Returns: Connection details including status, last sync time, and any errors.
Gets detailed information for a specific credit card bill. Use this tool when: - The user asks about a specific bill's details - You need to see individual transactions within a bill - Checking payment details for a specific billing period Returns: Bill details including total amount, due date, transactions, and payment status.
Calculates the actual current credit card bill amount. Use this tool when: - The user asks "how much is my credit card bill?" - You need the actual amount due (excluding future installments) - Checking the current billing period summary This tool automatically: 1. Gets the account balance (total outstanding including future installments) 2. Fetches open/pending transactions for the current billing period 3. Identifies installment purchases and calculates future installment amounts 4. Subtracts future installments from the balance to get the actual bill Returns: Summary with total_balance, future_installments_deduction, actual_bill_amount, transaction_count, and top transactions.
No output schema documentation visible. Tools return responses but consumers cannot infer field structure without examining implementation. This forces LLMs to either guess at response structure or make extra discovery calls.
Minimal error handling guidance. Code shows basic validationError() and toolError() helpers but no categorization (retryable vs user-fixable vs fatal) or recovery suggestions. Example: when a bank connection fails sync, the tool doesn't suggest whether to retry, ask for reauthentication, or escalate.
Numeric parameters (page, page_size, months) lack explicit min/max constraints in schema or descriptions. list_transactions allows page_size up to 500; list_investments up to 500. These bounds should be enforced in schema with minItems/maxItems or explicitly documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 6 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Lists all accounts associated with a bank connection. Use this tool when: - You need to see all accounts for a connected bank - Looking for account IDs to query transactions or balances - The user asks about their accounts at a specific bank Returns: List of accounts with IDs, types, names, and CURRENT BALANCES. No need to call get_account separately unless you need credit card metadata (limits, due dates).
Lists all saved bank connections from local configuration. Use this tool when: - Starting a conversation to see available accounts - The user asks about their connected banks - You need connection_id values for other tools Returns: List of connections with name, connection_id, account_id, and account_type (BANK or CREDIT).
Lists credit card bills for an account. Use this tool when: - The user asks about their credit card bills - Checking bill due dates or amounts - Looking at credit card payment history Returns: Recent credit card bills (last 3 months by default; use months=0 for full history).
Lists investment positions associated with a bank connection. Use this tool when: - The user asks about their investments or portfolio - Checking investment values or performance - Looking for specific investment types (stocks, ETFs, fixed income) Returns: List of ACTIVE investment positions (withdrawn/zero-balance excluded by default; use include_all=true to see all).
Queries transaction history for an account with optional filters. Use this tool when: - The user wants to see their transaction history - Analyzing spending patterns or categories - Looking for specific transactions by date range - Building financial reports or summaries Returns: Paginated list of transactions with amounts, dates, descriptions, and categories.
Triggers a sync update for all bank connections (or a specific one) and waits for completion. Use this tool when: - The user wants to refresh their bank data - You need up-to-date account balances or transactions - A single call to update and wait instead of manually calling update + wait_for_sync Returns: List of refresh results with item_id, associated connection names, final status, and any errors.
Waits for a bank connection to finish syncing and returns the final status. Use this tool when: - After creating or updating a bank connection - The connection status shows it's still syncing - You need to wait for fresh data before querying accounts/transactions Returns: Connection status with sync completion details.
Date format inconsistency across parameters. list_transactions accepts 'from'/'to' as 'yyyy-mm-dd' but also accepts 'created_from' in 'ISO 8601 format'. No guidance on timezone handling or whether times are required.
No dry-run or confirmation pattern for refresh_connections (marked WRITE risk). If an agent mistakenly refreshes all connections during a noisy bank holiday, it could trigger fraud alerts or rate limits. A confirm_before_execute or dry-run mode would mitigate accidental destructive operations.
Parameter 'ids' in list_transactions is defined as array but no guidance on format, length limits, or what happens if array is empty or oversized.