Ask Claude, Cursor, Windsurf, or any MCP client about your finances
Hidden — regenerate from Settings to viewSign in at finlynq.com/cloud (free), then visit Settings → API Key to generate one. We only store a hash — the raw key is shown to you once at creation and cannot be re-shown.
Claude Desktop natively supports MCP. Add Finlynq to your config file and restart Claude.
Open Claude Desktop settings
Go to Claude menu → Settings → Developer → Edit Config
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.jsonAdd this to your config file
{
"mcpServers": {
"finlynq": {
"type": "streamable-http",
"url": "http://localhost:3000/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Restart Claude Desktop
Finlynq tools will appear in Claude's tool panel (hammer icon). Make sure Finlynq is running at http://localhost:3000.
Click any prompt to copy it, then paste into your AI assistant.
Paste any of these into Claude to see a preview / confirm / execute flow end-to-end. Claude asks before it commits anything destructive.
Capability groups below; for the exhaustive name-by-name list (with category, transport, and OAuth scope per tool) see the full MCP tool catalog. Or use /api-docs / /.well-known/mcp.json for the JSON-Schema view.
Drop a CSV or OFX into Finlynq with the Upload button, then ask Claude to take it from there. Claude lists pending uploads, shows you a preview with duplicate detection, and only commits after you confirm.
list_pending_uploadspreview_importexecute_importcancel_importRecategorize, retag, or delete many transactions at once. Every bulk operation is two steps: a preview that returns a sample and a signed confirmation token, then an execute call that commits. Claude can't skip the confirmation — the token is scoped to the exact payload.
preview_bulk_updateexecute_bulk_updatepreview_bulk_deleteexecute_bulk_deletepreview_bulk_categorizeexecute_bulk_categorizeDetect recurring charges from your transaction history, then add, update (pause/resume/cancel via status), or delete subscriptions without leaving the chat.
list_subscriptionsdetect_subscriptionsbulk_add_subscriptionsadd_subscriptionupdate_subscriptiondelete_subscriptionget_subscription_summaryTrack balances, generate amortization schedules, and compare avalanche vs. snowball payoff plans across all your loans.
list_loansadd_loanupdate_loandelete_loanget_loan_amortizationget_debt_payoff_planAsk for live or historical FX rates, convert amounts between currencies, or pin your own rate overrides for bookkeeping.
get_fx_rateconvert_amountlist_fx_overridesset_fx_overridedelete_fx_overrideSplit a single transaction across multiple categories — useful for $200 grocery runs that include household goods, or Costco trips that mix food and electronics.
list_splitsadd_splitupdate_splitdelete_splitreplace_splitsCreate, list, reorder, test, and delete auto-categorization rules. Dry-run any rule against your history before you apply it.
list_rulescreate_ruleupdate_ruledelete_ruletest_rulereorder_rulesapply_rules_to_uncategorizedManually create, rename, move, or delete portfolio positions (the import pipeline auto-creates them from CSV/ZIP, but for one-offs use these). Plus the read tools for portfolio metrics, performance, deep-dive on a single position, and rebalancing/benchmark insights. Renames cascade to all transactions automatically; deletes leave the transactions in place with the holding link cleared.
add_portfolio_holdingupdate_portfolio_holdingdelete_portfolio_holdingget_portfolio_analysisget_portfolio_performanceanalyze_holdingtrace_holding_quantityget_investment_insightsAdd or update accounts, including a short alias (e.g. last 4 digits of a card, or a receipt label) so Claude can match a transaction even when the source document doesn't use the canonical name. The account parameter on every write tool fuzzy-matches your account names and exact-matches aliases — pass either.
add_accountupdate_accountdelete_accountget_account_balancesBefore recording a transaction, ask Claude to guess the right category and tags based on your rules and history.
suggest_transaction_detailsBalances, net worth, budgets, goals, spending trends, income statements, health score, spotlight alerts, weekly recap, cash flow forecast, anomalies — all the dashboards, queryable in natural language. Portfolio metrics live in the Portfolio holdings card above.
get_account_balancesget_net_worthsearch_transactionsget_budget_summaryget_spending_trendsget_income_statementget_goalsget_cash_flow_forecastget_recurring_transactionsget_spotlight_itemsget_weekly_recapget_spending_anomaliesget_financial_health_scoreget_categoriesfinlynq_helpHow destructive ops stay safe:bulk updates, deletes, imports, and subscription-detection all use a preview → confirm → execute pattern. The preview returns a signed token scoped to the exact payload; the execute step rejects unless the token matches. Claude can't skip the preview, and it can't mutate the payload between steps without invalidating the token.
Common issues and fixes when connecting an AI assistant to Finlynq. Click any item to expand.
DEPLOY_GENERATION on every release, which force-logs out in-flight tokens for security. Re-OAuth and you're back in within seconds.HTTP 401 Unauthorized from /api/mcp▾HTTP 403 Forbidden▾Originheader isn't on our allowlist. Custom MCP clients should send Origin as one of: claude.ai, claude.com, chatgpt.com, cursor.com, windsurf.dev, or codeium.com. CLI clients that send no Origin header at all are allowed through.HTTP 423 Locked▾portfolio_holding_id on every row in an is_investment=true account. Cash legs are auto-bound to a per-account Cash sleeve.DATABASE_URL and PF_USER_ID (a UUID matching a row in users.id). The stdio transport has no HTTP auth layer — it binds to one user at process startup. Without PF_USER_ID the process exits 1 immediately.Issue not listed? Open a GitHub issue at github.com/finlynq/finlynq/issues — we triage daily.