Skip to content

Available tools

The Paisa MCP server exposes 39 tools across 19 groups. Any MCP-compatible AI assistant can call them based on your conversation.

ToolTitleClassDescription
get_transactionsSearch Transactionsread-onlySearch transactions: compact rows (limit 25, max 100), more/cursor paging, page-1 spent/income totals over the whole filter. Counterparty: personName or personId. search matches merchant names only, not descriptions. full: true = raw joined rows (much larger).
get_uncategorized_groupsGroup Uncategorized Transactionsread-onlyToken-cheap categorizing: groups uncategorized transactions by merchant-like pattern and returns {pattern,t:‘dr'
categorize_groupsCategorize Transaction GroupswriteCategorize whole groups from get_uncategorized_groups: every matching uncategorized transaction, plus a learning rule for future imports. Unknown categorySlug fails before any write; dryRun previews.
backfill_personsBackfill Persons from Transactionswrite (idempotent)Create persons from UPI/IMPS counterparties in unlinked transactions (deduped by name) and link those transactions to them. Idempotent. dryRun previews.
update_transactionUpdate Transactionwrite (idempotent)Update a transaction’s category, merchant, owner, notes, or flags.
bulk_link_entityBulk Link Transactionswrite (idempotent)Link transactions to a merchant or person in bulk (exactly one of merchantId/personId per link), optionally setting categoryId.
manage_duplicatesManage Duplicate TransactionswriteDuplicates and money conflicts. flag: transactionId (excluded from totals). list. resolve: ids + resolution (ignore
get_reconciliation_contextGet Reconciliation Contextread-onlyExisting transactions of one account in a date range, for reconciling a statement before import (overlaps, duplicates).
bulk_categorize_transactionsBulk Categorize Transactionswrite (idempotent)Set the category of many transactions at once (no merchant/person link).
delete_transactionsDelete TransactionsdestructiveHard-delete transactions. PERMANENT — confirm first. Exactly one of id, ids, filters (deletes every match). Matching everything needs confirmDeleteAll.
rescan_transactionsRescan Transactionswrite (idempotent)Apply saved learning rules (merchant aliases, category rules) to uncategorized transactions, like the web app’s auto-categorize.
get_settlement_candidatesFind Settlement Candidatesread-onlyBank debits that look like bill payments of a credit card. After importing a CC statement, mark them as transfers to avoid double-counting.
get_transactionGet Transactionread-onlyOne transaction by id (date, amount, type, description, links, flags).
ToolTitleClassDescription
preview_importPreview Statement Importread-onlyPreview a local statement; writes nothing. pdf (HDFC savings/cards, Amex, SBI savings): filePath, account (create it first with upsert_entity) — returns already-in-Paisa / conflict / new counts; then import_statement with the same args. csv: filePath — returns headers, sample rows, detected mapping. cas (CDSL CAS): filePath, password.
import_statementImport StatementwriteImport transactions, then auto-categorize. pdf: filePath, account — only rows preview_import reported new. csv: filePath, mapping (from preview_import); duplicates skipped; date overlap → 409 unless force; not in private mode. rows: accountId, source, granularity, transactions (reconciled). json_file: same but filePath of a JSON array of those rows — for large statements. cas: filePath, password — adds untracked holdings.
ToolTitleClassDescription
auto_categorize_jevAuto-Categorize with JevwriteAuto-categorize uncategorized groups with Jev (TypeSafe’s classifier, no LLM tokens). Opt-in: needs JEV_API_KEY; refused in private mode (sends transaction text to a third party) unless JEV_ALLOW_PRIVATE_MODE=1, then only the sanitized merchant pattern is sent. Groups at/above minConfidence get categorized + a rule; the rest return in review for categorize_groups. dryRun previews.
ToolTitleClassDescription
list_entitiesList Entitiesread-onlyList data. Optional filters — persons: id; merchants: rawId (UPI ID or name); budgets: month, year. Required — learning: slice; goal_contributions: id (goal UUID); investment_transactions: id (holding UUID). alerts = unread; recurring = auto-detected subscriptions/rent/salary.
upsert_entityCreate or Update EntitywriteCreate (omit id) or update (pass id) an entity. Required on create — merchant: rawId. person: name. category: name, slug, type. bank_account: name, bankName, type, last4, owner. insurance: name, type, provider, premiumAmount, premiumFrequency, startDate, owner. invite: email (create only; returns the invite URL).
delete_entityDelete EntitydestructiveDelete by id. PERMANENT — confirm with the user first. merchant: id or ids (bulk); transactions are unlinked, not deleted. person: 409 while transactions reference it. category: custom only. debt: prefer manage_debt action=settle. invite: pending only.
ToolTitleClassDescription
merge_merchantsMerge MerchantsdestructiveMerge duplicate merchants into primaryId: their transactions are re-pointed to it and the duplicates deleted. PERMANENT — confirm with the user first.
ToolTitleClassDescription
get_analyticsGet Analyticsread-onlyAnalytics over the last months (default 6). spending_trends: per-month totals by category type, category breakdown, budget vs actual (for one month, read its row). category_analytics: one category over time (slug required). merchant_analytics: one merchant’s history and total (id required).
ToolTitleClassDescription
upsert_savingsCreate or Update Savings VehiclewriteCreate (omit id) or update (pass id) a savings goal, EMI or sinking fund. Amounts: ₹ decimal strings; dates YYYY-MM-DD. Required on create — goal: goalType, name, targetAmount. emi: name, totalAmount, emiAmount, startDate, endDate, totalMonths, owner. sinking_fund: name, targetAmount, targetDate, monthlyContribution. status — goal: active
contribute_to_goalContribute to GoalwriteAdd a contribution to a savings goal.
ToolTitleClassDescription
set_budgetSet Budgetwrite (idempotent)Create or update a category’s budget. period: week, month (default), year.
ToolTitleClassDescription
get_dashboardGet Dashboardread-onlyDashboard: this month’s income/needs/wants/investments, spending trends (last months, default 6), recent transactions, latest net worth.
ToolTitleClassDescription
sync_recurringSync Recurring Merchantswrite (idempotent)Flag recurring merchants (isRecurring) detected from transaction history. Run after importing statements.
ToolTitleClassDescription
check_alertsCheck AlertswriteGenerate and return alerts: budget overruns, unusual spending, EMIs ending, insurance renewals. Call at the start of a finance conversation.
manage_alertsManage Alerts and Ruleswrite (idempotent)Alerts and alert rules. dismiss: id. read: id, or all:true. list_rules. set_rule: type (e.g. budget_threshold) + enabled and/or threshold. list_custom / set_custom: own rules (scope, targetId, period, amount, owner; id edits). Delete: delete_entity custom_alert_rule.
ToolTitleClassDescription
manage_debtAdd or Settle DebtwriteRecord or settle a debt (owed or owing). add: name, amount, type required (dueDate, notes optional). settle: id required; sets balance to settledAmount (default 0).
ToolTitleClassDescription
generate_monthly_reportGenerate Monthly Reportwrite (idempotent)Generate and save a monthly report: income, expenses, savings rate, top categories, insights. Re-running overwrites.
get_reportGet Reportread-onlyRead a report. monthly: income, expenses, savings rate, net worth for the last months (default 6). net_worth: current + up to 12 months (cash, investments, emergency fund, liabilities). upcoming: EMIs, SIPs, renewals, card bills due in the next days (1-365, default 60). heatmap: daily spend for a year (default this year).
ToolTitleClassDescription
export_transactionsExport Transactionsread-onlyExport transactions (full rows) when the user asks for an export or dump.
ToolTitleClassDescription
set_learning_ruleSet Learning Rulewrite (idempotent)Save a categorizer rule: this merchant (type=merchant, merchantId) or person (type=person, personId) always gets categoryId.
ToolTitleClassDescription
update_net_worthUpdate Net Worthwrite (idempotent)Save a month’s net worth snapshot (upsert). mode=manual (default): the given ₹ decimal strings, omitted = 0. mode=auto: computed from investments, FDs and accounts in Paisa; value fields ignored.
ToolTitleClassDescription
upsert_investmentCreate or Update InvestmentwriteCreate (omit id) or update (pass id) an investment. Amounts: ₹ decimal strings; dates YYYY-MM-DD. Required on create — sip: name, amount (monthly), startDate, sipDay, owner; pause/stop via status. fixed_deposit: bankName, amount, interestRate, startDate, maturityDate, owner. holding (manual position; same name+platform updates it): name, holdingType, owner, investedAmount, currentValue.
sync_zerodhaSync Zerodhawrite (idempotent, external)Zerodha link. token_health: is the access token still valid (expired → re-login in the web app). sync: pull latest stocks, MFs and SIPs.
ToolTitleClassDescription
get_settingsGet Settingsread-onlyprofile: name, email, owner. household: currency, locale, owner labels, members. encryption: mode, PIN.
update_settingsUpdate Settingswrite (idempotent)profile: name. household: name, currency, locale, ownerLabels. preferences: prefs (layout, theme, density, homeCards, startTab, list style, sorts).
ToolTitleClassDescription
set_encryption_modeSet Encryption ModedestructiveSwitch encryption mode. ‘private’ works only if the user already set up a PIN in the web app (this tool cannot create keys). ‘standard’ is refused while client-encrypted data exists, so it normally fails from MCP. Confirm with the user first.

The 78 -> 39 tool consolidation (0.2.0) renamed the tools below; the old names still worked as hidden tools/list aliases through 0.2.x. 0.3.0 removed them — calling an old name now returns the SDK’s unknown-tool error. list_waitlist and send_test_push (admin-only) were removed from MCP entirely (no replacement).

Old tool (removed in 0.3.0)New toolArguments
import_statement_pdfpreview_import / import_statementfrom: “pdf”
import_csv_parsepreview_importfrom: “csv”
import_csv_confirmimport_statementfrom: “csv”
import_statement_batchimport_statementfrom: “rows”
import_statement_fileimport_statementfrom: “json_file”
list_categorieslist_entitiesentity: “categories”
list_merchantslist_entitiesentity: “merchants”
list_bank_accountslist_entitiesentity: “bank_accounts”
list_personslist_entitiesentity: “persons”
list_budgetslist_entitiesentity: “budgets”
list_debtslist_entitiesentity: “debts”
list_inviteslist_entitiesentity: “invites”
list_alertslist_entitiesentity: “alerts”
list_recurringlist_entitiesentity: “recurring”
list_push_subscriptionslist_entitiesentity: “push_subscriptions”
list_saved_reportslist_entitiesentity: “saved_reports”
list_learninglist_entitiesentity: “learning”, slice:
list_savingslist_entitiesentity: (contributions → goal_contributions)
list_investmentslist_entitiesentity: (transactions → investment_transactions)
upsert_merchantupsert_entityentity: “merchant”
upsert_personupsert_entityentity: “person”
upsert_categoryupsert_entityentity: “category”
upsert_bank_accountupsert_entityentity: “bank_account”
upsert_insuranceupsert_entityentity: “insurance”
create_inviteupsert_entityentity: “invite”
delete_categorydelete_entityentity: “category”
delete_merchantdelete_entityentity: “merchant”
delete_persondelete_entityentity: “person”
delete_debtdelete_entityentity: “debt”
revoke_invitedelete_entityentity: “invite”
delete_savingsdelete_entityentity:
delete_investmentdelete_entityentity:
dismiss_alertmanage_alertsaction: “dismiss”
mark_alert_readmanage_alertsaction: “read”
list_alert_rulesmanage_alertsaction: “list_rules”
set_alert_rulemanage_alertsaction: “set_rule”
add_debtmanage_debtaction: “add”
settle_debtmanage_debtaction: “settle”
get_reportsget_reportreport: “monthly”
get_net_worthget_reportreport: “net_worth”
get_upcomingget_reportreport: “upcoming”
get_spending_heatmapget_reportreport: “heatmap”
get_profileget_settingssection: “profile”
get_householdget_settingssection: “household”
get_encryption_statusget_settingssection: “encryption”
update_profileupdate_settingssection: “profile”
update_householdupdate_settingssection: “household”