vokse
Household budgeting app with an AI assistant.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only
What it can do
- List Households: List the households this connection covers, with your role and the access level. Call this first when a tool needs a householdId.
- List Rules: List the household automation rules with their conditions and action, newest priority first. Use this before answering "what rules do I have" or before creating one that may already exist.
- Preview Rule: Show which existing transactions a rule would touch, without changing anything. Use it to check a rule before apply_rule, or to tell the user how many rows are affected.
What data it sees
Do you need an account
No: the server works without sign-in
Household budgeting app with an AI assistant. Connect Claude, ChatGPT or any MCP client to your vokse household over OAuth 2.1 and work with your zero-based envelope budget, accounts, transactions, recurring payments, receipts, goals, forecasts and reports. Read-only or full access, chosen per household.
Server tool list (29)
Raw names from tools/list. Only developers need these.
| list_households | List the households this connection covers, with your role and the access level. Call this first when a tool needs a householdId. |
| list_rules | List the household automation rules with their conditions and action, newest priority first. Use this before answering "what rules do I have" or before creating one that may already exist. |
| preview_rule | Show which existing transactions a rule would touch, without changing anything. Use it to check a rule before apply_rule, or to tell the user how many rows are affected. |
| search | Cross-entity full-text search. `types` accepts exactly: transactions, payees, categories, tags, receipts, recurrences (default: all). Trigram-similarity ranked. Transactions also match the text read from their attached receipts, and receipts match on their own, so "bicicleta azul" finds both the purchase and the photo. For "duplicate charges" or "duplicate subscriptions" (e.g. Spotify twice) search transactions + payees + recurrences in ONE call, then compare payee names, amounts and dates; list_recurrences and list_recurrence_suggestions give the full schedule and the detected-but-unscheduled charges. Use for "find anything mentioning X" queries. |
| list_goals | List every category goal in the household (kind, targetCents, byDate, notes) together with the category name. Kinds: target_balance, target_by_date, monthly_funding, spending_target, debt_payoff. |
| list_accounts | List all financial accounts in the household (checking, savings, credit cards, etc.), including their current balance in the account currency. |
| get_account | Fetch a single financial account by its ULID. Returns name, type, currency, balance, status. |
| list_tags | List every tag in the household (id, name, color). Use the ids with update_transaction {patch: {tagIds}} or list_transactions {tagIds}. |
| list_transaction_flags | List the household colour flags (six built-ins: red, orange, yellow, green, blue, purple) with their id, systemKey, current name (renamed by the household when isDefaultName is false), colour and keyboard shortcut. Use the ids with list_transactions {flagIds} or update_transaction {flagId}; update_transaction also accepts flag: "<systemKey or name>". |
| get_budget | Get the full budget snapshot for a given month (YYYY-MM): per-category assigned/activity/carryover/available — each row includes categoryName + groupName (use those names when answering; never show raw ids) — plus ABT (Available to Budget) and totals. Use this for any "where is my money?" question. |
| list_payees | List every payee (merchant or person) in the household with its id, name, and default category id. Use this to turn the payeeId on a transaction into a human-readable name — transactions reference payees by id and often carry no inline name — or to browse the payee directory. Returns an array of payees. |
| payee_category_hints | Category evidence per payee, for categorising, in ONE call: name, defaultCategoryId, topCategoryId + topCategoryCount (the category this household used most for the payee), lastCategoryId (its most recent category) and uncategorisedCount (rows still without a category). Fields that are null or zero are omitted; isTransfer: true marks a transfer payee whose rows are never categorised; looksLike ("cash_withdrawal", "bank_fee", "card_payment") marks a payee whose name matches one of the fixed categorising rules (cash withdrawal, bank fee, card payment), which win over its history. When a cash_withdrawal payee is present the result also carries cashAccounts (the open accounts of type cash, by id and name; empty means there is none), cashWithdrawalCategory (the existing cash-withdrawal category, or null) and cashRule, the exact call those rows take: follow it literally. Filter with onlyWithUncategorised: true (the working set of a categorising turn, pending payees first) or payeeIds (up to 200). Use this instead of calling list_transactions per payee: it replaces the same-payee history lookup for every payee at once. |
| get_payee | Fetch a single payee by its ULID. Returns its name, normalized name, default category id, and transfer info. Use to resolve one payeeId to its name. |
| list_members | Who shares this household and with which role (owner, editor, viewer). Useful when the user asks who can see or change their money. |
| list_transactions | List transactions, newest first. Filters: accountId, categoryId, payeeId, dateFrom/dateTo (YYYY-MM-DD), search (memo, payee names and aliases, receipt text), amount range, tagIds (any-of), flagIds / hasFlag (colour flags; names via list_transaction_flags), hasReceipt, needsReview, uncategorized. uncategorized: true = every row with no category that can take one (any sign, any account; transfer legs, system rows and split parents excluded), independent of needsReview. needsReview is a small subset: to find everything that still needs a category use uncategorized: true. Paginated: pass nextCursor back as cursor until it is null; limit up to 100. Rows are compact by default (id, date, amountCents, currency, accountId, payeeName; payeeId, categoryId, memo, flagId, tagIds, splits, transferGroupId, suggestedCategoryId / suggestionConfidence / suggestionSource only when set, status only when not cleared, needsReview only when true: a missing categoryId means uncategorised). Compact rows carry everything needed to categorise; fields: "full" (every column) is for API clients that need the rest, never a reason to re-fetch a page. |
| get_transaction | Fetch a single transaction by its ULID, including splits and tag ids. |
| list_categories | List the household category tree: every group (id, name, hidden, systemKey, position) with its categories (id, name, icon, color, hidden, needsReview, linkedAccountId). Call it before creating, renaming or budgeting so you reuse existing names and ids. includeHidden defaults to true. |
| generate_forecast | Produce a per-category spend projection for :yearMonth. Returns baseline (EMA over the last 6 months) + recurrence overlay, plus an LLM-adjusted refinement when refine=true (default false; only enable when the user explicitly asks for explanations). |
| generate_report | Produce a vokse report for a date range and return the live JSON inline. For a downloadable file use export_report instead. |
| export_report | Enqueue an async downloadable export (csv, pdf or xlsx) of a vokse report and return the exportId — the host polls GET /reports/exports/:id for the download URL. For inline data use generate_report. |
| list_insights | List the household's AI-generated insights, newest first. Filter by kind (monthly_summary, spending_anomaly, goal_progress, savings_opportunity, recurring_growth, cashflow_runway, budget_adherence) or periodStart (YYYY-MM-DD). By default returns undismissed insights only. Returns paginated items + nextCursor; pass the previous nextCursor back as cursor to fetch the next page. |
| list_recurrences | List the recurring transactions (subscriptions, rent, salary): name, amount, frequency, next run date and status (active, paused or archived). Soonest first. |
| list_recurrence_suggestions | Recurring charges detected in the household activity (ADR 0109): subscriptions and bills that are not scheduled yet (kind "new") and tracked recurrences whose last charge changed price (kind "price_change"). Each carries a stable key, payee, amount, cadence, confidence and the charges behind it. Use accept_recurrence_suggestion to schedule one. |
| list_receipts | List receipt photos the household uploaded, newest first, with what was read from each (merchant, date, total, tags, summary, item count, status). inboxOnly=true returns the tray: photos not yet linked to a transaction. status filters by extraction state (pending, processing, extracted, failed); q matches the text read from the photo (merchant, items, tags). Use get_receipt for the full line items. A pending/processing receipt is still being read; a failed one could not be read. |
| get_receipt | Everything read from one receipt photo: merchant, date, totals (total, subtotal, tax, tip), payment method, tags, summary, and every line item with quantity, unit, unit price and line total (integer cents; unit prices also per base unit kg / l / unit). You never see the image, only what was read from it. |
| search_receipt_items | Line items read from receipt photos, newest purchase first: description, canonical product name, brand, quantity + unit, unit price, line total, and the unit price per base unit (kg, l, unit). q matches product names ("manzana", "papel higiénico"); merchant narrows to one shop; dateFrom/dateTo bound the purchase day. Use it to answer "what did I pay for X on that receipt" or to list what was bought somewhere. |
| summarize_receipt_items | Per-product summary across all receipt photos: how many times it was bought, total spent, and the unit price (quantity-weighted average, min, max, latest) per base unit (kg, l, unit), plus where it was bought. Answers "how much am I paying per kilo of apples", "what is the most expensive thing I buy at the supermarket" (sort=unitPrice, merchant=...), "what do I buy most often" (sort=frequency). Always say the unit when you quote a price. |
| receipt_item_price_history | How the unit price of a product moved over time, from receipt photos: per month (default) or week, quantity-weighted average plus min/max per base unit (kg, l, unit) and the merchants. Answers "how much has the price of apples gone up this year". Compare the first and last buckets and say the unit; if there are fewer than two buckets say there is not enough history. |
| list_recent_changes | List recent changes to the household (the change history / "Recent Moves"): budget assignments and moves, transaction edits, category/account/payee/goal/rule/recurrence/tag changes — newest first, with who made each one and whether it can be undone. Use the returned id with undo_change / redo_change. Reversals (undos/redos) are listed too unless includeReversals is false. |