archive-account
ChatGPTArchive an account. It stops appearing in listings but its transactions and history are kept, and it can be restored.
archive-category
ChatGPTArchive a category. Existing transactions keep it, but it stops being offered for new ones. It can be restored.
archive-credit-card
ChatGPTArchive a credit card. Its charges and invoice history are kept, and it can be restored.
close-budget-month
ChatGPTClose or reopen a budget for one month. Closing settles the budget for that month: it stops reserving whatever was left over, so the unspent remainder returns to the account's projected balance. Reopening puts the reservation back.
complete-transaction
ChatGPTMark a pending transaction as completed, confirming the money actually moved. Settle it against either an account or a credit card, never both. Paying by card also needs the invoice due_date the charge lands on.
create-account
ChatGPTCreate an account, such as a bank account, cash or savings.
create-budget
ChatGPTSet a monthly spending budget for an expense category over a period of time. A budget runs from start_date until end_date, or indefinitely when end_date is omitted. The same category can hold several budgets as long as their periods do not overlap, which is how a limit is changed from a given month onward.
create-category
ChatGPTCreate a category. Pass parent_id to nest it under an existing category of the same type.
create-credit-card
ChatGPTAdd a credit card. The closing day fixes each invoice; the due day is when it must be paid. It settles from the account you link.
create-credit-card-transaction
ChatGPTRecord a charge on a credit card. The charge lands on the invoice you name with due_date, not on the account, and only reaches the account when that invoice is paid. The currency must be one the user has a rate for; get-profile and list-currency-rates report which.
create-group
ChatGPTCreate a group for splitting shared expenses. Members are people from list-people; the user is added automatically.
create-group-expense
ChatGPTRecord an expense and its splits inside a private Monee Mate group the user owns or belongs to. Only existing group members may be included. This records a past payment; it does not send money, contact an external service, or invite anyone. The splits must add up to total_amount whatever the split_method says, so compute them explicitly. For "equal", divide evenly and put any rounding remainder on one member rather than letting the total drift. Naming an account changes the user's recorded account balance, which only makes sense when the payer is the user themselves.
create-group-settlement
ChatGPTRecord a repayment that already happened between existing members of a private Monee Mate group the user owns or belongs to. This only updates group records and does not send money or contact an external service. get-group reports the outstanding recorded balances.
create-people-transaction
ChatGPTRecord money lent to, borrowed from, or repaid with a person. The four types are directional, so pick carefully: - "lent": the user gave them money and is now owed it. - "borrowed": the user received money and now owes it. - "payment_made": the user paid back something they owed. - "payment_received": they paid back something they owed the user. Naming an account changes its recorded balance. Leave it out to track the debt without changing an account balance. This does not send money or initiate a payment. A linked person also receives a mirrored record in their MoneeMate account.
create-person
ChatGPTAdd a person to track money with. Giving an email invites them: if they already use MoneeMate the two accounts link and balances stay in sync on both sides, otherwise an invitation is sent. Adding someone without an email creates a local-only record, which is fine for tracking but never links. Sending an invitation emails a real person, so only pass an email the user gave you.
create-transaction
ChatGPTRecord an expense, income or transfer. A transfer moves money between two of the user's own accounts: it needs to_account_id and takes no category. An expense or income needs a category. Set is_recurring to repeat it on a schedule.
delete-account
ChatGPTPermanently delete an account together with every transaction recorded against it. This cannot be undone. Ask the user to confirm first, and suggest archive-account instead when they only want it out of the way.
delete-budget
ChatGPTDelete a budget. Transactions in its category are untouched; only the monthly limit goes away. Ask the user to confirm first.
delete-category
ChatGPTPermanently delete a category. This cannot be undone. Ask the user to confirm first, and suggest archive-category instead when they only want it hidden.
delete-credit-card
ChatGPTPermanently delete a credit card together with every charge recorded on it. This cannot be undone. Ask the user to confirm first, and suggest archive-credit-card instead when they only want it hidden.
delete-credit-card-transaction
ChatGPTPermanently delete a credit card charge. Ask the user to confirm first. For a recurring charge, action decides whether one occurrence goes or the whole series.
delete-currency-rate
ChatGPTDelete an exchange rate. Refused if any transaction still uses that currency. Ask the user to confirm first.
delete-group
ChatGPTPermanently delete an empty private Monee Mate group owned by the user, removing it for all its members. Groups with any recorded expenses or settlements cannot be deleted. This only deletes Monee Mate records and does not contact an external service. Ask the user to confirm first.
delete-group-expense
ChatGPTPermanently delete a shared expense and its splits, which changes what every member of the group owes. Ask the user to confirm first.
delete-people-transaction
ChatGPTPermanently delete a loan or repayment. If the person is a linked MoneeMate user, the mirrored record on their side goes too. Ask the user to confirm first.
delete-person
ChatGPTPermanently delete a person together with every loan and repayment recorded with them. If the two accounts were linked, the mirrored records on their side go too. Ask the user to confirm first.
delete-recurring-transaction
ChatGPTDelete a whole recurring series. Ask the user to confirm first, and be explicit about which of the two modes you are using, because they differ a lot: - "all": removes the series and every transaction it ever generated, including completed ones already reflected in account balances. - "pending": removes only the occurrences that have not been completed, leaving the historical record intact. This is usually what someone means by "cancel it".
delete-transaction
ChatGPTPermanently delete a transaction. Ask the user to confirm first. For a recurring row, action decides how much goes: only that occurrence, this one and everything after it, every occurrence, or all pending ones. Deleting a transfer removes both of its sides.
end-recurring-transaction
ChatGPTStop a recurring series from a given occurrence onwards, keeping everything before it. This is the gentle option: past occurrences and any transactions already completed stay untouched. Use delete-recurring-transaction to remove the series entirely.
get-dashboard
ChatGPTGet the user's financial overview: balances, what is pending, what is coming up, and how the current month is going. Start here when asked a broad question about how their money looks.
get-group
ChatGPTGet one group with its members, expenses, settlements and who currently owes whom. Member ids in this payload are the person ids the other group tools expect.
get-people-balances
ChatGPTSummarise what every person owes the user and what the user owes each of them, including shared groups. A negative person balance means they owe the user; a positive one means the user owes them. The overall net is total owed to the user minus total the user owes.
get-person
ChatGPTGet one person with their balance, including anything owed through shared groups. A negative person or total balance means they owe the user; a positive one means the user owes them. Individual group_balances use the opposite convention: positive means they owe the user.
get-profile
ChatGPTGet the acting user's profile: their name, timezone and currency settings. Call this first when you need to know what "today" means for them or which currency the amounts are in.
get-spending-by-category
ChatGPTTotal income and expenses per category over a date range, rolled up to the parent category. Transfers are excluded, since moving money between the user's own accounts is not spending. Use this for "where did my money go" questions instead of adding up list-transactions by hand.
list-accounts
ChatGPTList the user's accounts with current, projected and reserved balances for a given month. Use it to discover account ids before creating transactions.
list-budgets
ChatGPTList monthly spending budgets with how much has been spent against each one. Budgets are per expense category and are evaluated a month at a time, so the same budget reports different numbers for different months. Only budgets whose period covers the requested month are listed, so a category can hold different limits over time. A budget marked is_closed was settled for that month and no longer reserves anything.
list-categories
ChatGPTList the user's expense and income categories. Categories can nest one level: a child points at its parent through parent_id. Use it to discover category ids before creating transactions or budgets.
list-credit-card-transactions
ChatGPTList the charges on one credit card invoice. Get the invoice date from list-credit-cards (the current one) or list-past-invoices.
list-credit-cards
ChatGPTList credit cards with their current invoice. An invoice is "open" while charges can still land on it, "closed" once the closing day passed and the total is fixed, and "paid" once settled from the linked account.
list-currency-rates
ChatGPTList the exchange rates the user has configured. A transaction can only be recorded in a currency that appears here or is one of their own two currencies.
list-groups
ChatGPTList the shared expense groups the user owns or belongs to. Use it to discover group ids.
list-past-invoices
ChatGPTList a credit card's past invoices, newest first, with their totals and whether they were paid.
list-people
ChatGPTList the people the user tracks money with, and what each one nets out to, including shared groups. A negative person balance means they owe the user; a positive one means the user owes them. Use it to discover person ids.
list-people-transactions
ChatGPTList the loans and repayments recorded with one person, plus the running balance including anything owed through shared groups.
list-recurring-transactions
ChatGPTList the recurring transaction series themselves — the rules, not the occurrences they generate. Use list-transactions to see the individual dated occurrences. A series with no end_date runs indefinitely.
list-transactions
ChatGPTList transactions in a date range. The listing blends real transactions with the projected occurrences of recurring ones, credit card charges, transfers and shared group expenses, exactly as the app shows them. Every row carries a group_name saying what it is. Pass that value, and occurrence_number when present, to update-transaction or delete-transaction: a row from "recurring_transactions" is a projection that does not exist as a stored record until it is edited, ignored, or completed. Each row includes is_ignored; ignored pending rows remain visible but do not affect balances. Use set-transaction-ignored to change only one pending row or occurrence.
pay-invoice
ChatGPTMark a credit card invoice as paid. This is when the charges finally leave the linked account, so it moves the money in the balances.
restore-account
ChatGPTRestore a previously archived account so it shows up in listings again.
restore-category
ChatGPTRestore a previously archived category.
restore-credit-card
ChatGPTRestore a previously archived credit card.
set-transaction-ignored
ChatGPTIgnore or restore one pending transaction in all balances and projections while keeping it visible. Use is_ignored=true to exclude it, false to include it again. Read the row with list-transactions first and pass its id, group_name as group, date as original_date, and occurrence_number for a recurring projection. Only that occurrence changes; the recurring series and its other occurrences are unchanged. Both sides of a pending transfer change together. Completed transactions and credit-card invoice rows cannot be configured this way. Completing an ignored transaction automatically includes it again.
uncomplete-transaction
ChatGPTMove a completed transaction back to pending, undoing a premature completion.
unpay-invoice
ChatGPTUndo the payment of a credit card invoice, putting it back to closed and returning the money to the account balance.
update-account
ChatGPTUpdate an account. Only the fields you send are changed.
update-budget
ChatGPTChange a budget's monthly amount, its period, its category or the account it draws from.
update-category
ChatGPTRename a category or move it under a different parent. Only the fields you send are changed.
update-credit-card
ChatGPTUpdate a credit card. Only the fields you send are changed.
update-credit-card-transaction
ChatGPTReplace the details of a credit card charge. Every field is required: read the current values with list-credit-card-transactions and send back the ones you are not changing. Use the row's own group_name; a "credit_card_recurring_transactions" row is a projected occurrence and also needs occurrence_number.
update-currency-settings
ChatGPTSet the user's primary and international currencies. The primary currency is what balances and totals are reported in. Changing it does not reconvert anything already recorded, so existing amounts will be read against the new currency — confirm with the user before calling this.
update-group
ChatGPTRename a private Monee Mate group the user owns or belongs to, change its description, or replace its member list using only people already in the user's contact list. This only updates records inside Monee Mate; it does not send invitations or contact an external service. All group members see the updated group records. member_ids replaces the whole list rather than adding to it, so send every member you want to keep. Read the current ones with get-group first.
update-group-expense-account
ChatGPTAttach a shared expense to one of the user's accounts, or detach it. Attaching makes the payment show up in that account's balance; detaching leaves the split recorded without touching any balance.
update-group-settlement-account
ChatGPTAttach a group settlement to one of the user's accounts, or detach it, so the repayment does or does not show up in that account's balance.
update-people-transaction
ChatGPTChange the recorded amount, date, description or account of a loan or repayment. A linked person's mirrored record is updated too. This does not send money or initiate a payment. The type cannot change: delete it and record a new one instead.
update-person
ChatGPTRename a person. Use update-person-email to change their email, which is a separate flow because it can trigger an invitation.
update-person-email
ChatGPTSet or change a person's email, which is how a local-only record becomes a linked one. This emails a real person an invitation when the address does not already belong to a MoneeMate account. Only pass an address the user gave you, and confirm with them before calling it.
update-timezone
ChatGPTChange the user's timezone. This shifts what counts as "today" for reminders and for every date the other tools report.
update-transaction
ChatGPTReplace the details of a transaction. Every field is required: send the current values for anything you are not changing, reading them first with list-transactions. Use the row's own group_name and occurrence_number. Editing a row from "recurring_transactions" edits that single occurrence, not the whole series.
upsert-currency-rate
ChatGPTAdd an exchange rate for a currency, or update the existing one. Rates say how much one unit of this currency is worth in the user's primary and international currencies.