@daften/fireflyiii-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.env.example +15 -0
  2. package/CHANGELOG.md +28 -0
  3. package/LICENSE +21 -0
  4. package/README.md +605 -0
  5. package/dist/args.d.ts +10 -0
  6. package/dist/args.d.ts.map +1 -0
  7. package/dist/args.js +65 -0
  8. package/dist/args.js.map +1 -0
  9. package/dist/client.d.ts +25 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +146 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/http.d.ts +13 -0
  14. package/dist/http.d.ts.map +1 -0
  15. package/dist/http.js +271 -0
  16. package/dist/http.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +44 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/server.d.ts +5 -0
  22. package/dist/server.d.ts.map +1 -0
  23. package/dist/server.js +13 -0
  24. package/dist/server.js.map +1 -0
  25. package/dist/tools/_annotations.d.ts +17 -0
  26. package/dist/tools/_annotations.d.ts.map +1 -0
  27. package/dist/tools/_annotations.js +9 -0
  28. package/dist/tools/_annotations.js.map +1 -0
  29. package/dist/tools/_helpers.d.ts +17 -0
  30. package/dist/tools/_helpers.d.ts.map +1 -0
  31. package/dist/tools/_helpers.js +24 -0
  32. package/dist/tools/_helpers.js.map +1 -0
  33. package/dist/tools/accounts.d.ts +48 -0
  34. package/dist/tools/accounts.d.ts.map +1 -0
  35. package/dist/tools/accounts.js +151 -0
  36. package/dist/tools/accounts.js.map +1 -0
  37. package/dist/tools/attachments.d.ts +31 -0
  38. package/dist/tools/attachments.d.ts.map +1 -0
  39. package/dist/tools/attachments.js +112 -0
  40. package/dist/tools/attachments.js.map +1 -0
  41. package/dist/tools/bills.d.ts +43 -0
  42. package/dist/tools/bills.d.ts.map +1 -0
  43. package/dist/tools/bills.js +112 -0
  44. package/dist/tools/bills.js.map +1 -0
  45. package/dist/tools/budgets.d.ts +65 -0
  46. package/dist/tools/budgets.d.ts.map +1 -0
  47. package/dist/tools/budgets.js +209 -0
  48. package/dist/tools/budgets.js.map +1 -0
  49. package/dist/tools/categories.d.ts +27 -0
  50. package/dist/tools/categories.d.ts.map +1 -0
  51. package/dist/tools/categories.js +83 -0
  52. package/dist/tools/categories.js.map +1 -0
  53. package/dist/tools/currencies.d.ts +32 -0
  54. package/dist/tools/currencies.d.ts.map +1 -0
  55. package/dist/tools/currencies.js +104 -0
  56. package/dist/tools/currencies.js.map +1 -0
  57. package/dist/tools/exports.d.ts +10 -0
  58. package/dist/tools/exports.d.ts.map +1 -0
  59. package/dist/tools/exports.js +37 -0
  60. package/dist/tools/exports.js.map +1 -0
  61. package/dist/tools/index.d.ts +14 -0
  62. package/dist/tools/index.d.ts.map +1 -0
  63. package/dist/tools/index.js +94 -0
  64. package/dist/tools/index.js.map +1 -0
  65. package/dist/tools/object-groups.d.ts +30 -0
  66. package/dist/tools/object-groups.d.ts.map +1 -0
  67. package/dist/tools/object-groups.js +107 -0
  68. package/dist/tools/object-groups.js.map +1 -0
  69. package/dist/tools/piggy-banks.d.ts +41 -0
  70. package/dist/tools/piggy-banks.d.ts.map +1 -0
  71. package/dist/tools/piggy-banks.js +110 -0
  72. package/dist/tools/piggy-banks.js.map +1 -0
  73. package/dist/tools/recurring.d.ts +70 -0
  74. package/dist/tools/recurring.d.ts.map +1 -0
  75. package/dist/tools/recurring.js +279 -0
  76. package/dist/tools/recurring.js.map +1 -0
  77. package/dist/tools/reports.d.ts +40 -0
  78. package/dist/tools/reports.d.ts.map +1 -0
  79. package/dist/tools/reports.js +413 -0
  80. package/dist/tools/reports.js.map +1 -0
  81. package/dist/tools/rules.d.ts +105 -0
  82. package/dist/tools/rules.d.ts.map +1 -0
  83. package/dist/tools/rules.js +361 -0
  84. package/dist/tools/rules.js.map +1 -0
  85. package/dist/tools/transaction-links.d.ts +30 -0
  86. package/dist/tools/transaction-links.d.ts.map +1 -0
  87. package/dist/tools/transaction-links.js +91 -0
  88. package/dist/tools/transaction-links.js.map +1 -0
  89. package/dist/tools/transactions.d.ts +72 -0
  90. package/dist/tools/transactions.d.ts.map +1 -0
  91. package/dist/tools/transactions.js +262 -0
  92. package/dist/tools/transactions.js.map +1 -0
  93. package/dist/transform.d.ts +48 -0
  94. package/dist/transform.d.ts.map +1 -0
  95. package/dist/transform.js +29 -0
  96. package/dist/transform.js.map +1 -0
  97. package/dist/types.d.ts +2 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/types.js +2 -0
  100. package/dist/types.js.map +1 -0
  101. package/package.json +61 -0
@@ -0,0 +1,413 @@
1
+ import { z } from 'zod';
2
+ import { cleanSummary, unwrapList, unwrapSingle, } from '../transform.js';
3
+ import { DELETE_ANNOTATIONS, READ_ANNOTATIONS, UPDATE_ANNOTATIONS, WRITE_ANNOTATIONS } from './_annotations.js';
4
+ import { dateSchema, defineTool } from './_helpers.js';
5
+ export async function fetchTags(client, params) {
6
+ const response = await client.get('/tags', { page: params.page, limit: params.limit });
7
+ return unwrapList(response);
8
+ }
9
+ export async function fetchTagTransactions(client, tag, params) {
10
+ const query = { page: params.page, limit: params.limit };
11
+ if (params.start)
12
+ query.start = params.start;
13
+ if (params.end)
14
+ query.end = params.end;
15
+ const response = await client.get(`/tags/${encodeURIComponent(tag)}/transactions`, query);
16
+ return unwrapList(response);
17
+ }
18
+ export async function fetchSummary(client, start, end, currencyCode) {
19
+ const query = { start, end };
20
+ if (currencyCode)
21
+ query.currency_code = currencyCode;
22
+ const response = await client.get('/summary/basic', query);
23
+ return cleanSummary(response);
24
+ }
25
+ export async function fetchInsightExpenses(client, start, end) {
26
+ return client.get('/insight/expense/category', { start, end });
27
+ }
28
+ export async function fetchInsightIncome(client, start, end) {
29
+ return client.get('/insight/income/category', { start, end });
30
+ }
31
+ export async function fetchInsightNoX(client, endpoint, start, end) {
32
+ return client.get(endpoint, { start, end });
33
+ }
34
+ export async function createTag(client, params) {
35
+ const response = await client.post('/tags', params);
36
+ return unwrapSingle(response);
37
+ }
38
+ export async function updateTag(client, id, params) {
39
+ const response = await client.put(`/tags/${id}`, params);
40
+ return unwrapSingle(response);
41
+ }
42
+ export async function deleteTag(client, id) {
43
+ await client.delete(`/tags/${id}`);
44
+ return { deleted: true, id };
45
+ }
46
+ export async function fetchAbout(client) {
47
+ return client.get('/about');
48
+ }
49
+ export async function fetchNetWorth(client, start, end, currencyCode) {
50
+ const query = { start, end };
51
+ if (currencyCode)
52
+ query.currency_code = currencyCode;
53
+ return client.get('/summary/net-worth', query);
54
+ }
55
+ export async function fetchChart(client, endpoint, start, end) {
56
+ return client.get(endpoint, { start, end });
57
+ }
58
+ export async function fetchExchangeRate(client, from, to, date) {
59
+ const query = {};
60
+ if (date)
61
+ query.date = date;
62
+ return client.get(`/exchange-rates/by-currencies/${encodeURIComponent(from)}/${encodeURIComponent(to)}`, query);
63
+ }
64
+ export async function fetchInsightGrouped(client, endpoint, start, end, filters) {
65
+ const query = { start, end, ...filters };
66
+ return client.get(endpoint, query);
67
+ }
68
+ export function registerReportTools(server, client) {
69
+ defineTool(server, 'get_tags', {
70
+ title: 'Get Tags',
71
+ description: 'Get all tags defined in Firefly III. Use get_tag_transactions to list transactions for a specific tag.',
72
+ inputSchema: {
73
+ page: z.number().int().positive().optional().default(1).describe('Page number'),
74
+ limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
75
+ },
76
+ annotations: READ_ANNOTATIONS,
77
+ }, ({ page, limit }) => fetchTags(client, { page: page, limit: limit }));
78
+ defineTool(server, 'get_tag_transactions', {
79
+ title: 'Get Tag Transactions',
80
+ description: 'Get all transactions associated with a specific Firefly III tag. Optionally filter by date range (YYYY-MM-DD). Use get_tags to find valid tag names.',
81
+ inputSchema: {
82
+ tag: z.string().describe('Tag name — use get_tags to find valid tag names'),
83
+ start: dateSchema.optional().describe('Start date (YYYY-MM-DD)'),
84
+ end: dateSchema.optional().describe('End date (YYYY-MM-DD)'),
85
+ page: z.number().int().positive().optional().default(1).describe('Page number'),
86
+ limit: z.number().int().positive().max(100).optional().default(50).describe('Results per page (max 100)'),
87
+ },
88
+ annotations: READ_ANNOTATIONS,
89
+ }, ({ tag, start, end, page, limit }) => fetchTagTransactions(client, tag, {
90
+ start: start,
91
+ end: end,
92
+ page: page,
93
+ limit: limit,
94
+ }));
95
+ defineTool(server, 'get_summary', {
96
+ title: 'Get Financial Summary',
97
+ description: 'Get a basic financial summary from Firefly III for a date range, including total assets, liabilities, and net worth. Both start and end dates (YYYY-MM-DD) are required.',
98
+ inputSchema: {
99
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
100
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
101
+ currency_code: z.string().optional().describe('Currency code to filter by (e.g. EUR, USD)'),
102
+ },
103
+ annotations: READ_ANNOTATIONS,
104
+ }, ({ start, end, currency_code }) => fetchSummary(client, start, end, currency_code));
105
+ defineTool(server, 'get_insight_expenses', {
106
+ title: 'Get Expense Insights',
107
+ description: 'Get expense insights grouped by category for a date range. Returns how much was spent per category. Both start and end dates (YYYY-MM-DD) are required. For income insights, use get_insight_income.',
108
+ inputSchema: {
109
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
110
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
111
+ },
112
+ annotations: READ_ANNOTATIONS,
113
+ }, ({ start, end }) => fetchInsightExpenses(client, start, end));
114
+ defineTool(server, 'get_insight_income', {
115
+ title: 'Get Income Insights',
116
+ description: 'Get income insights grouped by category for a date range. Returns how much was earned per category. Both start and end dates (YYYY-MM-DD) are required. For expense insights, use get_insight_expenses.',
117
+ inputSchema: {
118
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
119
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
120
+ },
121
+ annotations: READ_ANNOTATIONS,
122
+ }, ({ start, end }) => fetchInsightIncome(client, start, end));
123
+ defineTool(server, 'create_tag', {
124
+ title: 'Create Tag',
125
+ description: 'Create a new tag in Firefly III.',
126
+ inputSchema: {
127
+ tag: z.string().describe('Tag name'),
128
+ date: dateSchema.optional().describe('Tag date (YYYY-MM-DD)'),
129
+ description: z.string().optional().describe('Tag description'),
130
+ },
131
+ annotations: WRITE_ANNOTATIONS,
132
+ }, (params) => createTag(client, params));
133
+ defineTool(server, 'update_tag', {
134
+ title: 'Update Tag',
135
+ description: 'Update an existing tag in Firefly III. Only fields provided will be changed. Use get_tags to find valid tag IDs.',
136
+ inputSchema: {
137
+ id: z.string().describe('Tag ID — use get_tags to find valid IDs'),
138
+ tag: z.string().optional().describe('Tag name'),
139
+ date: dateSchema.optional().describe('Tag date (YYYY-MM-DD)'),
140
+ description: z.string().optional().describe('Tag description'),
141
+ },
142
+ annotations: UPDATE_ANNOTATIONS,
143
+ }, ({ id, ...params }) => updateTag(client, id, params));
144
+ defineTool(server, 'delete_tag', {
145
+ title: 'Delete Tag',
146
+ description: 'Permanently delete a tag from Firefly III. **This action cannot be undone.** Transactions with this tag will have it removed. Use get_tags to confirm the ID before deleting.',
147
+ inputSchema: { id: z.string().describe('Tag ID — use get_tags to find valid IDs') },
148
+ annotations: DELETE_ANNOTATIONS,
149
+ }, ({ id }) => deleteTag(client, id));
150
+ defineTool(server, 'get_insight_expenses_no_bill', {
151
+ title: 'Get Expense Insights — No Bill',
152
+ description: 'Get expense totals for transactions that have no bill attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
153
+ inputSchema: {
154
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
155
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
156
+ },
157
+ annotations: READ_ANNOTATIONS,
158
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/expense/no-bill', start, end));
159
+ defineTool(server, 'get_insight_expenses_no_budget', {
160
+ title: 'Get Expense Insights — No Budget',
161
+ description: 'Get expense totals for transactions that have no budget attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
162
+ inputSchema: {
163
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
164
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
165
+ },
166
+ annotations: READ_ANNOTATIONS,
167
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/expense/no-budget', start, end));
168
+ defineTool(server, 'get_insight_expenses_no_category', {
169
+ title: 'Get Expense Insights — No Category',
170
+ description: 'Get expense totals for transactions that have no category attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
171
+ inputSchema: {
172
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
173
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
174
+ },
175
+ annotations: READ_ANNOTATIONS,
176
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/expense/no-category', start, end));
177
+ defineTool(server, 'get_insight_expenses_no_tag', {
178
+ title: 'Get Expense Insights — No Tag',
179
+ description: 'Get expense totals for transactions that have no tag attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
180
+ inputSchema: {
181
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
182
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
183
+ },
184
+ annotations: READ_ANNOTATIONS,
185
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/expense/no-tag', start, end));
186
+ defineTool(server, 'get_insight_income_no_category', {
187
+ title: 'Get Income Insights — No Category',
188
+ description: 'Get income totals for transactions that have no category attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
189
+ inputSchema: {
190
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
191
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
192
+ },
193
+ annotations: READ_ANNOTATIONS,
194
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/income/no-category', start, end));
195
+ defineTool(server, 'get_insight_income_no_tag', {
196
+ title: 'Get Income Insights — No Tag',
197
+ description: 'Get income totals for transactions that have no tag attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
198
+ inputSchema: {
199
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
200
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
201
+ },
202
+ annotations: READ_ANNOTATIONS,
203
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/income/no-tag', start, end));
204
+ defineTool(server, 'get_insight_transfer_no_category', {
205
+ title: 'Get Transfer Insights — No Category',
206
+ description: 'Get transfer totals for transactions that have no category attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
207
+ inputSchema: {
208
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
209
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
210
+ },
211
+ annotations: READ_ANNOTATIONS,
212
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/transfer/no-category', start, end));
213
+ defineTool(server, 'get_insight_transfer_no_tag', {
214
+ title: 'Get Transfer Insights — No Tag',
215
+ description: 'Get transfer totals for transactions that have no tag attached, grouped by currency. Both start and end dates (YYYY-MM-DD) are required.',
216
+ inputSchema: {
217
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
218
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
219
+ },
220
+ annotations: READ_ANNOTATIONS,
221
+ }, ({ start, end }) => fetchInsightNoX(client, '/insight/transfer/no-tag', start, end));
222
+ defineTool(server, 'get_about', {
223
+ title: 'Get Server Info',
224
+ description: 'Get Firefly III server version, PHP version, and OS info. Useful for diagnostics.',
225
+ inputSchema: {},
226
+ annotations: READ_ANNOTATIONS,
227
+ }, () => fetchAbout(client));
228
+ defineTool(server, 'get_net_worth_summary', {
229
+ title: 'Get Net Worth Summary',
230
+ description: 'Get net worth over a date range, broken down by currency. Both start and end dates (YYYY-MM-DD) are required.',
231
+ inputSchema: {
232
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
233
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
234
+ currency_code: z.string().optional().describe('Filter by currency code (e.g. EUR, USD)'),
235
+ },
236
+ annotations: READ_ANNOTATIONS,
237
+ }, ({ start, end, currency_code }) => fetchNetWorth(client, start, end, currency_code));
238
+ const CHART_ENDPOINTS = {
239
+ get_account_overview_chart: {
240
+ title: 'Get Account Overview Chart',
241
+ description: 'Get chart data showing account balances over a date range.',
242
+ endpoint: '/chart/account/overview',
243
+ },
244
+ get_balance_chart: {
245
+ title: 'Get Balance Chart',
246
+ description: 'Get chart data showing balance changes over a date range.',
247
+ endpoint: '/chart/balance/balance',
248
+ },
249
+ get_budget_chart: {
250
+ title: 'Get Budget Chart',
251
+ description: 'Get chart data showing budget usage over a date range.',
252
+ endpoint: '/chart/budget/overview',
253
+ },
254
+ get_category_chart: {
255
+ title: 'Get Category Chart',
256
+ description: 'Get chart data showing spending by category over a date range.',
257
+ endpoint: '/chart/category/overview',
258
+ },
259
+ };
260
+ for (const [name, { title, description, endpoint }] of Object.entries(CHART_ENDPOINTS)) {
261
+ defineTool(server, name, {
262
+ title,
263
+ description: `${description} Both start and end dates (YYYY-MM-DD) are required.`,
264
+ inputSchema: {
265
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
266
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
267
+ },
268
+ annotations: READ_ANNOTATIONS,
269
+ }, ({ start, end }) => fetchChart(client, endpoint, start, end));
270
+ }
271
+ defineTool(server, 'get_exchange_rate', {
272
+ title: 'Get Exchange Rate',
273
+ description: 'Get the exchange rate between two currencies. Optionally specify a date (YYYY-MM-DD) for historical rates.',
274
+ inputSchema: {
275
+ from: z.string().describe('Source currency code (e.g. EUR)'),
276
+ to: z.string().describe('Target currency code (e.g. USD)'),
277
+ date: dateSchema.optional().describe('Date for historical rate (YYYY-MM-DD). Defaults to today.'),
278
+ },
279
+ annotations: READ_ANNOTATIONS,
280
+ }, ({ from, to, date }) => fetchExchangeRate(client, from, to, date));
281
+ const INSIGHT_GROUPED_TOOLS = [
282
+ {
283
+ name: 'get_insight_expenses_by_bill',
284
+ title: 'Get Expense Insights by Bill',
285
+ description: 'Get expense totals grouped by bill for a date range.',
286
+ endpoint: '/insight/expense/bill',
287
+ filterKey: 'bills[]',
288
+ filterDesc: 'Filter to specific bill IDs',
289
+ },
290
+ {
291
+ name: 'get_insight_expenses_by_budget',
292
+ title: 'Get Expense Insights by Budget',
293
+ description: 'Get expense totals grouped by budget for a date range.',
294
+ endpoint: '/insight/expense/budget',
295
+ filterKey: 'budgets[]',
296
+ filterDesc: 'Filter to specific budget IDs',
297
+ },
298
+ {
299
+ name: 'get_insight_expenses_by_tag',
300
+ title: 'Get Expense Insights by Tag',
301
+ description: 'Get expense totals grouped by tag for a date range.',
302
+ endpoint: '/insight/expense/tag',
303
+ filterKey: 'tags[]',
304
+ filterDesc: 'Filter to specific tag IDs',
305
+ },
306
+ {
307
+ name: 'get_insight_expenses_by_asset',
308
+ title: 'Get Expense Insights by Asset Account',
309
+ description: 'Get expense totals grouped by asset account for a date range.',
310
+ endpoint: '/insight/expense/asset',
311
+ filterKey: 'assets[]',
312
+ filterDesc: 'Filter to specific asset account IDs',
313
+ },
314
+ {
315
+ name: 'get_insight_expenses_by_expense_account',
316
+ title: 'Get Expense Insights by Expense Account',
317
+ description: 'Get expense totals grouped by expense account for a date range.',
318
+ endpoint: '/insight/expense/expense',
319
+ filterKey: 'accounts[]',
320
+ filterDesc: 'Filter to specific expense account IDs',
321
+ },
322
+ {
323
+ name: 'get_insight_expenses_total',
324
+ title: 'Get Total Expenses',
325
+ description: 'Get total expense amount for a date range, grouped by currency.',
326
+ endpoint: '/insight/expense/total',
327
+ },
328
+ {
329
+ name: 'get_insight_income_by_revenue',
330
+ title: 'Get Income Insights by Revenue Account',
331
+ description: 'Get income totals grouped by revenue account for a date range.',
332
+ endpoint: '/insight/income/revenue',
333
+ filterKey: 'revenue[]',
334
+ filterDesc: 'Filter to specific revenue account IDs',
335
+ },
336
+ {
337
+ name: 'get_insight_income_by_tag',
338
+ title: 'Get Income Insights by Tag',
339
+ description: 'Get income totals grouped by tag for a date range.',
340
+ endpoint: '/insight/income/tag',
341
+ filterKey: 'tags[]',
342
+ filterDesc: 'Filter to specific tag IDs',
343
+ },
344
+ {
345
+ name: 'get_insight_income_by_asset',
346
+ title: 'Get Income Insights by Asset Account',
347
+ description: 'Get income totals grouped by asset account for a date range.',
348
+ endpoint: '/insight/income/asset',
349
+ filterKey: 'assets[]',
350
+ filterDesc: 'Filter to specific asset account IDs',
351
+ },
352
+ {
353
+ name: 'get_insight_income_total',
354
+ title: 'Get Total Income',
355
+ description: 'Get total income amount for a date range, grouped by currency.',
356
+ endpoint: '/insight/income/total',
357
+ },
358
+ {
359
+ name: 'get_insight_transfers_by_category',
360
+ title: 'Get Transfer Insights by Category',
361
+ description: 'Get transfer totals grouped by category for a date range.',
362
+ endpoint: '/insight/transfer/category',
363
+ filterKey: 'categories[]',
364
+ filterDesc: 'Filter to specific category IDs',
365
+ },
366
+ {
367
+ name: 'get_insight_transfers_by_tag',
368
+ title: 'Get Transfer Insights by Tag',
369
+ description: 'Get transfer totals grouped by tag for a date range.',
370
+ endpoint: '/insight/transfer/tag',
371
+ filterKey: 'tags[]',
372
+ filterDesc: 'Filter to specific tag IDs',
373
+ },
374
+ {
375
+ name: 'get_insight_transfers_by_asset',
376
+ title: 'Get Transfer Insights by Asset Account',
377
+ description: 'Get transfer totals grouped by asset account for a date range.',
378
+ endpoint: '/insight/transfer/asset',
379
+ filterKey: 'assets[]',
380
+ filterDesc: 'Filter to specific asset account IDs',
381
+ },
382
+ {
383
+ name: 'get_insight_transfers_total',
384
+ title: 'Get Total Transfers',
385
+ description: 'Get total transfer amount for a date range, grouped by currency.',
386
+ endpoint: '/insight/transfer/total',
387
+ },
388
+ ];
389
+ for (const { name, title, description, endpoint, filterKey, filterDesc } of INSIGHT_GROUPED_TOOLS) {
390
+ const inputSchema = {
391
+ start: dateSchema.describe('Start date (YYYY-MM-DD)'),
392
+ end: dateSchema.describe('End date (YYYY-MM-DD)'),
393
+ };
394
+ if (filterKey) {
395
+ inputSchema[filterKey] = z.array(z.string()).optional().describe(filterDesc);
396
+ }
397
+ defineTool(server, name, {
398
+ title,
399
+ description: `${description} Both start and end dates (YYYY-MM-DD) are required.`,
400
+ inputSchema,
401
+ annotations: READ_ANNOTATIONS,
402
+ }, (params) => {
403
+ const { start, end, ...rest } = params;
404
+ const filters = {};
405
+ for (const [k, v] of Object.entries(rest)) {
406
+ if (Array.isArray(v))
407
+ filters[k] = v;
408
+ }
409
+ return fetchInsightGrouped(client, endpoint, start, end, Object.keys(filters).length ? filters : undefined);
410
+ });
411
+ }
412
+ }
413
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/tools/reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { FireflyClient } from '../client.js';
3
+ import { type UnwrappedList, type UnwrappedSingle } from '../transform.js';
4
+ export declare function fetchRuleGroups(client: FireflyClient, params: {
5
+ page?: number;
6
+ limit?: number;
7
+ }): Promise<UnwrappedList>;
8
+ export declare function fetchRuleGroup(client: FireflyClient, id: string): Promise<UnwrappedSingle>;
9
+ export declare function createRuleGroup(client: FireflyClient, params: {
10
+ title: string;
11
+ description?: string;
12
+ active?: boolean;
13
+ }): Promise<UnwrappedSingle>;
14
+ export declare function updateRuleGroup(client: FireflyClient, id: string, params: {
15
+ title?: string;
16
+ description?: string;
17
+ active?: boolean;
18
+ }): Promise<UnwrappedSingle>;
19
+ export declare function deleteRuleGroup(client: FireflyClient, id: string): Promise<{
20
+ deleted: true;
21
+ id: string;
22
+ }>;
23
+ type RuleTriggerInput = {
24
+ type: string;
25
+ value: string;
26
+ prohibited?: boolean;
27
+ active?: boolean;
28
+ stop_processing?: boolean;
29
+ order?: number;
30
+ };
31
+ type RuleActionInput = {
32
+ type: string;
33
+ value: string | null;
34
+ active?: boolean;
35
+ stop_processing?: boolean;
36
+ order?: number;
37
+ };
38
+ export declare function fetchRules(client: FireflyClient, params: {
39
+ page?: number;
40
+ limit?: number;
41
+ }): Promise<UnwrappedList>;
42
+ export declare function fetchRule(client: FireflyClient, id: string): Promise<UnwrappedSingle>;
43
+ export declare function createRule(client: FireflyClient, params: {
44
+ title: string;
45
+ rule_group_id: string;
46
+ trigger: string;
47
+ triggers: RuleTriggerInput[];
48
+ actions: RuleActionInput[];
49
+ description?: string;
50
+ active?: boolean;
51
+ strict?: boolean;
52
+ stop_processing?: boolean;
53
+ }): Promise<UnwrappedSingle>;
54
+ export declare function updateRule(client: FireflyClient, id: string, params: {
55
+ title?: string;
56
+ rule_group_id?: string;
57
+ trigger?: string;
58
+ triggers?: RuleTriggerInput[];
59
+ actions?: RuleActionInput[];
60
+ description?: string;
61
+ active?: boolean;
62
+ strict?: boolean;
63
+ stop_processing?: boolean;
64
+ }): Promise<UnwrappedSingle>;
65
+ export declare function deleteRule(client: FireflyClient, id: string): Promise<{
66
+ deleted: true;
67
+ id: string;
68
+ }>;
69
+ export declare function triggerRuleGroup(client: FireflyClient, id: string, params: {
70
+ start?: string;
71
+ end?: string;
72
+ accounts?: number[];
73
+ }): Promise<{
74
+ triggered: true;
75
+ id: string;
76
+ }>;
77
+ export declare function triggerRule(client: FireflyClient, id: string, params: {
78
+ start?: string;
79
+ end?: string;
80
+ accounts?: number[];
81
+ }): Promise<{
82
+ triggered: true;
83
+ id: string;
84
+ }>;
85
+ export declare function testRuleGroup(client: FireflyClient, id: string, params: {
86
+ start?: string;
87
+ end?: string;
88
+ accounts?: number[];
89
+ search_limit?: number;
90
+ triggered_limit?: number;
91
+ }): Promise<UnwrappedList>;
92
+ export declare function fetchRuleGroupRules(client: FireflyClient, id: string, params: {
93
+ page?: number;
94
+ limit?: number;
95
+ }): Promise<UnwrappedList>;
96
+ export declare function testRule(client: FireflyClient, id: string, params: {
97
+ start?: string;
98
+ end?: string;
99
+ accounts?: number[];
100
+ search_limit?: number;
101
+ triggered_limit?: number;
102
+ }): Promise<UnwrappedList>;
103
+ export declare function registerRuleTools(server: McpServer, client: FireflyClient): void;
104
+ export {};
105
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/tools/rules.ts"],"names":[],"mappings":"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"}