archive_wallet
ChatGPTArchive a wallet for cleanup, retaining its transactions. Wallets cannot be permanently deleted. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
create_budget
ChatGPTCreate a real budget for planning and reporting. Use list_categories to discover the exact category_id. Amounts are integer cents. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
create_category
ChatGPTCreate real organizational category metadata. Exact IDs are required for later writes that use this category. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
create_recurrence
ChatGPTCreate a recurrence affecting future scheduled/planned financial data. Use list_wallets for wallet_id and transfer to_wallet_id, list_categories for category_id, and list_tags for tag_ids. Confirm frequency, amount, start date, and next occurrence when ambiguous. Use YYYY-MM-DD from 2000-01-01 through 2100-12-31 for start_on, end_on, next_run_on, and anchor_date. Use month_and_day as MM-DD, for example 01-15. For semi_monthly_days, pass exactly two integers from 1 to 31, for example [1, 15]. For weekly, start_on is enough. For bi_weekly, anchor_date is optional and defaults from start_on. For semi_monthly, semi_monthly_days is optional and defaults from start_on. For monthly, day_of_month is optional and defaults from start_on. For quarterly, day_of_quarter is optional and defaults from start_on. For yearly, month_and_day is optional and defaults from start_on. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
create_tag
ChatGPTCreate real organizational tag metadata. Use list_tags to discover exact tag IDs for future transaction and recurrence writes. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
create_transaction
ChatGPTCreate a real transaction. Use list_wallets for wallet_id and transfer to_wallet_id, list_categories for category_id, and list_tags for tag_ids. Supports flows like adding a grocery expense, rent payment, or lunch charge, but exact IDs are required and amounts are positive integer cents. category_id is required for expense/income. Optional splits create one receipt atomically, allocating portions to other categories and retaining a positive remainder in the parent category. Dedicated refunds/chargebacks and zero/negative amounts are unsupported; income refunds increase income without reducing expense spending. Use occurred_at as an ISO 8601 date-time with timezone, for example 2026-07-23T14:30:00Z or 2026-07-23T10:30:00-04:00. The backend accepts only instants whose date in the family timezone is from 2000-01-01 through 2100-12-31. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
create_wallet
ChatGPTCreate a real wallet/account affecting balances and projections. Amounts are integer cents. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
delete_tag
ChatGPTPermanently delete a tag and remove its associations. Transactions themselves are retained. There is no tag restore operation. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
delete_transaction
ChatGPTSoft-delete a transaction. Its allocations and history are retained for recovery through restore_transaction. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
delete_transaction_splits
ChatGPTRemove all allocations from a receipt. The entire parent amount returns to its original category; the parent transaction is retained. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
get_budget_status
ChatGPTReturns budget limit, spend, remaining amount, and status by category for a period.
get_cashflow_summary
ChatGPTReturns income, expenses, net totals, category breakdown, and top categories for a date range.
get_household_overview
ChatGPTReturns family profile, currency, timezone, account balances, and a short projection summary.
get_projected_balance
ChatGPTReturns daily projected balance points for a single account over a future date range.
get_recurrence
ChatGPTRetrieve every field needed for a full recurrence update by exact recurrence_id. Use list_recurrences first to discover the ID. Preserve fields the user did not ask to change.
get_transaction
ChatGPTRetrieve every field needed for a full transaction update by exact transaction_id. Use search_transactions first to discover the ID. Preserve fields the user did not ask to change.
get_transaction_history
ChatGPTRead transaction versions and snapshot availability. Legacy versions have no complete allocation snapshot; never infer their allocations. Use exact IDs from discovery tools.
get_transaction_splits
ChatGPTRead the receipt's full category breakdown, including its original-category remainder. Only expense/income transactions can be split. Each allocation needs a distinct active category matching the parent type and family, different from the original category. Positive integer cents only. The allocation total must be less than the parent amount; the positive remainder stays in its original category. Use exact IDs from discovery tools.
list_budgets
ChatGPTDiscover exact budget IDs, periods, category IDs, and budget configuration before updating budgets.
list_categories
ChatGPTDiscover exact category IDs and display names before writing. Requires exact IDs for write tools.
list_recurrences
ChatGPTDiscover exact recurrence IDs and schedule details before updating recurring financial data.
list_tags
ChatGPTDiscover exact tag IDs and display names before writing transactions or recurrences with tags.
list_wallets
ChatGPTDiscover exact wallet IDs, names, types, and balance configuration before creating transactions or recurrences, selecting transfer destinations, or updating wallets.
reconcile_wallet_balance
ChatGPTSet a wallet/account to its observed real balance by recording a signed balance-only reconciliation. Use list_wallets to discover the exact wallet_id. actual_balance_cents may be negative. The adjustment changes wallet balances and projections, but is not an income, expense, transfer, budget item, or report transaction. Use an idempotency_key when a retry may be needed. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
restore_transaction
ChatGPTRestore a soft-deleted transaction and its existing allocations. Use search_transactions with include_deleted=true to find it. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
restore_transaction_version
ChatGPTRestore a selected version. snapshot restores the full recorded parent, tags and allocations, and requires snapshot_available=true. recorded_fields restores only historical scalar fields and preserves current tags and allocations. Read history before selecting a mode and version. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
restore_wallet
ChatGPTRestore an archived wallet. Use list_wallets with archived=true or all to discover its ID. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
search_transactions
ChatGPTSearch family transactions by date range, accounts, categories, and free text using cursor pagination.
update_budget
ChatGPTUpdate an existing real budget. Use list_budgets first unless an exact budget_id is already known. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
update_category
ChatGPTUpdate existing category metadata. Use list_categories to discover the exact category_id. Updates may affect how existing data is displayed or grouped. Do not use for delete/archive actions. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
update_recurrence
ChatGPTUpdate an existing recurrence affecting future scheduled/planned financial data. Use list_recurrences to discover recurrence_id, then get_recurrence to retrieve every current field before updating. Use list_wallets, list_categories, and list_tags for changed related IDs. This is a full recurrence update shape; preserve existing schedule values and do not guess missing fields. Use YYYY-MM-DD from 2000-01-01 through 2100-12-31 for start_on, end_on, next_run_on, and anchor_date. Use month_and_day as MM-DD, for example 01-15. For semi_monthly_days, pass exactly two integers from 1 to 31, for example [1, 15]. For weekly, start_on is enough. For bi_weekly, anchor_date is optional and defaults from start_on. For semi_monthly, semi_monthly_days is optional and defaults from start_on. For monthly, day_of_month is optional and defaults from start_on. For quarterly, day_of_quarter is optional and defaults from start_on. For yearly, month_and_day is optional and defaults from start_on. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
update_tag
ChatGPTUpdate existing tag metadata. Use list_tags to discover the exact tag_id. Updates may affect how existing data is displayed or grouped. Do not use for delete actions. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
update_transaction
ChatGPTUpdate an existing real transaction. Use search_transactions to discover transaction_id, then get_transaction to retrieve every current field before updating. Use list_wallets, list_categories, and list_tags for changed related IDs. This is a full transaction update shape; preserve existing values and do not guess missing fields. Use occurred_at as an ISO 8601 date-time with timezone, for example 2026-07-23T14:30:00Z or 2026-07-23T10:30:00-04:00. The backend accepts only instants whose date in the family timezone is from 2000-01-01 through 2100-12-31. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.
update_transaction_splits
ChatGPTCreate or replace the COMPLETE allocation list. First read get_transaction_splits; retain every allocation the user wants to keep. Remove one allocation by sending the remaining list. Use delete_transaction_splits to remove all. Only expense/income transactions can be split. Each allocation needs a distinct active category matching the parent type and family, different from the original category. Positive integer cents only. The allocation total must be less than the parent amount; the positive remainder stays in its original category. Use exact IDs from discovery tools. This modifies real family budgeting data; preserve values the user did not ask to change.
update_wallet
ChatGPTUpdate an existing wallet/account. Use list_wallets to discover the exact wallet_id and current configuration. Wallet updates should not substitute for transaction corrections. This tool modifies real user budgeting data. Use exact IDs only; never invent IDs. Resolve names or descriptions through discovery/search tools first. Amounts are integer cents. Laravel validates authorization, family scoping, policies, balances, observers, logs, duplicate checks, conflicts, and persistence. Ask for clarification before writing when intent is ambiguous. Do not use this tool for delete, archive, restore, pause, resume, materialize, or other lifecycle actions.