@dizzlkheinz/ynab-mcpb 0.16.1 → 0.17.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.
- package/.env.example +33 -33
- package/.github/workflows/ci-tests.yml +45 -45
- package/.github/workflows/claude-code-review.yml +57 -57
- package/.github/workflows/claude.yml +50 -50
- package/.github/workflows/full-integration.yml +22 -22
- package/.github/workflows/publish.yml +11 -2
- package/CLAUDE.md +33 -47
- package/README.md +8 -10
- package/dist/bundle/index.cjs +54 -54
- package/dist/server/YNABMCPServer.d.ts +120 -54
- package/dist/server/YNABMCPServer.js +28 -381
- package/dist/server/config.d.ts +2 -0
- package/dist/server/config.js +1 -0
- package/dist/server/securityMiddleware.d.ts +37 -8
- 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/schemas/outputs/index.d.ts +2 -2
- package/dist/tools/schemas/outputs/index.js +2 -2
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
- package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
- package/dist/tools/transactionTools.d.ts +2 -0
- package/dist/tools/transactionTools.js +124 -0
- package/dist/tools/utilityTools.d.ts +2 -7
- package/dist/tools/utilityTools.js +19 -38
- package/dist/types/index.d.ts +1 -0
- package/dist/types/toolRegistration.d.ts +27 -0
- package/dist/types/toolRegistration.js +1 -0
- package/docs/maintainers/npm-publishing.md +27 -0
- package/docs/reference/API.md +15 -70
- package/docs/technical/reconciliation-system-architecture.md +2251 -2251
- package/package.json +6 -6
- package/scripts/analyze-bundle.mjs +41 -41
- package/scripts/generate-mcpb.ps1 +95 -95
- package/scripts/run-domain-integration-tests.js +4 -1
- package/scripts/watch-and-restart.ps1 +49 -49
- package/src/__tests__/comprehensive.integration.test.ts +0 -28
- package/src/__tests__/performance.test.ts +4 -12
- package/src/__tests__/setup.ts +45 -14
- package/src/__tests__/workflows.e2e.test.ts +1 -51
- package/src/server/YNABMCPServer.ts +33 -519
- package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
- 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__/transactionTools.integration.test.ts +63 -3
- package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
- package/src/tools/__tests__/utilityTools.test.ts +1 -123
- 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/schemas/outputs/index.ts +0 -3
- package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
- package/src/tools/toolCategories.ts +0 -1
- package/src/tools/transactionTools.ts +140 -0
- package/src/tools/utilityTools.ts +24 -55
- package/src/types/index.ts +3 -0
- package/src/types/toolRegistration.ts +88 -0
- package/vitest.config.ts +2 -1
- package/.chunkhound.json +0 -11
- package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
- package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
- package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
- package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
- package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
- package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
- package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
- package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
- package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
- package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
- package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
- package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
- package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
- package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
- package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
- package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
- package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
- package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
- package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
- package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
- package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
- package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
- package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
- package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
- package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
- package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
- package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
- package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
- package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
- package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
- package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
- package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
- package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
- package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
- package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
- package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
- package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
- package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
- package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
- package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
- package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
- package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
- package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
- package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
- package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
- package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
- package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
- package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
- package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
- package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
- package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
- package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
- package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
- package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
- package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
- package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
- package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
- package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
- package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
- package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
- package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
- package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
- package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
- package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
- package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
- package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
- package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
- package/.github/workflows/pr-description-check.yml +0 -88
- package/AGENTS.md +0 -36
- package/NUL +0 -1
- 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
- package/package.json.tmp +0 -105
- package/temp-recon.ts +0 -126
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
- package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
- package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
- package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +0 -115
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { z } from 'zod/v4';
|
|
2
|
-
import { withToolErrorHandling } from '../types/index.js';
|
|
3
1
|
import { responseFormatter } from '../server/responseFormatter.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
})
|
|
9
|
-
.strict();
|
|
2
|
+
import { withToolErrorHandling } from '../types/index.js';
|
|
3
|
+
import { createAdapters } from './adapters.js';
|
|
4
|
+
import { emptyObjectSchema } from './schemas/common.js';
|
|
5
|
+
import { ToolAnnotationPresets } from './toolCategories.js';
|
|
10
6
|
export async function handleGetUser(ynabAPI) {
|
|
11
7
|
return await withToolErrorHandling(async () => {
|
|
12
8
|
const response = await ynabAPI.user.getUser();
|
|
@@ -24,33 +20,18 @@ export async function handleGetUser(ynabAPI) {
|
|
|
24
20
|
};
|
|
25
21
|
}, 'ynab:get_user', 'getting user information');
|
|
26
22
|
}
|
|
27
|
-
export
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
{
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: responseFormatter.format({
|
|
45
|
-
conversion: {
|
|
46
|
-
original_amount: amount,
|
|
47
|
-
converted_amount: result,
|
|
48
|
-
to_milliunits,
|
|
49
|
-
description,
|
|
50
|
-
},
|
|
51
|
-
}),
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
};
|
|
55
|
-
}, 'ynab:convert_amount', 'converting amount');
|
|
56
|
-
}
|
|
23
|
+
export const registerUtilityTools = (registry, context) => {
|
|
24
|
+
const { adaptNoInput } = createAdapters(context);
|
|
25
|
+
registry.register({
|
|
26
|
+
name: 'get_user',
|
|
27
|
+
description: 'Get information about the authenticated user',
|
|
28
|
+
inputSchema: emptyObjectSchema,
|
|
29
|
+
handler: adaptNoInput(handleGetUser),
|
|
30
|
+
metadata: {
|
|
31
|
+
annotations: {
|
|
32
|
+
...ToolAnnotationPresets.READ_ONLY_EXTERNAL,
|
|
33
|
+
title: 'YNAB: Get User Information',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,3 +18,4 @@ export { RequestLogger, globalRequestLogger, type LogEntry, type LoggerConfig, }
|
|
|
18
18
|
export { SecurityMiddleware, withSecurityWrapper, type SecurityContext, } from '../server/securityMiddleware.js';
|
|
19
19
|
export type { MCPToolAnnotations } from './toolAnnotations.js';
|
|
20
20
|
export type { ToolDefinition } from '../server/toolRegistry.js';
|
|
21
|
+
export type { ToolContext, ToolFactory, BudgetIdResolverFactory } from './toolRegistration.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import * as ynab from 'ynab';
|
|
3
|
+
import type { ToolRegistry, ToolExecutionPayload, DefaultArgumentResolver } from '../server/toolRegistry.js';
|
|
4
|
+
import type { DeltaFetcher } from '../tools/deltaFetcher.js';
|
|
5
|
+
import type { DeltaCache } from '../server/deltaCache.js';
|
|
6
|
+
import type { ServerKnowledgeStore } from '../server/serverKnowledgeStore.js';
|
|
7
|
+
import type { DiagnosticManager } from '../server/diagnostics.js';
|
|
8
|
+
import type { CacheManager } from '../server/cacheManager.js';
|
|
9
|
+
export interface ToolContext {
|
|
10
|
+
ynabAPI: ynab.API;
|
|
11
|
+
deltaFetcher: DeltaFetcher;
|
|
12
|
+
deltaCache: DeltaCache;
|
|
13
|
+
serverKnowledgeStore: ServerKnowledgeStore;
|
|
14
|
+
getDefaultBudgetId: () => string | undefined;
|
|
15
|
+
setDefaultBudget: (budgetId: string) => void;
|
|
16
|
+
cacheManager: CacheManager;
|
|
17
|
+
diagnosticManager?: DiagnosticManager;
|
|
18
|
+
}
|
|
19
|
+
export type ToolFactory = (registry: ToolRegistry, context: ToolContext) => void;
|
|
20
|
+
export type Adapter<TInput extends Record<string, unknown>> = (payload: ToolExecutionPayload<TInput>) => Promise<CallToolResult>;
|
|
21
|
+
export type Handler<TInput extends Record<string, unknown>> = (api: ynab.API, params: TInput) => Promise<CallToolResult>;
|
|
22
|
+
export type DeltaHandler<TInput extends Record<string, unknown>> = (api: ynab.API, deltaFetcher: DeltaFetcher, params: TInput) => Promise<CallToolResult>;
|
|
23
|
+
export type WriteHandler<TInput extends Record<string, unknown>> = (api: ynab.API, deltaCache: DeltaCache, serverKnowledgeStore: ServerKnowledgeStore, params: TInput) => Promise<CallToolResult>;
|
|
24
|
+
export type NoInputHandler = (api: ynab.API) => Promise<CallToolResult>;
|
|
25
|
+
export type BudgetIdResolverFactory = <TInput extends {
|
|
26
|
+
budget_id?: string | undefined;
|
|
27
|
+
}>() => DefaultArgumentResolver<TInput>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# npm publishing (maintainers)
|
|
2
|
+
|
|
3
|
+
This repo publishes the package `@dizzlkheinz/ynab-mcpb` to the public npm registry via GitHub Actions (`.github/workflows/publish.yml`).
|
|
4
|
+
|
|
5
|
+
## Trusted publishing (OIDC)
|
|
6
|
+
|
|
7
|
+
This package is configured as a **Trusted Publisher** on npm (OIDC). With that enabled, the publish workflow does **not** need an npm token and can still work even if the package is set to “disallow tokens”.
|
|
8
|
+
|
|
9
|
+
Note: `npm whoami` will still fail in CI under OIDC; authentication happens only during `npm publish`.
|
|
10
|
+
|
|
11
|
+
## Common failure: `npm ERR! need auth`
|
|
12
|
+
|
|
13
|
+
This error means the runner has no valid auth for `https://registry.npmjs.org/`.
|
|
14
|
+
|
|
15
|
+
Checklist:
|
|
16
|
+
|
|
17
|
+
- The Trusted Publisher entry matches exactly (repo, workflow filename `publish.yml`, and environment `npm-publish`).
|
|
18
|
+
- The workflow has `permissions: id-token: write`.
|
|
19
|
+
- You’re using a recent npm CLI (the workflow uses Node `24`).
|
|
20
|
+
- For first-time scoped publishes, the workflow uses `npm publish --access public`.
|
|
21
|
+
|
|
22
|
+
## Local manual publish (optional)
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm adduser
|
|
26
|
+
npm publish --access public
|
|
27
|
+
```
|
package/docs/reference/API.md
CHANGED
|
@@ -49,10 +49,10 @@ The server automatically converts YNAB's internal milliunits to dollars in all r
|
|
|
49
49
|
- Budget amounts: `150.00` (instead of `150000` milliunits)
|
|
50
50
|
|
|
51
51
|
**Input formats**:
|
|
52
|
-
- When creating transactions, amounts should be provided in
|
|
53
|
-
-
|
|
52
|
+
- When creating transactions, amounts should be provided in dollars (e.g., `50.25`)
|
|
53
|
+
- The server automatically converts to YNAB's internal milliunit format
|
|
54
54
|
|
|
55
|
-
**
|
|
55
|
+
**Note**: YNAB's internal representation uses milliunits (1/1000th of currency unit), but this is now transparent to users - all inputs and outputs use standard dollar amounts
|
|
56
56
|
|
|
57
57
|
### Dates
|
|
58
58
|
|
|
@@ -1227,60 +1227,6 @@ Gets information about the authenticated user.
|
|
|
1227
1227
|
}
|
|
1228
1228
|
```
|
|
1229
1229
|
|
|
1230
|
-
### convert_amount
|
|
1231
|
-
|
|
1232
|
-
Converts between dollars and milliunits with integer arithmetic for precision.
|
|
1233
|
-
|
|
1234
|
-
**Parameters:**
|
|
1235
|
-
- `amount` (number, required): The amount to convert
|
|
1236
|
-
- `to_milliunits` (boolean, required): If true, convert from dollars to milliunits. If false, convert from milliunits to dollars
|
|
1237
|
-
|
|
1238
|
-
**Example Request (dollars to milliunits):**
|
|
1239
|
-
```json
|
|
1240
|
-
{
|
|
1241
|
-
"name": "convert_amount",
|
|
1242
|
-
"arguments": {
|
|
1243
|
-
"amount": 50.25,
|
|
1244
|
-
"to_milliunits": true
|
|
1245
|
-
}
|
|
1246
|
-
}
|
|
1247
|
-
```
|
|
1248
|
-
|
|
1249
|
-
**Example Response:**
|
|
1250
|
-
```json
|
|
1251
|
-
{
|
|
1252
|
-
"content": [
|
|
1253
|
-
{
|
|
1254
|
-
"type": "text",
|
|
1255
|
-
"text": "{\n \"original_amount\": 50.25,\n \"converted_amount\": 50250,\n \"conversion_type\": \"dollars_to_milliunits\"\n}"
|
|
1256
|
-
}
|
|
1257
|
-
]
|
|
1258
|
-
}
|
|
1259
|
-
```
|
|
1260
|
-
|
|
1261
|
-
**Example Request (milliunits to dollars):**
|
|
1262
|
-
```json
|
|
1263
|
-
{
|
|
1264
|
-
"name": "convert_amount",
|
|
1265
|
-
"arguments": {
|
|
1266
|
-
"amount": 50250,
|
|
1267
|
-
"to_milliunits": false
|
|
1268
|
-
}
|
|
1269
|
-
}
|
|
1270
|
-
```
|
|
1271
|
-
|
|
1272
|
-
**Example Response:**
|
|
1273
|
-
```json
|
|
1274
|
-
{
|
|
1275
|
-
"content": [
|
|
1276
|
-
{
|
|
1277
|
-
"type": "text",
|
|
1278
|
-
"text": "{\n \"original_amount\": 50250,\n \"converted_amount\": 50.25,\n \"conversion_type\": \"milliunits_to_dollars\"\n}"
|
|
1279
|
-
}
|
|
1280
|
-
]
|
|
1281
|
-
}
|
|
1282
|
-
```
|
|
1283
|
-
|
|
1284
1230
|
## Diagnostic Tools
|
|
1285
1231
|
|
|
1286
1232
|
These tools help inspect the server, environment, and performance. They do not modify YNAB data.
|
|
@@ -1549,24 +1495,23 @@ const recentTransactions = await mcpClient.callTool('list_transactions', {
|
|
|
1549
1495
|
});
|
|
1550
1496
|
```
|
|
1551
1497
|
|
|
1552
|
-
### 4. Amount
|
|
1498
|
+
### 4. Amount Handling
|
|
1553
1499
|
|
|
1554
|
-
|
|
1500
|
+
All amounts are automatically handled in dollars:
|
|
1555
1501
|
|
|
1556
1502
|
```javascript
|
|
1557
|
-
//
|
|
1558
|
-
const
|
|
1559
|
-
|
|
1560
|
-
to_milliunits: false
|
|
1561
|
-
});
|
|
1562
|
-
console.log(`Amount: $${dollarsResult.converted_amount}`); // Amount: $50.25
|
|
1503
|
+
// All returned amounts are in dollars - no conversion needed
|
|
1504
|
+
const accounts = await mcpClient.callTool('list_accounts', { budget_id: budgetId });
|
|
1505
|
+
console.log(`Balance: $${accounts.accounts[0].balance}`); // Balance: $1234.56
|
|
1563
1506
|
|
|
1564
|
-
//
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1507
|
+
// When creating transactions, provide amounts in dollars
|
|
1508
|
+
await mcpClient.callTool('create_transaction', {
|
|
1509
|
+
budget_id: budgetId,
|
|
1510
|
+
account_id: accountId,
|
|
1511
|
+
amount: -50.25, // Negative for outflows
|
|
1512
|
+
date: '2024-01-15',
|
|
1513
|
+
payee_name: 'Coffee Shop'
|
|
1568
1514
|
});
|
|
1569
|
-
// Use milliUnitsResult.converted_amount in transaction creation
|
|
1570
1515
|
```
|
|
1571
1516
|
|
|
1572
1517
|
### 5. Caching Strategies
|