@dizzlkheinz/ynab-mcpb 0.16.1 → 0.17.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.
- package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +1 -0
- package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +757 -0
- package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +781 -0
- package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +766 -0
- package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +766 -0
- package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +766 -0
- package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +652 -0
- package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +766 -0
- package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +766 -0
- package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +766 -0
- package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +766 -0
- package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +36 -0
- package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +766 -0
- package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +766 -0
- package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +191 -0
- package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +766 -0
- package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +766 -0
- package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +189 -0
- package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +1 -0
- package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +1 -0
- package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +1120 -0
- package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +2646 -0
- package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +2646 -0
- package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +1 -0
- package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +160 -0
- package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +1 -0
- package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +20 -0
- package/AGENTS.md +1 -36
- package/CLAUDE.md +28 -43
- package/NUL +0 -1
- package/README.md +8 -10
- package/dist/bundle/index.cjs +41 -41
- package/dist/server/YNABMCPServer.js +28 -381
- package/dist/server/config.d.ts +2 -0
- package/dist/server/config.js +1 -0
- package/dist/tools/accountTools.d.ts +2 -0
- package/dist/tools/accountTools.js +45 -0
- package/dist/tools/adapters.d.ts +12 -0
- package/dist/tools/adapters.js +25 -0
- package/dist/tools/budgetTools.d.ts +2 -0
- package/dist/tools/budgetTools.js +30 -0
- package/dist/tools/categoryTools.d.ts +2 -0
- package/dist/tools/categoryTools.js +45 -0
- package/dist/tools/monthTools.d.ts +2 -0
- package/dist/tools/monthTools.js +32 -0
- package/dist/tools/payeeTools.d.ts +2 -0
- package/dist/tools/payeeTools.js +32 -0
- package/dist/tools/reconciliation/index.d.ts +2 -0
- package/dist/tools/reconciliation/index.js +33 -0
- package/dist/tools/schemas/common.d.ts +3 -0
- package/dist/tools/schemas/common.js +3 -0
- package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +1 -1
- package/dist/tools/transactionTools.d.ts +2 -0
- package/dist/tools/transactionTools.js +124 -0
- package/dist/tools/utilityTools.d.ts +3 -1
- package/dist/tools/utilityTools.js +32 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/toolRegistration.d.ts +27 -0
- package/dist/types/toolRegistration.js +1 -0
- package/package.json +2 -2
- package/scripts/run-domain-integration-tests.js +4 -1
- package/src/__tests__/workflows.e2e.test.ts +1 -7
- package/src/server/YNABMCPServer.ts +33 -519
- package/src/server/__tests__/toolRegistration.test.ts +236 -0
- package/src/server/config.ts +1 -0
- package/src/tools/__tests__/adapters.test.ts +113 -0
- package/src/tools/__tests__/utilityTools.test.ts +7 -7
- package/src/tools/accountTools.ts +53 -0
- package/src/tools/adapters.ts +74 -0
- package/src/tools/budgetTools.ts +37 -0
- package/src/tools/categoryTools.ts +53 -0
- package/src/tools/monthTools.ts +39 -0
- package/src/tools/payeeTools.ts +39 -0
- package/src/tools/reconciliation/index.ts +45 -0
- package/src/tools/schemas/common.ts +18 -0
- package/src/tools/transactionTools.ts +140 -0
- package/src/tools/utilityTools.ts +42 -2
- package/src/types/index.ts +3 -0
- package/src/types/toolRegistration.ts +88 -0
- package/.github/workflows/pr-description-check.yml +0 -88
- package/docs/README.md +0 -72
- package/docs/getting-started/CONFIGURATION.md +0 -175
- package/docs/getting-started/INSTALLATION.md +0 -333
- package/docs/getting-started/QUICKSTART.md +0 -282
- package/docs/guides/ARCHITECTURE.md +0 -533
- package/docs/guides/DEPLOYMENT.md +0 -189
- package/docs/guides/INTEGRATION_TESTING.md +0 -730
- package/docs/guides/TESTING.md +0 -591
- package/docs/reconciliation-flow.md +0 -83
- package/docs/reference/EXAMPLES.md +0 -946
- package/docs/reference/TOOLS.md +0 -348
- package/docs/reference/TROUBLESHOOTING.md +0 -481
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
I now have comprehensive information about the tool registrations. Let me compile the report:
|
|
2
|
+
|
|
3
|
+
## MCP Tool Registration Catalogue Report
|
|
4
|
+
|
|
5
|
+
### Summary Statistics
|
|
6
|
+
- **Total Tools:** 30
|
|
7
|
+
- **Domain Groups:** 8 (Budget, Account, Transaction, Category, Payee, Month, Reconciliation, Utility)
|
|
8
|
+
- **Adapter Types:** 4 (adapt, adaptWithDelta, adaptWrite, adaptNoInput/custom)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
### Complete Tool Registry
|
|
13
|
+
|
|
14
|
+
| # | Tool Name | Domain | Adapter Type | Input Schema Location | Output Schema | Migrate? |
|
|
15
|
+
|---|-----------|--------|--------------|----------------------|---------------|----------|
|
|
16
|
+
| 1 | `list_budgets` | Budget | delta | inline (empty) | ✅ | No |
|
|
17
|
+
| 2 | `get_budget` | Budget | read-only | `budgetTools.ts` | ✅ | ⚠️ Yes |
|
|
18
|
+
| 3 | `set_default_budget` | Budget | custom (server) | inline | ✅ | No |
|
|
19
|
+
| 4 | `get_default_budget` | Budget | custom (server) | inline (empty) | ✅ | No |
|
|
20
|
+
| 5 | `list_accounts` | Account | delta | `accountTools.ts` | ✅ | ⚠️ Yes |
|
|
21
|
+
| 6 | `get_account` | Account | read-only | `accountTools.ts` | ✅ | ⚠️ Yes |
|
|
22
|
+
| 7 | `create_account` | Account | write | `accountTools.ts` | Loose | ⚠️ Yes |
|
|
23
|
+
| 8 | `list_transactions` | Transaction | delta | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
24
|
+
| 9 | `get_transaction` | Transaction | read-only | `transactionTools.ts` | ✅ | ⚠️ Yes |
|
|
25
|
+
| 10 | `create_transaction` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
26
|
+
| 11 | `create_transactions` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
27
|
+
| 12 | `update_transaction` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
28
|
+
| 13 | `update_transactions` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
29
|
+
| 14 | `delete_transaction` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
30
|
+
| 15 | `create_receipt_split_transaction` | Transaction | write | `transactionTools.ts` | Loose | ⚠️ Yes |
|
|
31
|
+
| 16 | `export_transactions` | Transaction | read-only | `exportTransactions.ts` | ✅ | ⚠️ Yes |
|
|
32
|
+
| 17 | `compare_transactions` | Transaction | read-only | `compareTransactions/index.ts` | ✅ | ⚠️ Yes |
|
|
33
|
+
| 18 | `reconcile_account` | Reconciliation | delta | `reconciliation/index.ts` | Loose | ⚠️ Yes |
|
|
34
|
+
| 19 | `list_categories` | Category | delta | `categoryTools.ts` | ✅ | ⚠️ Yes |
|
|
35
|
+
| 20 | `get_category` | Category | read-only | `categoryTools.ts` | ✅ | ⚠️ Yes |
|
|
36
|
+
| 21 | `update_category` | Category | write | `categoryTools.ts` | Loose | ⚠️ Yes |
|
|
37
|
+
| 22 | `list_payees` | Payee | delta | `payeeTools.ts` | ✅ | ⚠️ Yes |
|
|
38
|
+
| 23 | `get_payee` | Payee | read-only | `payeeTools.ts` | ✅ | ⚠️ Yes |
|
|
39
|
+
| 24 | `get_month` | Month | read-only | `monthTools.ts` | ✅ | ⚠️ Yes |
|
|
40
|
+
| 25 | `list_months` | Month | delta | `monthTools.ts` | ✅ | ⚠️ Yes |
|
|
41
|
+
| 26 | `get_user` | Utility | no-input | inline (empty) | ✅ | No |
|
|
42
|
+
| 27 | `convert_amount` | Utility | custom | `utilityTools.ts` | ✅ | ⚠️ Yes |
|
|
43
|
+
| 28 | `diagnostic_info` | Utility | custom (server) | inline | ✅ | No |
|
|
44
|
+
| 29 | `clear_cache` | Utility | custom (server) | inline (empty) | ✅ | No |
|
|
45
|
+
| 30 | `set_output_format` | Utility | custom (server) | inline | ✅ | No |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Adapter Type Breakdown
|
|
50
|
+
|
|
51
|
+
| Adapter | Tools | Description |
|
|
52
|
+
|---------|-------|-------------|
|
|
53
|
+
| **`adapt`** (read-only) | 8 | Standard adapter for read operations without delta support |
|
|
54
|
+
| **`adaptWithDelta`** (delta) | 7 | Delta caching with server knowledge tracking |
|
|
55
|
+
| **`adaptWrite`** (write) | 8 | Write operations with cache invalidation |
|
|
56
|
+
| **`adaptNoInput`** (no-input) | 1 | Tools with empty input schema |
|
|
57
|
+
| **custom (server)** | 6 | Server-owned tools with inline handlers |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Inline Schemas in `YNABMCPServer.ts` (Server-owned - KEEP INLINE)
|
|
62
|
+
|
|
63
|
+
These schemas are intentionally inline because they:
|
|
64
|
+
1. Are simple utility schemas used only by server-owned tools
|
|
65
|
+
2. Tightly coupled to server configuration logic
|
|
66
|
+
3. Have no need for reuse in external contexts
|
|
67
|
+
|
|
68
|
+
| Schema | Tool | Rationale |
|
|
69
|
+
|--------|------|-----------|
|
|
70
|
+
| `emptyObjectSchema` | `list_budgets`, `get_default_budget`, `clear_cache`, `get_user` | Generic empty schema, no domain logic |
|
|
71
|
+
| `setDefaultBudgetSchema` | `set_default_budget` | Server state management |
|
|
72
|
+
| `diagnosticInfoSchema` | `diagnostic_info` | Server internals exposure |
|
|
73
|
+
| `setOutputFormatSchema` | `set_output_format` | Server response configuration |
|
|
74
|
+
| `LooseObjectSchema` | 10 mutation tools | Permissive output passthrough |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Schemas Recommended for Migration
|
|
79
|
+
|
|
80
|
+
**Target location:** `src/tools/schemas/inputs/` (mirroring existing `outputs/` structure)
|
|
81
|
+
|
|
82
|
+
#### High Priority - Complex Schemas with Shared Patterns
|
|
83
|
+
|
|
84
|
+
| Schema | Current Location | Complexity | Shared Patterns |
|
|
85
|
+
|--------|-----------------|------------|-----------------|
|
|
86
|
+
| `CreateTransactionSchema` | transactionTools.ts:169-211 | High (superRefine, nested subtransactions) | `date`, `cleared`, `flag_color`, `amount` |
|
|
87
|
+
| `UpdateTransactionSchema` | transactionTools.ts:621-640 | Medium | Same as above |
|
|
88
|
+
| `CreateTransactionsSchema` | transactionTools.ts:238-248 | High (bulk, nested) | Reuses `BulkTransactionInputSchema` |
|
|
89
|
+
| `UpdateTransactionsSchema` | transactionTools.ts:677-687 | High (bulk) | Reuses `BulkUpdateTransactionInputSchema` |
|
|
90
|
+
| `CreateReceiptSplitTransactionSchema` | transactionTools.ts:555-612 | Very High (nested, superRefine) | `date`, `cleared`, `flag_color` |
|
|
91
|
+
| `ReconcileAccountSchema` | reconciliation/index.ts:71-132 | Very High (many optional params) | `csv_format`, matching config |
|
|
92
|
+
| `CompareTransactionsSchema` | compareTransactions/index.ts:16-56 | High (nested csv_format) | `csv_format` |
|
|
93
|
+
|
|
94
|
+
#### Medium Priority - Domain Entity Schemas
|
|
95
|
+
|
|
96
|
+
| Schema | Current Location | Rationale |
|
|
97
|
+
|--------|-----------------|-----------|
|
|
98
|
+
| `GetBudgetSchema` | budgetTools.ts:12-16 | Simple but follows pattern |
|
|
99
|
+
| `ListAccountsSchema` | accountTools.ts:17-22 | Simple with `limit` |
|
|
100
|
+
| `GetAccountSchema` | accountTools.ts:29-34 | Standard get pattern |
|
|
101
|
+
| `CreateAccountSchema` | accountTools.ts:41-57 | Enum types reusable |
|
|
102
|
+
| `ListTransactionsSchema` | transactionTools.ts:139-151 | Filter params |
|
|
103
|
+
| `GetTransactionSchema` | transactionTools.ts:157-163 | Standard get pattern |
|
|
104
|
+
| `DeleteTransactionSchema` | transactionTools.ts:716-722 | Standard delete pattern |
|
|
105
|
+
| `ListCategoriesSchema` | categoryTools.ts:17-21 | Simple budget_id |
|
|
106
|
+
| `GetCategorySchema` | categoryTools.ts:28-33 | Standard get pattern |
|
|
107
|
+
| `UpdateCategorySchema` | categoryTools.ts:40-47 | Milliunits amount |
|
|
108
|
+
| `ListPayeesSchema` | payeeTools.ts:14-19 | Simple with `limit` |
|
|
109
|
+
| `GetPayeeSchema` | payeeTools.ts:26-31 | Standard get pattern |
|
|
110
|
+
| `GetMonthSchema` | monthTools.ts:15-20 | Date format regex |
|
|
111
|
+
| `ListMonthsSchema` | monthTools.ts:27-31 | Simple budget_id |
|
|
112
|
+
| `ExportTransactionsSchema` | exportTransactions.ts:14-27 | Filter params |
|
|
113
|
+
|
|
114
|
+
#### Low Priority - Utility Schemas
|
|
115
|
+
|
|
116
|
+
| Schema | Current Location | Rationale |
|
|
117
|
+
|--------|-----------------|-----------|
|
|
118
|
+
| `ConvertAmountSchema` | utilityTools.ts:10-15 | Simple, self-contained |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
### Identified Reusable Schema Fragments
|
|
123
|
+
|
|
124
|
+
These patterns appear in multiple schemas and could be extracted to `src/tools/schemas/shared/`:
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// src/tools/schemas/shared/commonInputs.ts
|
|
128
|
+
|
|
129
|
+
// Budget ID - appears in 20+ schemas
|
|
130
|
+
export const BudgetIdSchema = z.string().min(1, 'Budget ID is required');
|
|
131
|
+
|
|
132
|
+
// ISO Date - appears in 8+ schemas
|
|
133
|
+
export const ISODateSchema = z.string()
|
|
134
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, 'Date must be in ISO format (YYYY-MM-DD)');
|
|
135
|
+
|
|
136
|
+
// Cleared Status - appears in 5+ schemas
|
|
137
|
+
export const ClearedStatusSchema = z.enum(['cleared', 'uncleared', 'reconciled']);
|
|
138
|
+
|
|
139
|
+
// Flag Color - appears in 5+ schemas
|
|
140
|
+
export const FlagColorSchema = z.enum(['red', 'orange', 'yellow', 'green', 'blue', 'purple']);
|
|
141
|
+
|
|
142
|
+
// Account Type - appears in create_account
|
|
143
|
+
export const AccountTypeSchema = z.enum([
|
|
144
|
+
'checking', 'savings', 'creditCard', 'cash',
|
|
145
|
+
'lineOfCredit', 'otherAsset', 'otherLiability'
|
|
146
|
+
]);
|
|
147
|
+
|
|
148
|
+
// Milliunits Amount - appears in 6+ schemas
|
|
149
|
+
export const MilliunitsAmountSchema = z.number().int('Amount must be an integer in milliunits');
|
|
150
|
+
|
|
151
|
+
// CSV Format - appears in compare_transactions, reconcile_account
|
|
152
|
+
export const CSVFormatSchema = z.object({
|
|
153
|
+
date_column: z.union([z.string(), z.number()]).optional(),
|
|
154
|
+
amount_column: z.union([z.string(), z.number()]).optional(),
|
|
155
|
+
debit_column: z.union([z.string(), z.number()]).optional(),
|
|
156
|
+
credit_column: z.union([z.string(), z.number()]).optional(),
|
|
157
|
+
description_column: z.union([z.string(), z.number()]).optional(),
|
|
158
|
+
date_format: z.string().optional(),
|
|
159
|
+
has_header: z.boolean().optional(),
|
|
160
|
+
delimiter: z.string().optional(),
|
|
161
|
+
}).strict();
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### Recommended Migration Strategy
|
|
167
|
+
|
|
168
|
+
1. **Phase 1:** Create `src/tools/schemas/shared/commonInputs.ts` with reusable fragments
|
|
169
|
+
2. **Phase 2:** Create `src/tools/schemas/inputs/` directory structure:
|
|
170
|
+
- `budgetInputs.ts`
|
|
171
|
+
- `accountInputs.ts`
|
|
172
|
+
- `transactionInputs.ts`
|
|
173
|
+
- `categoryInputs.ts`
|
|
174
|
+
- `payeeInputs.ts`
|
|
175
|
+
- `monthInputs.ts`
|
|
176
|
+
- `reconciliationInputs.ts`
|
|
177
|
+
- `comparisonInputs.ts`
|
|
178
|
+
- `utilityInputs.ts`
|
|
179
|
+
- `index.ts` (central export)
|
|
180
|
+
3. **Phase 3:** Migrate high-complexity schemas first (transactions, reconciliation)
|
|
181
|
+
4. **Phase 4:** Update tool files to import from new schema locations
|
|
182
|
+
5. **Phase 5:** Keep server-owned schemas inline (5 schemas in YNABMCPServer.ts)
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
### Summary
|
|
187
|
+
|
|
188
|
+
- **22 schemas** are candidates for migration to a common inputs module
|
|
189
|
+
- **5 schemas** should remain inline in `YNABMCPServer.ts` (server-owned)
|
|
190
|
+
- **7 reusable fragments** can be extracted to reduce duplication
|
|
191
|
+
- The existing `src/tools/schemas/outputs/` structure provides a proven pattern to follow
|