get_expenses
Retrieve and filter Splitwise expenses by group, friend, or date range to view costs, payments, and splits.
Instructions
List Splitwise expenses. Filter by group, friend, date range, or limit. Returns cost, description, date, who paid, and splits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | No | Filter by group ID | |
| friend_id | No | Filter by friend ID | |
| dated_after | No | ISO date e.g. 2025-01-01 | |
| dated_before | No | ISO date e.g. 2025-01-31 | |
| limit | No | Max results (default 20) | |
| offset | No | Pagination offset |
Implementation Reference
- src/tools/expenses.ts:17-27 (handler)The handler implementation for the get_expenses tool, which calls client.getExpenses and filters out deleted expenses.
handler: async (args: { group_id?: number; friend_id?: number; dated_after?: string; dated_before?: string; limit?: number; offset?: number; }) => { const expenses = await client.getExpenses(args); return expenses.filter((e) => !e.deleted_at); }, - src/tools/expenses.ts:9-16 (schema)The Zod input schema defining the arguments for the get_expenses tool.
inputSchema: z.object({ group_id: z.number().int().optional().describe('Filter by group ID'), friend_id: z.number().int().optional().describe('Filter by friend ID'), dated_after: z.string().optional().describe('ISO date e.g. 2025-01-01'), dated_before: z.string().optional().describe('ISO date e.g. 2025-01-31'), limit: z.number().int().min(1).max(100).optional().describe('Max results (default 20)'), offset: z.number().int().min(0).optional().describe('Pagination offset'), }), - src/tools/expenses.ts:5-28 (registration)The registration of the get_expenses tool within the expenseTools array.
{ name: 'get_expenses', description: 'List Splitwise expenses. Filter by group, friend, date range, or limit. Returns cost, description, date, who paid, and splits.', inputSchema: z.object({ group_id: z.number().int().optional().describe('Filter by group ID'), friend_id: z.number().int().optional().describe('Filter by friend ID'), dated_after: z.string().optional().describe('ISO date e.g. 2025-01-01'), dated_before: z.string().optional().describe('ISO date e.g. 2025-01-31'), limit: z.number().int().min(1).max(100).optional().describe('Max results (default 20)'), offset: z.number().int().min(0).optional().describe('Pagination offset'), }), handler: async (args: { group_id?: number; friend_id?: number; dated_after?: string; dated_before?: string; limit?: number; offset?: number; }) => { const expenses = await client.getExpenses(args); return expenses.filter((e) => !e.deleted_at); }, },