@mind-your-now/myn 0.6.4 → 0.7.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.
@@ -1,15 +1,38 @@
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
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<"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
+ frequency: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
+ dateFirst: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
28
+ transactions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
29
+ accountId: import("@sinclair/typebox").TString;
30
+ payeeName: import("@sinclair/typebox").TString;
31
+ amount: import("@sinclair/typebox").TNumber;
32
+ categoryName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
33
+ date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
34
+ memo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
35
+ }>>>;
13
36
  }>;
14
37
  export type YnabInput = typeof YnabInputSchema.static;
15
38
  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;;;;;;;;;;;;;;;;;;;;;;;;EAgE1B,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,CA4ElG;AA6MD,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,72 @@
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
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
+ // Scheduled transactions & subscriptions
29
+ Type.Literal('scheduled_transactions'),
30
+ Type.Literal('create_scheduled_transaction'),
31
+ Type.Literal('update_scheduled_transaction'),
32
+ Type.Literal('delete_scheduled_transaction'),
33
+ Type.Literal('subscriptions'),
34
+ Type.Literal('upcoming_bills'),
35
+ // Analytics
12
36
  Type.Literal('spending_insights'),
13
- Type.Literal('upcoming_bills')
37
+ Type.Literal('payee_analysis'),
38
+ Type.Literal('spending_trends'),
39
+ Type.Literal('net_worth'),
40
+ Type.Literal('debt_tracking'),
41
+ // Connection
42
+ Type.Literal('connection_status')
14
43
  ]),
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)' }))
44
+ // Shared parameters
45
+ categoryName: Type.Optional(Type.String({ description: 'Category name (fuzzy match). Used by category_balance, set_category_goal, create_transaction, create_transactions_bulk.' })),
46
+ accountId: Type.Optional(Type.String({ description: 'YNAB account ID. Use account_balances to find IDs.' })),
47
+ payeeName: Type.Optional(Type.String({ description: 'Payee name. Used by create_transaction, create_transactions_bulk, search_payees, create_scheduled_transaction.' })),
48
+ amount: Type.Optional(Type.Number({ description: 'Amount in dollars. Negative for expenses (e.g., -45.50), positive for income.' })),
49
+ date: Type.Optional(Type.String({ description: 'Date in YYYY-MM-DD format. Defaults to today for transactions. Used as sinceDate filter for list_transactions.' })),
50
+ memo: Type.Optional(Type.String({ description: 'Optional memo/note.' })),
51
+ months: Type.Optional(Type.Number({ description: 'Number of months for analytics (default: 3 for spending, 6 for trends).' })),
52
+ days: Type.Optional(Type.Number({ description: 'Number of days to look ahead for upcoming_bills (default: 7).' })),
53
+ // Goal parameters
54
+ goalType: Type.Optional(Type.String({ description: 'Goal type: TB (Target Balance), TBD (Target Balance by Date), MF (Monthly Funding), NEED (Plan Your Spending).' })),
55
+ goalTargetDollars: Type.Optional(Type.Number({ description: 'Goal target in dollars (e.g., 500.00).' })),
56
+ goalTargetMonth: Type.Optional(Type.String({ description: 'Target month YYYY-MM (e.g., 2026-06). Required for TBD goals.' })),
57
+ // Scheduled transaction parameters
58
+ transactionId: Type.Optional(Type.String({ description: 'Scheduled transaction ID. Required for update/delete_scheduled_transaction.' })),
59
+ frequency: Type.Optional(Type.String({ description: 'Recurrence frequency: never, daily, weekly, everyOtherWeek, twiceAMonth, every4Weeks, monthly, everyOtherMonth, every3Months, every4Months, twiceAYear, yearly, everyOtherYear.' })),
60
+ dateFirst: Type.Optional(Type.String({ description: 'First occurrence date YYYY-MM-DD for create_scheduled_transaction.' })),
61
+ // Bulk transaction parameters
62
+ transactions: Type.Optional(Type.Array(Type.Object({
63
+ accountId: Type.String({ description: 'YNAB account ID.' }),
64
+ payeeName: Type.String({ description: 'Payee name.' }),
65
+ amount: Type.Number({ description: 'Amount in dollars. Negative for expenses.' }),
66
+ categoryName: Type.Optional(Type.String({ description: 'Category name (fuzzy match).' })),
67
+ date: Type.Optional(Type.String({ description: 'Date YYYY-MM-DD. Defaults to today.' })),
68
+ memo: Type.Optional(Type.String({ description: 'Optional memo.' }))
69
+ }), { description: 'Array of transactions for create_transactions_bulk.' }))
25
70
  });
26
71
  /**
27
72
  * Convert YNAB milliunits to formatted dollar string.
@@ -38,7 +83,8 @@ const MILLIUNIT_FIELDS = new Set([
38
83
  'readyToAssign', 'totalIncome', 'totalBudgeted', 'totalActivity',
39
84
  'balance', 'budgeted', 'activity', 'clearedBalance', 'unclearedBalance',
40
85
  'goalTarget', 'goalUnderFunded', 'goalOverFunded', 'goalOverallFunded', 'goalOverallLeft',
41
- 'amount', 'total', 'totalSpending'
86
+ 'amount', 'total', 'totalSpending', 'monthlyTotal', 'annualTotal',
87
+ 'amountMilliunits', 'totalSpent', 'monthlyAverage'
42
88
  ]);
43
89
  /**
44
90
  * Recursively convert milliunit fields to dollar strings in API responses.
@@ -62,21 +108,77 @@ function convertMilliunits(obj) {
62
108
  }
63
109
  return obj;
64
110
  }
111
+ /** Resolve a category name to its ID via fuzzy search. Returns null if not found. */
112
+ async function resolveCategoryId(client, name) {
113
+ const result = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(name)}`);
114
+ return result?.id || null;
115
+ }
116
+ /** Today's date as YYYY-MM-DD */
117
+ function today() {
118
+ return new Date().toISOString().split('T')[0];
119
+ }
65
120
  export async function executeYnab(client, input) {
66
121
  try {
67
122
  switch (input.action) {
123
+ // Budget & accounts
68
124
  case 'budget_overview':
69
- return await getBudgetOverview(client);
125
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/overview')));
70
126
  case 'category_balance':
71
127
  return await getCategoryBalance(client, input);
128
+ case 'list_categories':
129
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/categories')));
72
130
  case 'account_balances':
73
- return await getAccountBalances(client);
131
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/accounts')));
74
132
  case 'set_category_goal':
75
133
  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);
134
+ case 'goal_progress':
135
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/categories')));
136
+ case 'budget_months':
137
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/budget/months')));
138
+ case 'search_payees':
139
+ return await searchPayees(client, input);
140
+ // Transactions
141
+ case 'create_transaction':
142
+ return await createTransaction(client, input);
143
+ case 'create_transactions_bulk':
144
+ return await createTransactionsBulk(client, input);
145
+ case 'list_transactions':
146
+ return await listTransactions(client, input);
147
+ // Scheduled transactions & subscriptions
148
+ case 'scheduled_transactions':
149
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/scheduled-transactions')));
150
+ case 'create_scheduled_transaction':
151
+ return await createScheduledTransaction(client, input);
152
+ case 'update_scheduled_transaction':
153
+ return await updateScheduledTransaction(client, input);
154
+ case 'delete_scheduled_transaction':
155
+ return await deleteScheduledTransaction(client, input);
156
+ case 'subscriptions':
157
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/subscriptions')));
158
+ case 'upcoming_bills': {
159
+ const days = input.days || 7;
160
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/scheduled?days=${days}`)));
161
+ }
162
+ // Analytics
163
+ case 'spending_insights': {
164
+ const months = input.months || 3;
165
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/spending?months=${months}`)));
166
+ }
167
+ case 'payee_analysis': {
168
+ const months = input.months || 3;
169
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/payees?months=${months}`)));
170
+ }
171
+ case 'spending_trends': {
172
+ const months = input.months || 6;
173
+ return jsonResult(convertMilliunits(await client.get(`/api/v1/ynab/analytics/trends?months=${months}`)));
174
+ }
175
+ case 'net_worth':
176
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/analytics/net-worth')));
177
+ case 'debt_tracking':
178
+ return jsonResult(convertMilliunits(await client.get('/api/v1/ynab/analytics/debt')));
179
+ // Connection
180
+ case 'connection_status':
181
+ return jsonResult(await client.get('/api/v1/ynab/status'));
80
182
  default:
81
183
  return errorResult(`Unknown action: ${input.action}`);
82
184
  }
@@ -88,10 +190,7 @@ export async function executeYnab(client, input) {
88
190
  return errorResult('Unknown error occurred');
89
191
  }
90
192
  }
91
- async function getBudgetOverview(client) {
92
- const data = await client.get('/api/v1/ynab/budget/overview');
93
- return jsonResult(convertMilliunits(data));
94
- }
193
+ // ==================== Action implementations ====================
95
194
  async function getCategoryBalance(client, input) {
96
195
  if (!input.categoryName) {
97
196
  return errorResult('categoryName is required for category_balance action');
@@ -99,9 +198,14 @@ async function getCategoryBalance(client, input) {
99
198
  const data = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(input.categoryName)}`);
100
199
  return jsonResult(convertMilliunits(data));
101
200
  }
102
- async function getAccountBalances(client) {
103
- const data = await client.get('/api/v1/ynab/budget/accounts');
104
- return jsonResult(convertMilliunits(data));
201
+ async function searchPayees(client, input) {
202
+ if (input.payeeName) {
203
+ const data = await client.get(`/api/v1/ynab/budget/payees/search?query=${encodeURIComponent(input.payeeName)}`);
204
+ return jsonResult(data);
205
+ }
206
+ // No search query — return all payees
207
+ const data = await client.get('/api/v1/ynab/budget/payees');
208
+ return jsonResult(data);
105
209
  }
106
210
  async function setCategoryGoal(client, input) {
107
211
  if (!input.categoryName) {
@@ -110,41 +214,176 @@ async function setCategoryGoal(client, input) {
110
214
  if (!input.goalType) {
111
215
  return errorResult('goalType is required for set_category_goal action (TB, TBD, MF, NEED)');
112
216
  }
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) {
217
+ const categoryId = await resolveCategoryId(client, input.categoryName);
218
+ if (!categoryId) {
116
219
  return errorResult(`Category '${input.categoryName}' not found`);
117
220
  }
118
- // Format target month as YYYY-MM-01 if provided
119
221
  let goalTargetMonth = input.goalTargetMonth;
120
222
  if (goalTargetMonth && !goalTargetMonth.endsWith('-01')) {
121
223
  goalTargetMonth = goalTargetMonth + '-01';
122
224
  }
123
- const body = {
124
- goalType: input.goalType
125
- };
225
+ const body = { goalType: input.goalType };
126
226
  if (input.goalTargetDollars != null)
127
227
  body.goalTargetDollars = input.goalTargetDollars;
128
228
  if (goalTargetMonth)
129
229
  body.goalTargetMonth = goalTargetMonth;
130
- const data = await client.patch(`/api/v1/ynab/budget/categories/${searchResult.id}/goal`, body);
230
+ const data = await client.patch(`/api/v1/ynab/budget/categories/${categoryId}/goal`, body);
231
+ return jsonResult(convertMilliunits(data));
232
+ }
233
+ async function createTransaction(client, input) {
234
+ if (!input.accountId) {
235
+ return errorResult('accountId is required for create_transaction. Use account_balances to find IDs.');
236
+ }
237
+ if (!input.payeeName) {
238
+ return errorResult('payeeName is required for create_transaction.');
239
+ }
240
+ if (input.amount == null) {
241
+ return errorResult('amount is required for create_transaction (in dollars, negative for expenses).');
242
+ }
243
+ const amountMilliunits = Math.round(input.amount * 1000);
244
+ let categoryId;
245
+ if (input.categoryName) {
246
+ const resolved = await resolveCategoryId(client, input.categoryName);
247
+ if (!resolved) {
248
+ return errorResult(`Category '${input.categoryName}' not found. Use list_categories to browse.`);
249
+ }
250
+ categoryId = resolved;
251
+ }
252
+ // YNAB API defaults to "uncleared" when cleared status not specified
253
+ const body = {
254
+ accountId: input.accountId,
255
+ payeeName: input.payeeName,
256
+ amountMilliunits,
257
+ date: input.date || today()
258
+ };
259
+ if (input.memo)
260
+ body.memo = input.memo;
261
+ if (categoryId)
262
+ body.categoryId = categoryId;
263
+ const data = await client.post('/api/v1/ynab/transactions', body);
131
264
  return jsonResult(convertMilliunits(data));
132
265
  }
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}`);
266
+ async function createTransactionsBulk(client, input) {
267
+ if (!input.transactions || input.transactions.length === 0) {
268
+ return errorResult('transactions array is required for create_transactions_bulk. Each needs accountId, payeeName, amount.');
269
+ }
270
+ // Resolve category names and convert amounts for all transactions
271
+ const resolved = [];
272
+ for (const txn of input.transactions) {
273
+ const amountMilliunits = Math.round(txn.amount * 1000);
274
+ let categoryId;
275
+ if (txn.categoryName) {
276
+ const id = await resolveCategoryId(client, txn.categoryName);
277
+ if (!id) {
278
+ return errorResult(`Category '${txn.categoryName}' not found for transaction "${txn.payeeName}". Use list_categories to browse.`);
279
+ }
280
+ categoryId = id;
281
+ }
282
+ const entry = {
283
+ accountId: txn.accountId,
284
+ payeeName: txn.payeeName,
285
+ amount: amountMilliunits,
286
+ date: txn.date || today()
287
+ };
288
+ if (txn.memo)
289
+ entry.memo = txn.memo;
290
+ if (categoryId)
291
+ entry.categoryId = categoryId;
292
+ resolved.push(entry);
293
+ }
294
+ const data = await client.post('/api/v1/ynab/transactions/bulk', { transactions: resolved });
295
+ return jsonResult(data);
296
+ }
297
+ async function listTransactions(client, input) {
298
+ const params = input.date ? `?sinceDate=${encodeURIComponent(input.date)}` : '';
299
+ const data = await client.get(`/api/v1/ynab/transactions${params}`);
136
300
  return jsonResult(convertMilliunits(data));
137
301
  }
138
- async function getUpcomingBills(client, input) {
139
- const days = input.days || 7;
140
- const data = await client.get(`/api/v1/ynab/scheduled?days=${days}`);
302
+ async function createScheduledTransaction(client, input) {
303
+ if (!input.accountId) {
304
+ return errorResult('accountId is required for create_scheduled_transaction.');
305
+ }
306
+ if (!input.payeeName) {
307
+ return errorResult('payeeName is required for create_scheduled_transaction.');
308
+ }
309
+ if (input.amount == null) {
310
+ return errorResult('amount is required for create_scheduled_transaction (in dollars).');
311
+ }
312
+ if (!input.frequency) {
313
+ return errorResult('frequency is required (e.g., monthly, weekly, yearly).');
314
+ }
315
+ if (!input.dateFirst) {
316
+ return errorResult('dateFirst is required (YYYY-MM-DD, first occurrence date).');
317
+ }
318
+ const amountMilliunits = Math.round(input.amount * 1000);
319
+ let categoryId;
320
+ if (input.categoryName) {
321
+ const resolved = await resolveCategoryId(client, input.categoryName);
322
+ if (!resolved) {
323
+ return errorResult(`Category '${input.categoryName}' not found.`);
324
+ }
325
+ categoryId = resolved;
326
+ }
327
+ const body = {
328
+ accountId: input.accountId,
329
+ payeeName: input.payeeName,
330
+ amountMilliunits,
331
+ dateFirst: input.dateFirst,
332
+ dateNext: input.dateFirst,
333
+ frequency: input.frequency
334
+ };
335
+ if (input.memo)
336
+ body.memo = input.memo;
337
+ if (categoryId)
338
+ body.categoryId = categoryId;
339
+ const data = await client.post('/api/v1/ynab/scheduled-transactions', body);
340
+ return jsonResult(convertMilliunits(data));
341
+ }
342
+ async function updateScheduledTransaction(client, input) {
343
+ if (!input.transactionId) {
344
+ return errorResult('transactionId is required for update_scheduled_transaction.');
345
+ }
346
+ const body = {};
347
+ if (input.payeeName)
348
+ body.payeeName = input.payeeName;
349
+ if (input.amount != null)
350
+ body.amountMilliunits = Math.round(input.amount * 1000);
351
+ if (input.date)
352
+ body.dateNext = input.date;
353
+ if (input.frequency)
354
+ body.frequency = input.frequency;
355
+ if (input.memo)
356
+ body.memo = input.memo;
357
+ if (input.categoryName) {
358
+ const categoryId = await resolveCategoryId(client, input.categoryName);
359
+ if (!categoryId) {
360
+ return errorResult(`Category '${input.categoryName}' not found.`);
361
+ }
362
+ body.categoryId = categoryId;
363
+ }
364
+ const data = await client.put(`/api/v1/ynab/scheduled-transactions/${input.transactionId}`, body);
141
365
  return jsonResult(convertMilliunits(data));
142
366
  }
367
+ async function deleteScheduledTransaction(client, input) {
368
+ if (!input.transactionId) {
369
+ return errorResult('transactionId is required for delete_scheduled_transaction.');
370
+ }
371
+ const data = await client.delete(`/api/v1/ynab/scheduled-transactions/${input.transactionId}`);
372
+ return jsonResult(data);
373
+ }
143
374
  export function registerYnabTool(api, client) {
144
375
  api.registerTool({
145
376
  id: 'myn_ynab',
146
377
  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.',
378
+ description: [
379
+ 'YNAB budget management with full read/write access.',
380
+ 'Budget: budget_overview, category_balance, list_categories, account_balances, set_category_goal, goal_progress, budget_months, search_payees.',
381
+ 'Transactions: create_transaction, create_transactions_bulk, list_transactions.',
382
+ 'Scheduled: scheduled_transactions, create_scheduled_transaction, update_scheduled_transaction, delete_scheduled_transaction, subscriptions, upcoming_bills.',
383
+ 'Analytics: spending_insights, payee_analysis, spending_trends, net_worth, debt_tracking.',
384
+ 'Connection: connection_status.',
385
+ 'Amounts in dollars (negative=expense). Categories resolved by name (fuzzy match).'
386
+ ].join(' '),
148
387
  inputSchema: YnabInputSchema,
149
388
  async execute(input) {
150
389
  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.0",
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",