Finlynq MCP Server — connect your AI assistant to your personal finance data. Ask questions in plain English: spending, budgets, net worth, goals, investments, cash flow, and more.
Finlynq presents a well-structured MCP server with 28 tools covering personal finance operations. All tools have descriptions visible in public/.well-known/mcp.json, and naming conventions are consistently verb-noun style (get_*, search_*, add_*, etc.). However, critical gaps exist: input schemas are documented for only ~7 of 28 tools (search_transactions, get_cash_flow_forecast, get_financial_health_score, get_spending_anomalies, get_subscription_summary, get_import_templates, import_with_template). For the remaining 21 tools, schemas appear undocumented or inferred only from the mcp.json declaration without visible type/constraint detail. Output schemas are completely absent from documentation, LLMs have no visibility into what fields tools return. Error handling guidance is minimal. The tool descriptions themselves are reasonably detailed (80-200 chars typical), covering WHAT and WHEN, but lack explicit error recovery guidance. Security considerations (secret injection, audit trails) are not visible in the sampled code. Composition is strong: tools are appropriately granular (get_account_balances vs search_transactions vs get_portfolio_analysis), and chaining is supported through consistent ID passing.
Adds a new financial account (bank, credit card, investment, loan).
Creates a new savings or debt payoff goal with target amount and optional deadline.
Records a net worth snapshot for historical tracking. Useful for accounts without automatic balance updates.
Runs categorization rules against all uncategorized transactions and returns how many were matched.
Returns current balances for all accounts (checking, savings, credit cards, investment accounts). Investment accounts are valued at market (holdings value) on key-bearing connections; account type, basis, and balance are included.
Returns budget vs. actual spending for each category in the current (or specified) month. Includes over/under amounts and percent used.
21 of 28 tools lack visible input schemas. Tools registered in mcp.json are declared but have no documented type/constraint information for parameters.
No output schemas documented for any tool. LLMs have no visibility into what fields/types the tools return, breaking downstream tool composition and forcing LLMs to guess at field names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Projects upcoming income and bills over the next 30–90 days based on recurring transaction patterns.
Lists all transaction categories with their icons and parent/child relationships.
Composite score (0–100) across 6 components: savings rate, debt-to-income, emergency fund, budget adherence, net worth growth, and investment diversification.
Returns all savings and debt payoff goals with current progress, target amounts, and projected completion dates.
List all saved CSV import templates. Optionally supply comma-separated file headers to get match scores for each template.
Income vs. expenses summary for a given period. Shows total income, total spending, and net cash flow.
Portfolio analytics. mode='patterns' (default) returns diversification + contributions. mode='rebalancing' suggests buys/sells vs targets. mode='benchmark' compares vs SP500/TSX/MSCI_WORLD/BONDS_CA.
Returns loan and debt details including outstanding balance, interest rate, minimum payment, and payoff projections.
Net worth across all accounts; investment accounts are market-valued in current totals on key-bearing connections. Pass priorMonths>0 for a historical (contribution-basis) trend; omit for current totals only.
Portfolio holdings with all investment metrics (cost basis, gains, dividends, return %). Pass `symbols` to filter to specific holdings.
Identifies recurring transactions (subscriptions, bills, regular income) and their detected frequency.
Detects unusual transactions: one-time large charges, merchants you haven't used before, or categories significantly over their average.
Month-by-month spending breakdown by category over a date range. Useful for spotting trends and seasonal patterns.
Returns actionable alerts and insights: upcoming bills, budget overruns, goal milestones, and anomalies worth reviewing.
Lists detected recurring subscriptions with estimated monthly cost and last charge date.
Summary of this week's spending vs. last week, top categories, and notable transactions.
Import transactions from a CSV string using a saved template. Returns a summary of imported, skipped (duplicate), and errored rows.
Lists saved auto-categorization rules (keyword → category mappings).
Record a transaction with smart defaults: fuzzy account/category matching, auto-categorize from payee.
Flexible transaction search with partial payee match, amount range, date range, category, and tags.
Creates or updates a monthly budget amount for a category.
Update any field of an existing transaction by ID — including category.
Error handling guidance absent. Tool descriptions do not indicate what errors might occur, whether they are retryable, or what the LLM should do next (e.g., 'Account not found, try search_accounts() first').
Sensitive operations (record_transaction, update_transaction, import_with_template) have WRITE risk but no confirmation/dry-run pattern documented. Agents may execute destructive actions without user consent.
Pagination and result limits not documented. Tools like get_account_balances, list_rules, and get_portfolio_analysis may return large result sets without offset/limit parameters or documented caps, risking context window exhaustion.
No audit/logging guidance visible. Tool definitions lack descriptions of what access control checks occur, who is logged as the caller, or what compliance trails are captured for financial operations.
Parameter descriptions in visible schemas (search_transactions, import_with_template) could be more precise. Example: 'Optional tags to filter by' lacks detail on format (comma-separated? array? tag IDs or names?). Follow rubric guidance: 'state format, range, allowed values in the description'.