@mind-your-now/myn 0.6.4 → 0.7.1

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.
@@ -1,15 +1,40 @@
1
1
  /**
2
2
  * myn_ynab tool - YNAB budget management
3
+ *
4
+ * Full coverage of MYN backend YNAB endpoints:
5
+ * - Budget: overview, categories, accounts, months, payees, goals
6
+ * - Transactions: create, create_bulk, list, update, delete
7
+ * - Scheduled: list, create, update, delete, subscriptions view
8
+ * - Analytics: spending, payees, trends, net worth, debt
9
+ * - Connection: status check
3
10
  */
4
11
  import type { MynApiClient } from '../client.js';
5
12
  export declare const YnabInputSchema: import("@sinclair/typebox").TObject<{
6
- action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"budget_overview">, import("@sinclair/typebox").TLiteral<"category_balance">, import("@sinclair/typebox").TLiteral<"account_balances">, import("@sinclair/typebox").TLiteral<"set_category_goal">, import("@sinclair/typebox").TLiteral<"spending_insights">, import("@sinclair/typebox").TLiteral<"upcoming_bills">]>;
13
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"budget_overview">, import("@sinclair/typebox").TLiteral<"category_balance">, import("@sinclair/typebox").TLiteral<"list_categories">, import("@sinclair/typebox").TLiteral<"account_balances">, import("@sinclair/typebox").TLiteral<"set_category_goal">, import("@sinclair/typebox").TLiteral<"goal_progress">, import("@sinclair/typebox").TLiteral<"budget_months">, import("@sinclair/typebox").TLiteral<"search_payees">, import("@sinclair/typebox").TLiteral<"create_transaction">, import("@sinclair/typebox").TLiteral<"create_transactions_bulk">, import("@sinclair/typebox").TLiteral<"list_transactions">, import("@sinclair/typebox").TLiteral<"update_transaction">, import("@sinclair/typebox").TLiteral<"delete_transaction">, import("@sinclair/typebox").TLiteral<"scheduled_transactions">, import("@sinclair/typebox").TLiteral<"create_scheduled_transaction">, import("@sinclair/typebox").TLiteral<"update_scheduled_transaction">, import("@sinclair/typebox").TLiteral<"delete_scheduled_transaction">, import("@sinclair/typebox").TLiteral<"subscriptions">, import("@sinclair/typebox").TLiteral<"upcoming_bills">, import("@sinclair/typebox").TLiteral<"spending_insights">, import("@sinclair/typebox").TLiteral<"payee_analysis">, import("@sinclair/typebox").TLiteral<"spending_trends">, import("@sinclair/typebox").TLiteral<"net_worth">, import("@sinclair/typebox").TLiteral<"debt_tracking">, import("@sinclair/typebox").TLiteral<"connection_status">]>;
7
14
  categoryName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
+ accountId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ payeeName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
17
+ amount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
18
+ date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ memo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ months: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
21
+ days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
8
22
  goalType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
23
  goalTargetDollars: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
24
  goalTargetMonth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
- months: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
- days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
25
+ transactionId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
+ cleared: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
+ flagColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
28
+ frequency: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
29
+ dateFirst: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
30
+ transactions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
31
+ accountId: import("@sinclair/typebox").TString;
32
+ payeeName: import("@sinclair/typebox").TString;
33
+ amount: import("@sinclair/typebox").TNumber;
34
+ categoryName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
35
+ date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
36
+ memo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
37
+ }>>>;
13
38
  }>;
14
39
  export type YnabInput = typeof YnabInputSchema.static;
15
40
  export declare function executeYnab(client: MynApiClient, input: YnabInput): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"ynab.d.ts","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,eAAe;;;;;;;;EAmB1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;AAyCtD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwBlG;AA2ED,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUnF"}
1
+ {"version":3,"file":"ynab.d.ts","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;EAoE1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;AAuDtD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAgFlG;AA+OD,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAkBnF"}
@@ -1,27 +1,76 @@
1
1
  /**
2
2
  * myn_ynab tool - YNAB budget management
3
+ *
4
+ * Full coverage of MYN backend YNAB endpoints:
5
+ * - Budget: overview, categories, accounts, months, payees, goals
6
+ * - Transactions: create, create_bulk, list, update, delete
7
+ * - Scheduled: list, create, update, delete, subscriptions view
8
+ * - Analytics: spending, payees, trends, net worth, debt
9
+ * - Connection: status check
3
10
  */
4
11
  import { Type } from '@sinclair/typebox';
5
12
  import { jsonResult, errorResult } from '../client.js';
6
13
  export const YnabInputSchema = Type.Object({
7
14
  action: Type.Union([
15
+ // Budget & accounts
8
16
  Type.Literal('budget_overview'),
9
17
  Type.Literal('category_balance'),
18
+ Type.Literal('list_categories'),
10
19
  Type.Literal('account_balances'),
11
20
  Type.Literal('set_category_goal'),
21
+ Type.Literal('goal_progress'),
22
+ Type.Literal('budget_months'),
23
+ Type.Literal('search_payees'),
24
+ // Transactions
25
+ Type.Literal('create_transaction'),
26
+ Type.Literal('create_transactions_bulk'),
27
+ Type.Literal('list_transactions'),
28
+ Type.Literal('update_transaction'),
29
+ Type.Literal('delete_transaction'),
30
+ // Scheduled transactions & subscriptions
31
+ Type.Literal('scheduled_transactions'),
32
+ Type.Literal('create_scheduled_transaction'),
33
+ Type.Literal('update_scheduled_transaction'),
34
+ Type.Literal('delete_scheduled_transaction'),
35
+ Type.Literal('subscriptions'),
36
+ Type.Literal('upcoming_bills'),
37
+ // Analytics
12
38
  Type.Literal('spending_insights'),
13
- Type.Literal('upcoming_bills')
39
+ Type.Literal('payee_analysis'),
40
+ Type.Literal('spending_trends'),
41
+ Type.Literal('net_worth'),
42
+ Type.Literal('debt_tracking'),
43
+ // Connection
44
+ Type.Literal('connection_status')
14
45
  ]),
15
- // category_balance / set_category_goal parameters
16
- categoryName: Type.Optional(Type.String({ description: 'Category name to search for (fuzzy match)' })),
17
- // set_category_goal parameters
18
- goalType: Type.Optional(Type.String({ description: 'Goal type: TB (Target Balance), TBD (Target Balance by Date), MF (Monthly Funding), NEED (Plan Your Spending)' })),
19
- goalTargetDollars: Type.Optional(Type.Number({ description: 'Goal target amount in dollars (e.g., 500.00)' })),
20
- goalTargetMonth: Type.Optional(Type.String({ description: 'Target month in YYYY-MM format (e.g., 2026-06). Required for TBD goals.' })),
21
- // spending_insights parameters
22
- months: Type.Optional(Type.Number({ description: 'Number of months to analyze (default: 3)' })),
23
- // upcoming_bills parameters
24
- days: Type.Optional(Type.Number({ description: 'Number of days to look ahead for bills (default: 7)' }))
46
+ // Shared parameters
47
+ categoryName: Type.Optional(Type.String({ description: 'Category name (fuzzy match). Used by category_balance, set_category_goal, create_transaction, create_transactions_bulk.' })),
48
+ accountId: Type.Optional(Type.String({ description: 'YNAB account ID. Use account_balances to find IDs.' })),
49
+ payeeName: Type.Optional(Type.String({ description: 'Payee name. Used by create_transaction, create_transactions_bulk, search_payees, create_scheduled_transaction.' })),
50
+ amount: Type.Optional(Type.Number({ description: 'Amount in dollars. Negative for expenses (e.g., -45.50), positive for income.' })),
51
+ date: Type.Optional(Type.String({ description: 'Date in YYYY-MM-DD format. Defaults to today for transactions. Used as sinceDate filter for list_transactions.' })),
52
+ memo: Type.Optional(Type.String({ description: 'Optional memo/note.' })),
53
+ months: Type.Optional(Type.Number({ description: 'Number of months for analytics (default: 3 for spending, 6 for trends).' })),
54
+ days: Type.Optional(Type.Number({ description: 'Number of days to look ahead for upcoming_bills (default: 7).' })),
55
+ // Goal parameters
56
+ goalType: Type.Optional(Type.String({ description: 'Goal type: TB (Target Balance), TBD (Target Balance by Date), MF (Monthly Funding), NEED (Plan Your Spending).' })),
57
+ goalTargetDollars: Type.Optional(Type.Number({ description: 'Goal target in dollars (e.g., 500.00).' })),
58
+ goalTargetMonth: Type.Optional(Type.String({ description: 'Target month YYYY-MM (e.g., 2026-06). Required for TBD goals.' })),
59
+ // Scheduled transaction parameters
60
+ transactionId: Type.Optional(Type.String({ description: 'Transaction ID. Required for update/delete_transaction and update/delete_scheduled_transaction.' })),
61
+ cleared: Type.Optional(Type.String({ description: 'Cleared status: "cleared", "uncleared", or "reconciled". Used by update_transaction.' })),
62
+ flagColor: Type.Optional(Type.String({ description: 'Flag color: red, orange, yellow, green, blue, purple. Used by update_transaction.' })),
63
+ frequency: Type.Optional(Type.String({ description: 'Recurrence frequency: never, daily, weekly, everyOtherWeek, twiceAMonth, every4Weeks, monthly, everyOtherMonth, every3Months, every4Months, twiceAYear, yearly, everyOtherYear.' })),
64
+ dateFirst: Type.Optional(Type.String({ description: 'First occurrence date YYYY-MM-DD for create_scheduled_transaction.' })),
65
+ // Bulk transaction parameters
66
+ transactions: Type.Optional(Type.Array(Type.Object({
67
+ accountId: Type.String({ description: 'YNAB account ID.' }),
68
+ payeeName: Type.String({ description: 'Payee name.' }),
69
+ amount: Type.Number({ description: 'Amount in dollars. Negative for expenses.' }),
70
+ categoryName: Type.Optional(Type.String({ description: 'Category name (fuzzy match).' })),
71
+ date: Type.Optional(Type.String({ description: 'Date YYYY-MM-DD. Defaults to today.' })),
72
+ memo: Type.Optional(Type.String({ description: 'Optional memo.' }))
73
+ }), { description: 'Array of transactions for create_transactions_bulk.' }))
25
74
  });
26
75
  /**
27
76
  * Convert YNAB milliunits to formatted dollar string.
@@ -38,7 +87,8 @@ const MILLIUNIT_FIELDS = new Set([
38
87
  'readyToAssign', 'totalIncome', 'totalBudgeted', 'totalActivity',
39
88
  'balance', 'budgeted', 'activity', 'clearedBalance', 'unclearedBalance',
40
89
  'goalTarget', 'goalUnderFunded', 'goalOverFunded', 'goalOverallFunded', 'goalOverallLeft',
41
- 'amount', 'total', 'totalSpending'
90
+ 'amount', 'total', 'totalSpending', 'monthlyTotal', 'annualTotal',
91
+ 'amountMilliunits', 'totalSpent', 'monthlyAverage'
42
92
  ]);
43
93
  /**
44
94
  * Recursively convert milliunit fields to dollar strings in API responses.
@@ -62,21 +112,81 @@ function convertMilliunits(obj) {
62
112
  }
63
113
  return obj;
64
114
  }
115
+ /** Resolve a category name to its ID via fuzzy search. Returns null if not found. */
116
+ async function resolveCategoryId(client, name) {
117
+ const result = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(name)}`);
118
+ return result?.id || null;
119
+ }
120
+ /** Today's date as YYYY-MM-DD */
121
+ function today() {
122
+ return new Date().toISOString().split('T')[0];
123
+ }
65
124
  export async function executeYnab(client, input) {
66
125
  try {
67
126
  switch (input.action) {
127
+ // Budget & accounts
68
128
  case 'budget_overview':
69
- return await getBudgetOverview(client);
129
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/overview')));
70
130
  case 'category_balance':
71
131
  return await getCategoryBalance(client, input);
132
+ case 'list_categories':
133
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/categories')));
72
134
  case 'account_balances':
73
- return await getAccountBalances(client);
135
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/accounts')));
74
136
  case 'set_category_goal':
75
137
  return await setCategoryGoal(client, input);
76
- case 'spending_insights':
77
- return await getSpendingInsights(client, input);
78
- case 'upcoming_bills':
79
- return await getUpcomingBills(client, input);
138
+ case 'goal_progress':
139
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/categories')));
140
+ case 'budget_months':
141
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/months')));
142
+ case 'search_payees':
143
+ return await searchPayees(client, input);
144
+ // Transactions
145
+ case 'create_transaction':
146
+ return await createTransaction(client, input);
147
+ case 'create_transactions_bulk':
148
+ return await createTransactionsBulk(client, input);
149
+ case 'list_transactions':
150
+ return await listTransactions(client, input);
151
+ case 'update_transaction':
152
+ return await updateTransaction(client, input);
153
+ case 'delete_transaction':
154
+ return await deleteTransactionAction(client, input);
155
+ // Scheduled transactions & subscriptions
156
+ case 'scheduled_transactions':
157
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/scheduled-transactions')));
158
+ case 'create_scheduled_transaction':
159
+ return await createScheduledTransaction(client, input);
160
+ case 'update_scheduled_transaction':
161
+ return await updateScheduledTransaction(client, input);
162
+ case 'delete_scheduled_transaction':
163
+ return await deleteScheduledTransaction(client, input);
164
+ case 'subscriptions':
165
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/subscriptions')));
166
+ case 'upcoming_bills': {
167
+ const days = input.days || 7;
168
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/scheduled?days=${days}`)));
169
+ }
170
+ // Analytics
171
+ case 'spending_insights': {
172
+ const months = input.months || 3;
173
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/spending?months=${months}`)));
174
+ }
175
+ case 'payee_analysis': {
176
+ const months = input.months || 3;
177
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/payees?months=${months}`)));
178
+ }
179
+ case 'spending_trends': {
180
+ const months = input.months || 6;
181
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/trends?months=${months}`)));
182
+ }
183
+ case 'net_worth':
184
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/analytics/net-worth')));
185
+ case 'debt_tracking':
186
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/analytics/debt')));
187
+ // Connection
188
+ case 'connection_status':
189
+ return jsonResult(await client.get('/api/v1/ynab/status'));
80
190
  default:
81
191
  return errorResult(`Unknown action: ${input.action}`);
82
192
  }
@@ -88,10 +198,7 @@ export async function executeYnab(client, input) {
88
198
  return errorResult('Unknown error occurred');
89
199
  }
90
200
  }
91
- async function getBudgetOverview(client) {
92
- const data = await client.get('/api/v1/ynab/budget/overview');
93
- return jsonResult(convertMilliunits(data));
94
- }
201
+ // ==================== Action implementations ====================
95
202
  async function getCategoryBalance(client, input) {
96
203
  if (!input.categoryName) {
97
204
  return errorResult('categoryName is required for category_balance action');
@@ -99,9 +206,14 @@ async function getCategoryBalance(client, input) {
99
206
  const data = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(input.categoryName)}`);
100
207
  return jsonResult(convertMilliunits(data));
101
208
  }
102
- async function getAccountBalances(client) {
103
- const data = await client.get('/api/v1/ynab/budget/accounts');
104
- return jsonResult(convertMilliunits(data));
209
+ async function searchPayees(client, input) {
210
+ if (input.payeeName) {
211
+ const data = await client.get(`/api/v1/ynab/budget/payees/search?query=${encodeURIComponent(input.payeeName)}`);
212
+ return jsonResult(data);
213
+ }
214
+ // No search query — return all payees
215
+ const data = await client.get('/api/v1/ynab/budget/payees');
216
+ return jsonResult(data);
105
217
  }
106
218
  async function setCategoryGoal(client, input) {
107
219
  if (!input.categoryName) {
@@ -110,41 +222,212 @@ async function setCategoryGoal(client, input) {
110
222
  if (!input.goalType) {
111
223
  return errorResult('goalType is required for set_category_goal action (TB, TBD, MF, NEED)');
112
224
  }
113
- // First find the category by name to get its ID
114
- const searchResult = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(input.categoryName)}`);
115
- if (!searchResult || !searchResult.id) {
225
+ const categoryId = await resolveCategoryId(client, input.categoryName);
226
+ if (!categoryId) {
116
227
  return errorResult(`Category '${input.categoryName}' not found`);
117
228
  }
118
- // Format target month as YYYY-MM-01 if provided
119
229
  let goalTargetMonth = input.goalTargetMonth;
120
230
  if (goalTargetMonth && !goalTargetMonth.endsWith('-01')) {
121
231
  goalTargetMonth = goalTargetMonth + '-01';
122
232
  }
123
- const body = {
124
- goalType: input.goalType
125
- };
233
+ const body = { goalType: input.goalType };
126
234
  if (input.goalTargetDollars != null)
127
235
  body.goalTargetDollars = input.goalTargetDollars;
128
236
  if (goalTargetMonth)
129
237
  body.goalTargetMonth = goalTargetMonth;
130
- const data = await client.patch(`/api/v1/ynab/budget/categories/${searchResult.id}/goal`, body);
238
+ const data = await client.patch(`/api/v1/ynab/budget/categories/${categoryId}/goal`, body);
239
+ return jsonResult(convertMilliunits(data));
240
+ }
241
+ async function createTransaction(client, input) {
242
+ if (!input.accountId) {
243
+ return errorResult('accountId is required for create_transaction. Use account_balances to find IDs.');
244
+ }
245
+ if (!input.payeeName) {
246
+ return errorResult('payeeName is required for create_transaction.');
247
+ }
248
+ if (input.amount == null) {
249
+ return errorResult('amount is required for create_transaction (in dollars, negative for expenses).');
250
+ }
251
+ const amountMilliunits = Math.round(input.amount * 1000);
252
+ let categoryId;
253
+ if (input.categoryName) {
254
+ const resolved = await resolveCategoryId(client, input.categoryName);
255
+ if (!resolved) {
256
+ return errorResult(`Category '${input.categoryName}' not found. Use list_categories to browse.`);
257
+ }
258
+ categoryId = resolved;
259
+ }
260
+ // YNAB API defaults to "uncleared" when cleared status not specified
261
+ const body = {
262
+ accountId: input.accountId,
263
+ payeeName: input.payeeName,
264
+ amountMilliunits,
265
+ date: input.date || today()
266
+ };
267
+ if (input.memo)
268
+ body.memo = input.memo;
269
+ if (categoryId)
270
+ body.categoryId = categoryId;
271
+ const data = await client.post('/api/v1/ynab/transactions', body);
272
+ return jsonResult(convertMilliunits(data));
273
+ }
274
+ async function createTransactionsBulk(client, input) {
275
+ if (!input.transactions || input.transactions.length === 0) {
276
+ return errorResult('transactions array is required for create_transactions_bulk. Each needs accountId, payeeName, amount.');
277
+ }
278
+ // Resolve category names and convert amounts for all transactions
279
+ const resolved = [];
280
+ for (const txn of input.transactions) {
281
+ const amountMilliunits = Math.round(txn.amount * 1000);
282
+ let categoryId;
283
+ if (txn.categoryName) {
284
+ const id = await resolveCategoryId(client, txn.categoryName);
285
+ if (!id) {
286
+ return errorResult(`Category '${txn.categoryName}' not found for transaction "${txn.payeeName}". Use list_categories to browse.`);
287
+ }
288
+ categoryId = id;
289
+ }
290
+ const entry = {
291
+ accountId: txn.accountId,
292
+ payeeName: txn.payeeName,
293
+ amount: amountMilliunits,
294
+ date: txn.date || today()
295
+ };
296
+ if (txn.memo)
297
+ entry.memo = txn.memo;
298
+ if (categoryId)
299
+ entry.categoryId = categoryId;
300
+ resolved.push(entry);
301
+ }
302
+ const data = await client.post('/api/v1/ynab/transactions/bulk', { transactions: resolved });
303
+ return jsonResult(data);
304
+ }
305
+ async function listTransactions(client, input) {
306
+ const params = input.date ? `?sinceDate=${encodeURIComponent(input.date)}` : '';
307
+ const data = await client.get(`/api/v1/ynab/transactions${params}`);
131
308
  return jsonResult(convertMilliunits(data));
132
309
  }
133
- async function getSpendingInsights(client, input) {
134
- const months = input.months || 3;
135
- const data = await client.get(`/api/v1/ynab/analytics/spending?months=${months}`);
310
+ async function updateTransaction(client, input) {
311
+ if (!input.transactionId) {
312
+ return errorResult('transactionId is required for update_transaction.');
313
+ }
314
+ const body = {};
315
+ if (input.accountId)
316
+ body.accountId = input.accountId;
317
+ if (input.payeeName)
318
+ body.payeeName = input.payeeName;
319
+ if (input.amount != null)
320
+ body.amountMilliunits = Math.round(input.amount * 1000);
321
+ if (input.date)
322
+ body.date = input.date;
323
+ if (input.memo)
324
+ body.memo = input.memo;
325
+ if (input.cleared)
326
+ body.cleared = input.cleared;
327
+ if (input.flagColor)
328
+ body.flagColor = input.flagColor;
329
+ if (input.categoryName) {
330
+ const categoryId = await resolveCategoryId(client, input.categoryName);
331
+ if (!categoryId) {
332
+ return errorResult(`Category '${input.categoryName}' not found.`);
333
+ }
334
+ body.categoryId = categoryId;
335
+ }
336
+ const data = await client.put(`/api/v1/ynab/transactions/${input.transactionId}`, body);
136
337
  return jsonResult(convertMilliunits(data));
137
338
  }
138
- async function getUpcomingBills(client, input) {
139
- const days = input.days || 7;
140
- const data = await client.get(`/api/v1/ynab/scheduled?days=${days}`);
339
+ async function deleteTransactionAction(client, input) {
340
+ if (!input.transactionId) {
341
+ return errorResult('transactionId is required for delete_transaction.');
342
+ }
343
+ const data = await client.delete(`/api/v1/ynab/transactions/${input.transactionId}`);
141
344
  return jsonResult(convertMilliunits(data));
142
345
  }
346
+ async function createScheduledTransaction(client, input) {
347
+ if (!input.accountId) {
348
+ return errorResult('accountId is required for create_scheduled_transaction.');
349
+ }
350
+ if (!input.payeeName) {
351
+ return errorResult('payeeName is required for create_scheduled_transaction.');
352
+ }
353
+ if (input.amount == null) {
354
+ return errorResult('amount is required for create_scheduled_transaction (in dollars).');
355
+ }
356
+ if (!input.frequency) {
357
+ return errorResult('frequency is required (e.g., monthly, weekly, yearly).');
358
+ }
359
+ if (!input.dateFirst) {
360
+ return errorResult('dateFirst is required (YYYY-MM-DD, first occurrence date).');
361
+ }
362
+ const amountMilliunits = Math.round(input.amount * 1000);
363
+ let categoryId;
364
+ if (input.categoryName) {
365
+ const resolved = await resolveCategoryId(client, input.categoryName);
366
+ if (!resolved) {
367
+ return errorResult(`Category '${input.categoryName}' not found.`);
368
+ }
369
+ categoryId = resolved;
370
+ }
371
+ const body = {
372
+ accountId: input.accountId,
373
+ payeeName: input.payeeName,
374
+ amountMilliunits,
375
+ dateFirst: input.dateFirst,
376
+ dateNext: input.dateFirst,
377
+ frequency: input.frequency
378
+ };
379
+ if (input.memo)
380
+ body.memo = input.memo;
381
+ if (categoryId)
382
+ body.categoryId = categoryId;
383
+ const data = await client.post('/api/v1/ynab/scheduled-transactions', body);
384
+ return jsonResult(convertMilliunits(data));
385
+ }
386
+ async function updateScheduledTransaction(client, input) {
387
+ if (!input.transactionId) {
388
+ return errorResult('transactionId is required for update_scheduled_transaction.');
389
+ }
390
+ const body = {};
391
+ if (input.payeeName)
392
+ body.payeeName = input.payeeName;
393
+ if (input.amount != null)
394
+ body.amountMilliunits = Math.round(input.amount * 1000);
395
+ if (input.date)
396
+ body.dateNext = input.date;
397
+ if (input.frequency)
398
+ body.frequency = input.frequency;
399
+ if (input.memo)
400
+ body.memo = input.memo;
401
+ if (input.categoryName) {
402
+ const categoryId = await resolveCategoryId(client, input.categoryName);
403
+ if (!categoryId) {
404
+ return errorResult(`Category '${input.categoryName}' not found.`);
405
+ }
406
+ body.categoryId = categoryId;
407
+ }
408
+ const data = await client.put(`/api/v1/ynab/scheduled-transactions/${input.transactionId}`, body);
409
+ return jsonResult(convertMilliunits(data));
410
+ }
411
+ async function deleteScheduledTransaction(client, input) {
412
+ if (!input.transactionId) {
413
+ return errorResult('transactionId is required for delete_scheduled_transaction.');
414
+ }
415
+ const data = await client.delete(`/api/v1/ynab/scheduled-transactions/${input.transactionId}`);
416
+ return jsonResult(data);
417
+ }
143
418
  export function registerYnabTool(api, client) {
144
419
  api.registerTool({
145
420
  id: 'myn_ynab',
146
421
  name: 'MYN YNAB',
147
- description: 'YNAB budget management. Actions: budget_overview, category_balance, account_balances, set_category_goal (TB/TBD/MF/NEED), spending_insights, upcoming_bills.',
422
+ description: [
423
+ 'YNAB budget management with full read/write access.',
424
+ 'Budget: budget_overview, category_balance, list_categories, account_balances, set_category_goal, goal_progress, budget_months, search_payees.',
425
+ 'Transactions: create_transaction, create_transactions_bulk, list_transactions, update_transaction, delete_transaction.',
426
+ 'Scheduled: scheduled_transactions, create_scheduled_transaction, update_scheduled_transaction, delete_scheduled_transaction, subscriptions, upcoming_bills.',
427
+ 'Analytics: spending_insights, payee_analysis, spending_trends, net_worth, debt_tracking.',
428
+ 'Connection: connection_status.',
429
+ 'Amounts in dollars (negative=expense). Categories resolved by name (fuzzy match).'
430
+ ].join(' '),
148
431
  inputSchema: YnabInputSchema,
149
432
  async execute(input) {
150
433
  return executeYnab(client, input);
@@ -1 +1 @@
1
- {"version":3,"file":"ynab.js","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ynab.js","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mind-your-now/myn",
3
- "version": "0.6.4",
3
+ "version": "0.7.1",
4
4
  "description": "OpenClaw plugin for Mind Your Now - AI-powered task and life management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",