splitwise-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPLITWISE_API_KEY | Yes | Personal Splitwise API key from secure.splitwise.com/apps. Required to run the server. | |
| SPLITWISE_BASE_URL | No | Override the Splitwise API base URL, for example when using a proxy. | https://secure.splitwise.com/api/v3.0 |
| SPLITWISE_READ_ONLY | No | Set to true to register read-only tools only. Mutating tools are never registered. | false |
| SPLITWISE_MCP_HTTP_TOKEN | No | Bearer token required by HTTP mode. Mandatory when binding to a non-loopback address. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_userA | Returns the Splitwise account this server acts as: id, name, email and default currency. "me" in other tools refers to this user. |
| list_groupsA | Lists the user's Splitwise groups with member names and the user's own balance in each. A positive balance means the group owes the user; negative means the user owes the group. |
| get_groupA | Returns one group's members with their balances, plus the debts between members (simplified if the group has debt simplification on). Accepts a group id or name. |
| list_friendsA | Lists the user's Splitwise friends with their overall balance with the user, per currency. A positive amount means the friend owes the user; negative means the user owes the friend. |
| get_balancesA | Summarises who owes whom. Without a group: every friend with a non-zero balance, split into "owes_you" and "you_owe", plus net totals per currency. With a group: the debts between group members. Use this before settle_up to find the amount to settle. |
| list_expensesA | Lists expenses and payments, newest first. Filter by group, friend and date range. Each expense shows what every person paid and owes. Deleted expenses are hidden unless include_deleted is true. |
| get_expenseA | Returns one expense or payment by id, with every person's paid and owed share. |
| search_expensesA | Finds expenses whose description or notes contain every word of the query (case- and accent-insensitive), e.g. "pizza" or "airbnb lisbon". Splitwise has no server-side search, so this scans recent expenses (newest first) up to scan_limit; narrow with group, friend or dates to search further back. |
| create_expenseA | Adds an expense to Splitwise. Choose a group (or omit it for an expense between you and friends), who paid (default: you), and how to split: equally, by exact amounts, or by percentages. People can be given by name or id. Amounts are computed in whole cents, so the shares always add up exactly to the cost. If a name is ambiguous the tool returns the candidates instead of guessing: ask the user which one. |
| update_expenseA | Edits an existing expense. Only the fields you pass change. Changing the cost alone rescales everyone's shares proportionally; pass split to redistribute, or paid_by to change who paid. Read the expense with get_expense first so you can confirm the change with the user. |
| delete_expenseA | Deletes an expense or payment. Balances change immediately. Confirm with the user before calling; Splitwise can restore it from the web app if needed. |
| settle_upA | Records a payment from one person to another (e.g. "Alex paid me back"). This does not move money; it records that money changed hands. Omit amount to settle the full outstanding balance: within the group if one is given, otherwise the overall balance between you and a friend. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Each tool targets a distinct resource and action, and the descriptions actively steer usage (e.g. get_balances before settle_up, search_expenses for text lookup). There is mild overlap between list_expenses/search_expenses and between the balance information returned by list_groups, get_group and get_balances, but the boundaries remain clear enough to choose correctly.
Eleven of twelve tools follow a strict verb_noun snake_case pattern (get_current_user, list_groups, get_group, list_friends, get_balances, list_expenses, get_expense, search_expenses, create_expense, update_expense, delete_expense). The single outlier, settle_up, is still a recognizable verb phrase and fits the domain naturally.
Twelve tools is well within the sweet spot and each one has a clear job: identity, three read views of the social graph, three expense readers, full expense CRUD, and settle_up. Nothing feels redundant or padded.
The core lifecycle is covered end to end: read groups/friends/balances, search and read expenses, create/update/delete expenses, and record settlements. Gaps are secondary — there is no way to create a group, add or remove group members, add friends, or comment on an expense, so some workflows dead-end at the web app.