MCP App Store
by KeenEthics

Overview

Mutally is a mutual debt book that lives in Claude. Say who owes whom in one sentence, such as “I lent Aziz 50 dollars for lunch”, at the moment money changes hands, and Mutally records it in your book. Send the other person an invite link yourself; once they open it, sign in and approve, the two of you are connected and see the same numbers. Later entries between you arrive on their side as requests to approve, or to dispute with a note; a disputed entry stays marked until it is corrected or deleted. Record loans, repayments, gifts and opening balances in any currency, split a bill between several friends, note money you collected or paid on someone else’s behalf, and set up a recurring debt or an installment plan whose monthly charge appears on its day. Keep a rotating savings group (gap) or a chip-in collection with members, rounds and collectors, and group entries into projects such as a wedding. Then ask: who owes me, whom do I owe, what is overdue, what is waiting for my answer, what is the history with one person. Bring in earlier history from a spreadsheet: Claude reads the file you upload and Mutally shows a preview before saving. Export everything as Excel or CSV through a download link, correct or delete an entry and undo it, and delete your account. Available in 11 languages, including Uzbek. Mutally only records and calculates: it never moves money, takes payments, charges or collects fees, adds interest or messages anyone, and it is not a bank or a debt collector. People who do not use Mutally appear only by the name you give them and the entries about them. Connect your Mutally account before anything is stored; your records are kept on Mutally’s server in Germany (EU) and are deleted whenever you ask.

Tools

add_group_member

ChatGPT
Adds a name to a group the user is an admin of, at the end of the order. The name joins later through the group link. For a collection a pledge may be given: the amount this member owes in place of the group's share. A name that folds like a member's is refused. The reply is the group setup with the new member row.

approve_entries

ChatGPT
Approves entries and recurring debts waiting for the user's answer: either a list of entries and recurring debts, each with its id and the version the user saw, or one person's name to approve everything waiting from them. Give one of the two. An approved entry becomes confirmed and counts for both people; an approved recurring debt is confirmed with its charges. A group's new terms are approved by the group id and terms version in the list; the user then follows them. Something already answered is refused.

archive_contact

ChatGPT
Archives one of the user's contacts: give the contact's name. An archived contact is hidden from the user's person lists and name suggestions; balances, any connection and requests from the other person stay as they are, and recording a new entry under the name brings the contact back. Refused while the contact's balance is not zero. A name that only nearly matches a contact is asked back, with nothing changed.

change_recurring

ChatGPT
Changes a recurring debt the user set up: its amount, its day of the month or its end date. Name the person and pass the version the user saw; give only what changes (endDate null clears the end date). The change takes effect at once, charges already made stay, and a recurring the other person had approved goes back to waiting for their approval. A changed day keeps one charge a month: if this month's charge is made the new day starts next month. Only the person who set it up can change it. When the person has several recurring the reply lists them; call again with currentAmount. end_recurring stops one.

close_group

ChatGPT
Closes a group the user is an admin of, so no further rounds are made. It takes two calls. The first, with the group alone, changes nothing and shows what closing does. The user confirms with the button on the card, which sends the second call with a cardToken; a typed yes does not close. Rounds already made and their entries stay. A member who is not an admin is refused. A group name close to one of the user's groups saves nothing and the reply asks which was meant.

close_project

ChatGPT
Closes one of the user's projects, found by its name without regard to case, when the user says it is finished. A closed project keeps its records and takes no new ones. Closing a project that is already closed changes nothing and the reply says so. When the project is not found, nothing changes and the reply says so.

correct_entry

ChatGPT
Corrects an entry the user recorded: "the amount was 120, not 100". Pass the entry id, the version the user saw (get_requests and earlier replies show it) and only the fields to change: amount, currency, date, dueDate (null clears it) or note (null clears it). Only the person who recorded the entry can correct it; the person on it cannot change. An entry the other person already answered goes back to waiting for their approval, and the reply says so. undo_correction takes a correction back.

create_group

ChatGPT
Creates a group the user runs as its admin: a rotating savings group (gap) or a collection (chip-in). The user is the first member; the names given follow in order and join later through the group link. A rotating group needs shareAmount, dayOfMonth and firstRoundDate; a collection takes an optional shareAmount and target. The reply is the group setup: its terms, each member with their place and role, and whether a group link is live.

create_project

ChatGPT
Creates a project, a named group for related records such as "Apartment renovation" or "Wedding 2027", named exactly as given. A name the user already has, in any letter case, returns the existing project and creates no second one. Projects are private to the user. It does not attach any record.

delete_all

ChatGPT
Deletes the user's whole Mutally account: the login, their contacts, entries, batches and invite links. Answers "delete all my data", "delete my account" and "delete everything". People connected to the user keep their own side of the record and their own entries. It takes two calls. The first, without confirmation, deletes nothing: it shows the user what goes and who keeps their side; its card has a Delete everything button that confirms from the card itself. Otherwise the second call carries confirmation, the word "delete" or its equivalent in the user's language exactly as the user typed it in a later message of their own, and deletes the account. It cannot be undone. cardToken is sent only by the card's button; the model has no access to it.

delete_entry

ChatGPT
Deletes entries the user recorded: "delete this entry". entryIds are the ids from an earlier Mutally result. It takes two calls. The first, with entryIds only, deletes nothing and shows the user what goes. The second, with the same entryIds and confirmed true, deletes them once the user has said "yes", or its equivalent in their own language, in a later message of their own. A card's Delete button sends cardToken instead. A deleted entry leaves the other person's view too and stops counting for both of you; restore_deleted brings it back for 30 days. All the ids are deleted or none.

dispute_entry

ChatGPT
Marks one entry or one recurring debt waiting for the user's answer as wrong, with a note saying what is wrong. The note is required and the other person sees it. Give the entry id, or the recurring id for a recurring debt, and the version the user saw. A group's new terms are declined by the group id and terms version, with a note: the user stays on the terms they approved, and the change stays waiting, so it can be declined again or approved later. An entry or recurring debt already answered is refused.

end_connection

ChatGPT
Ends the live connection with one of the user's contacts: "stop sharing with Bobur". Give the contact's name. It takes two calls. The first, with the person only, changes nothing and shows the user what each side keeps. The second, with the same person and confirmed true, ends it once the user has said "yes", or its equivalent in their own language, in a later message of their own. A card's button sends cardToken instead. Answers already given stay on record; each person keeps their own contact and entries but stops seeing the other's. A name that only nearly matches is asked back.

end_recurring

ChatGPT
Ends a recurring debt the user set up: no more charges are made. Name the person and pass the version the user saw. It takes effect at once; charges already made stay, and a recurring the other person had approved goes back to waiting for their approval. Only the person who set it up can end it. When the person has several recurring the reply lists them; call again with currentAmount. If the other person disputes the ending, undo_ending takes it back.

export

ChatGPT
Gives the user their own copy of the debt book as two download links that work for 24 hours: a spreadsheet (.xlsx) with a summary, a sheet per person and a people-by-periods grid, and a CSV of every entry. Answers "export my debts" and "send me a spreadsheet of what Bobur and I owe". person is the contact the user named, as they wrote it (a near name is asked back); contactId, when the card gives one, names the person exactly and wins over person; without either, every person is exported. from and to (YYYY-MM-DD) narrow the period; without them it runs from the first line to today. Read-only: nothing changes.

get_balances

ChatGPT
Shows who owes the user and whom the user owes, per person and currency, in the user's own contact names. Without a filter it lists every non-zero balance. With filter overdue it lists the open debts past their due date; dueThisWeek, the open debts due from today through the next 7 days; waiting, the user's own entries still waiting for the other person to answer; disputed, the user's own entries the other person disputed. Entries waiting for the user's own answer are not listed here. The states list takes several of those filters together and lists the entries that match any of them; the currencies list keeps only those currencies, and with states narrows their entries.

get_group

ChatGPT
Shows the board of a group the user is an active member of: whose turn it is to receive, each member's share and whether it stands paid, what the recipient has received and what collectors hold. Leave the group out when the user is in one group; with several, the reply lists their names to pick from. Changes nothing.

get_history

ChatGPT
Shows the history with one person over a period, in the user's own contact name: the opening balance per currency before the period, every entry in the period with its state, id and version, the dates the connection was made or ended, and the closing balance per currency. Without from the period starts at the first line with that person; without to it runs to today. The states list keeps the entries matching any of overdue, dueThisWeek, waiting (the user's own entries awaiting the other person) or disputed; the currencies list keeps only those currencies; they narrow the listed entries, not the opening and closing. A group's entry names its group and round. A name close to a contact is asked back.

get_project

ChatGPT
Shows one of the user's projects, found by its name without regard to case: its status, its loans and gifts with their ids, and the totals per currency (gave, received and the net), gifts apart and outside every balance. When the project is not found the reply says so.

get_projects

ChatGPT
Lists the user's projects, open and closed, oldest first, each with its status and its totals per currency (what the user gave, received, and the net, gave minus received). Gifts total apart and sit outside every balance. Projects are private to the user.

get_requests

ChatGPT
Lists the entries and recurring debts waiting for the user's answer, each with its id and version, and the user's own entries and recurring debts the other person disputed, each with the other person's note. A recurring that was ended and waits for an answer says so. A group's entry names its group and round. A group's new terms waiting for the user's approval are listed with the group id and the terms version. People appear under the user's own contact names. Amounts are from the user's view: negative means the user owes.

leave_group

ChatGPT
Leaves a group the user is a member of. It takes two calls. The first, with the group alone, changes nothing and shows what leaving does: future shares stop, what the user still owes this round, and who becomes admin if the user is the last admin. The user confirms with the button on the card, which sends the second call with a cardToken; a typed yes does not leave. The row and rounds already made stay. A group name close to one of the user's groups saves nothing and the reply asks which was meant.

merge_contacts

ChatGPT
Folds one of the user's contacts into another that stands for the same person: give the name of the contact to keep and the name of the contact to fold into it. Entries and any connection move to the kept contact and the folded one is removed for good. Two contacts that are both connected to other people cannot be merged. A name that only nearly matches a contact is asked back, with nothing changed. Replies with the kept contact's balances.

preview_import

ChatGPT
Shows what importing the rows of an uploaded file would do, and saves nothing. Send the rows you read from the file. The reply answers per person: a contact, a name close to a contact (which contact it may be) or a name with no contact, the person's rows and balance after the import. It also lists rows that equal an entry already recorded, which the save skips, and rows that are refused, where one refused row refuses the whole save. Row numbers in the reply text start at 1; row in structured content is the 0-based index into the rows sent.

record_debts

ChatGPT
Records one message's money between the user and other people. Each entry names a person, whether the user gave the money or received it, its kind (opening, loan, repayment, gift, other), the amount, its currency and the day, with an optional due date and note. With project, every entry of the call goes into that project, made when the user has none by that name, and the reply says so; a gift needs one, is seen by the user only and sits outside balances. Each name is matched to the user's contacts in any letter case; a name with no contact becomes a new contact, and the reply names it. When a name is close to a contact without being the same, nothing in the message is saved and the reply asks which contact was meant; calling again with that contact's name, or with newPerson true, saves the message. With bill, the entries are the other people's shares of a bill the user paid, in the bill's currency, and the reply states the total, the user's share and what is owed to the user. An entry with a connected person goes to them as a request to approve; an entry with anyone else is seen by the user only. The same entries sent again within 5 minutes return the first save and add nothing. An entry that looks like one already recorded (same person, direction, kind, amount, currency and day) holds the whole message: nothing is saved or sent, and the reply names the earlier entries; calling again with notDuplicateOf listing those ids saves it.

record_group_payment

ChatGPT
Records a payment in a group the user is a member of, as an ordinary entry between the two members, and replies with the group board. The user's own payment needs only the group: it goes to the round's recipient, for the earliest round still owed, at the user's share. A collector names the member who paid them (payer, paidTo the user), or names the recipient as paidTo to hand over what they hold. An admin names the payer to record a member's payment to the recipient. A member recording someone else's payment is refused. A group or member name close to another saves nothing and the reply asks which was meant. The other person confirms through their requests.

record_holding

ChatGPT
Records money the user holds for someone. With source: the user collected the amount from the source person for the owner ("I got 2M from Zafar for Yusuf"), so the user now owes the owner that amount. With destination: the user paid the destination person on the owner's behalf ("pay Zafar instead"), so what the user owes the owner drops by the amount. Give exactly one of source and destination. An optional fee, feePercent or feeFixed (not both), is owed to the user by the owner and is saved as a commission row. Names resolve as in record_debts: a name close to a contact without being the same saves nothing and the reply asks which contact was meant; calling again with the contact's name, or with newPerson true, saves it. An identical holding already saved holds the call and names the earlier entries; calling again with notDuplicateOf listing those ids saves it.

remove_group_member

ChatGPT
Removes a member from a group the user is an admin of (the user included): their left date ends their future shares and the row stays. If the last admin is removed, the reply says who became admin. A member name close to another asks back and removes nothing. The reply is the group setup without the removed member.

rename_contact

ChatGPT
Changes the name the user has for one of their contacts: give the contact's current name and the new name. Only the user sees the name; nothing the other person sees changes. A name the user already uses for another contact is refused. A name that only nearly matches a contact is asked back, with nothing changed.

rename_project

ChatGPT
Renames one of the user's projects, found by its current name without regard to case. The project keeps its records. The new name is kept exactly as given and may not be the name of another of the user's projects. When the project is not found, nothing changes and the reply says so.

report_wrong_person

ChatGPT
Undoes a connection made with the wrong person: "I linked the wrong Bobur". Give the contact's name. It takes two calls. The first, with the person only, changes nothing and shows the user what each side keeps. The second, with the same person and confirmed true, acts once the user has said "yes", or its equivalent in their own language, in a later message of their own. A card's button sends cardToken instead. It ends the connection and discards every approval and dispute given through it; those entries go back to private. Each person keeps their own contact and entries. A name that only nearly matches is asked back.

restore_deleted

ChatGPT
Brings back entries the user deleted in the last 30 days. Answers "undo" right after delete_entry (with those entryIds), "restore", "bring it back" and "show recently deleted". With no entryIds it lists the recently deleted entries, each with the day it is erased for good. With entryIds it restores them, all or none. A restored entry comes back exactly as it was.

save_import

ChatGPT
Saves the rows of an uploaded file as imported entries with the file's own dates. Send the same rows as the preview, with an answer for each name the preview listed as close to a contact (the contact's id) or not a contact yet (a new person). While a name is unanswered, or any row is refused, nothing is saved: one refused row refuses the whole save. Rows that equal an entry already recorded are skipped. A row for a connected person goes to them as a request to approve; a row for anyone else is seen by the user only.

set_collectors

ChatGPT
For a group the user is an admin of, either names the collectors of one made, open round (round and collectors; a group whose collectors are set by hand), or sets the collector rotation order (rotationOrder) and puts the group on collector rotation. Give one of the two. The reply is the group setup with each member's collector turn.

set_currency

ChatGPT
Saves the user's home currency, the one the approximate totals in balances are shown in, from "my currency is euro" or "show totals in UZS". currency is an ISO 4217 code such as USD, EUR or UZS, in any case. Entries keep their own currencies.

set_group_order

ChatGPT
Sets the order members receive in, for a group the user is an admin of: every member who has not left, once each, by name. Rounds already made keep their recipient. A name that is not a member is refused and nothing changes. The reply is the group setup with each member's place.

set_group_roles

ChatGPT
Makes a member of a group the user is an admin of an admin too (they must have joined through the group link), or steps the user themselves down from admin to member. The last admin cannot step down. The reply is the group setup with each member's role.

set_language

ChatGPT
Saves the language the user wants Mutally in, for its cards and replies, from "use Mutally in Spanish" or "switch to Japanese". language is the code: en, es, pt, ar, ru, id, ja, de, fr, tr, uz. null is Automatic, which follows the language of the host app; that is the default.

set_recurring

ChatGPT
Sets up a recurring debt or an installment plan with one person. mode accrues charges the amount again on the day of every month from the start date, for the months given or until the end date, or without end when neither is given. mode upfront charges the whole amount once on the start date and needs months: they are the due dates of its parts. Give months or endDate, not both. The person resolves as in record_debts: a name close to a contact without being the same saves nothing and the reply asks which contact was meant; calling again with that contact's name, or with newPerson true, saves it. The reply names the next charge. A connected person gets the recurring as a request to approve; for anyone else only the user sees it.

undo_correction

ChatGPT
Takes back the latest correction of an entry the user recorded: "undo that change". Pass the entry id; groupId, from the correct_entry result, is optional and only names the correction meant, which must be the latest one still standing. The values come back, and an entry the other person answered goes back to waiting for their approval.

undo_ending

ChatGPT
Takes back the ending of a recurring debt that the other person disputed: the recurring goes back on its last terms and waits for their approval again. Charges already made stay; the months that fell inside the ending are charged now. Name the person and pass the version the user saw. Only the person who set it up can undo it, and only after the other person disputed the ending.

update_group

ChatGPT
Changes a group the user is an admin of: its name, the share, a collection's target, the day of the month, or a rotating group's first round date. Give only what changes. A new share, target or day applies at once for the user and for members who have not joined; every other joined member is asked to approve it, and the reply names them. A group name close to one of the user's groups saves nothing and the reply asks which was meant. The reply is the group setup.

add_group_member

Claude

approve_entries

Claude

archive_contact

Claude

change_recurring

Claude

close_group

Claude

close_project

Claude

correct_entry

Claude

create_group

Claude

create_project

Claude

delete_all

Claude

delete_entry

Claude

dispute_entry

Claude

end_connection

Claude

end_recurring

Claude

export

Claude

get_balances

Claude

get_group

Claude

get_history

Claude

get_project

Claude

get_projects

Claude

get_requests

Claude

leave_group

Claude

merge_contacts

Claude

preview_import

Claude

record_debts

Claude

record_group_payment

Claude

record_holding

Claude

remove_group_member

Claude

rename_contact

Claude

rename_project

Claude

report_wrong_person

Claude

restore_deleted

Claude

save_import

Claude

set_collectors

Claude

set_currency

Claude

set_group_order

Claude

set_group_roles

Claude

set_language

Claude

set_recurring

Claude

undo_correction

Claude

undo_ending

Claude

update_group

Claude

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps