{"_id":"@dizzlkheinz/ynab-mcpb","_rev":"41-f998ae64493c6d5957c05c05f146a968","name":"@dizzlkheinz/ynab-mcpb","dist-tags":{"latest":"0.28.0"},"versions":{"0.12.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.12.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.12.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"7efeac24d4e589f4b589fa3fef68f71b831f38b8","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.12.1.tgz","fileCount":435,"integrity":"sha512-AsvFzI2YCXS3hIbqZBS6HXPCCX5nz7mK4as3F4dBzs3CuB2Ig6ISSPYw1OPk+nbMbeaGL6T6ApoQpdfAwZuwjw==","signatures":[{"sig":"MEYCIQChz2ZhyA163Eg5j22cxAKheWN5YbO3mOEaB0G/ZHRGlgIhAM8UXtR4qwCbyQRxEMoEtQ8MsuemmLxsKK6Pi3OdAKhh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5783294},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"c13dc5a2a173b66cf28300a4c30c2efd055d99ba","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","csv-parse":"^6.1.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.12.1_1763672849102_0.7644572562680048","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.12.2","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.12.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"923ac1240d0e68d094b9be13f72e28b4b3cee2d2","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.12.2.tgz","fileCount":435,"integrity":"sha512-gFxjATsWHPnTV185PezAMUSEvvkzvE9cb9iK2T5YtRhtwhpjGoXwmoiDaQZq19/smgA/EJC2tItRVz9RgsP6CA==","signatures":[{"sig":"MEUCIQCIYMOJeEqb+4lYH1dwYgmRaa85ydHLYAHKCdKatQuD3gIgAI5t8czI3LziEz7eKpUtlGAC13AuivDQOgWKTKJvZBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5783268},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"37d294b85d09ea54012745e2f59c3eb8526aa1d5","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","csv-parse":"^6.1.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.12.2_1763673367770_0.6197150365931416","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.13.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.13.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"274b942a3277fa5ff5b0bb1c9fdc0761c5cee335","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.13.1.tgz","fileCount":451,"integrity":"sha512-zWbXTN3dvC8xPUsJbuGVUi4WTmoJM1Xkq7hsVxgNRaXfqIoGkxNVXdakE76W6g57kyXgCppstnokbVTSS42yJw==","signatures":[{"sig":"MEYCIQC9V1mnWFUffu8LdzFRsRZ0cfwX0BDtdZ+PI1J6HK4YCQIhAMDF82ZZmcLB5AFlarxkVq3eN2haIl67oGQFNfSOGGxu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5776553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"aa92591c02e98f80897b5bf220b10e1bc04b4835","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","csv-parse":"^6.1.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.13.1_1763776812737_0.16755068954301033","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.15.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.15.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"1027b487ba12f22910fba6bc180e49c350834514","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.15.0.tgz","fileCount":459,"integrity":"sha512-11GqFLxzlECPxyOPx9HlMZZSlMSJKf7jDNSRfJ6sOBGDnNR9LWqXn4NnziEo0KrAGxwVudyOCNzj/b/+pxg0pg==","signatures":[{"sig":"MEUCIHZ9mTt1zsxZL8FK2QyA7LdgppbNvPm7wkov1qHimRe4AiEAr7sZRWU6IHFW12nZNWm2P0GQSIQ29gccAkx5UUTLhNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16063143},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"379f4b8281e34865d074261daa4723c55f0d7327","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.15.0_1764527692134_0.059287506589300376","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.15.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.15.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"ac0e74391a08443b6dabcfac350b73e117c9c67e","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.15.1.tgz","fileCount":459,"integrity":"sha512-Cxdf5uprAFP3II6dH/SknyAY3t+Uy3FIyGxNY0XmKGD3Nh+2FVkPwlfteDnYb94+fy2ypRoGdG3poQmMSLxnaA==","signatures":[{"sig":"MEYCIQDOKK0i5jdeNHM13IGH4Pt1gT6DXI+9c4elQSdYhvyoPAIhAIY1MFaflvL4elz+cew7QMr6tXliCVDu2n4BaQo+Lz4r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16064176},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"237a1cc638c92caa285e65868b0f00cf1701e395","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.15.1_1764539978390_0.165453041828165","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.16.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.16.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"3d9d05f158bd48718d103d2b8b8106f1ea30b5be","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.16.0.tgz","fileCount":461,"integrity":"sha512-A1kTYo5C/6GIUFBFNRvoge9mgfYK3QvmAVq+q74OUOAkGtEMpsevJh3G1QvXjbv9ITzqjpYi3FJx8c6GmPpjXw==","signatures":[{"sig":"MEUCIQC8jgV/0UBa2rx9zYmZGFkCJgPjtq+SYWCmfF0eTgmHZwIgRoHj3GWeI79MXpnMZoma6sn3vK7NUFFxeVT8frBQKlg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16179999},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"bf8b154a11bf9338cab61289263693222c005235","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.16.0_1764608683748_0.6964072657725242","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.16.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.16.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"8128c81d660f1952cca06867b3bfb17a65d62965","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.16.1.tgz","fileCount":440,"integrity":"sha512-f/sGWpJ8YcEf0bIy3rXW5v46y9oOzkWxNOSWvE+MnM3sahjqByE3sVy8kyN9ftJECF4+IYCMH0rJo03NUD4L1Q==","signatures":[{"sig":"MEUCIC7D0RaMDj/Di43BvM9BEf1JiwZx5T9vbeLhBq5hbOeoAiEA+p2Mb1WyhoEZKfU9OblJHizWbWB9OFYUNtJdnD0WsC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15564313},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f54a918d5e53d32388fd1a46a6b95654b78a6adb","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.16.1_1765118867825_0.08415833189745081","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.17.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.17.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"a8c167bf266793af970a421ca8c07a6dd8878ca7","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.17.0.tgz","fileCount":465,"integrity":"sha512-Z6BCvsM8Hxaxn2tRlY4hEaDWFD8veCo6XxLAgRM1BQglq74/mun87G1fY5qhtL15ABKm9Zy00sLxSwhz6GY9Ow==","signatures":[{"sig":"MEYCIQDV2uss6uZUYD/0SfXnohiPCIcXepZWCfHkwWH9xM9ZgQIhAPT7FPCAqdhU7w+JMNNEWpdPJz4lmRkysfawm0hDC3uO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17831226},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"db4505ad8da15116102c43872b87435e4752640c","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"10.9.4","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.0.1","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.17.0_1765479025032_0.23243421628794803","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.17.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.17.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"f6e560e0d0428d688e4793e940ab3cb1933323c6","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.17.1.tgz","fileCount":361,"integrity":"sha512-BcV+6BjhTv2z7aUuWEfCDhmogQ07DE9kq7XTcDXS7ctGIokPblaKO0Eug/eSeKh7yV4Am98nYJCBWjQMoB10og==","signatures":[{"sig":"MEUCIQDYZPKlF4O7Hx37B7/xlnTdFpUl7Cgl6SFoyEl6iLpgNgIgBi5zBCnt1v+s760AV4mu5sxMOEc2MtGsa14621bms7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4788229},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"177dd31e64fad96497f74bc218c1e9f6576c29b4","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.17.1_1766254383361_0.1992662777863239","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.18.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.18.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"a5368a04a17ae08c2e492673ace5ebc0e5c0774e","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.18.0.tgz","fileCount":366,"integrity":"sha512-cO80FpHVp8luG29TwC+QSTGAQOBBXlLI30ykJuvhT+Mlu4t5T/soFftWJfsKUs40S8H3S14jwt/v7zounW+bHw==","signatures":[{"sig":"MEUCIAzMZO4WQJCGfVmxheBt10Ejvq6cFsx8pSWn3kFiK/OuAiEAwbj+jPclTwuaFHdNe/RVsjHyAjjoPxp1ToWFLUZHKUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4785298},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"29580737993461f2c614a3400657009ff228497b","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.18.0_1766331800010_0.012531924588137677","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.18.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.18.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"0e9258a4ace830322f614ab1b743e4094efe34c6","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.18.1.tgz","fileCount":366,"integrity":"sha512-21yq5O6JllCfWOxF78AzTIUnWjlamcSELJ/cTXhIx3+mWXUT4Q0rlj7rhqABDreZ36XuFFlavh2qLiX5W7wo6g==","signatures":[{"sig":"MEYCIQCdO8W7j5a4004UXkD89zhqAlayqdM16G2XojY3IPum1QIhAPJgW0EbRuyeP3VgP8zlrxef7t63XMztugrEy9HSOPhL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4783618},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f43e6ebf357d5400a1cd05dcc9759581f79e4421","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.18.1_1766425752495_0.335098150352112","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.18.2","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.18.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"59c3529739031d71a204c452a893fc2ee9be7c87","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.18.2.tgz","fileCount":367,"integrity":"sha512-OxGIRGbBMI0PRjWXJUjarDqIdUsBeYofE0ggLVndqW5O5UzkbNwc5IdPYzq4Jzwxyq7GCUFL6PEFCI2EDcpDMg==","signatures":[{"sig":"MEQCIAi+KLbJpRxKk/8cjWObjWj4bfrzbIL/E8YLEOnaQOuyAiBZaJLdOLU41JyKkYKHGQ0D5Vg7BAfg5fdPSW8izgoNuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4834501},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f2c326b00ab54c086d0d3b95475dc39efe9b94a3","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.18.2_1766595992332_0.5971831028582781","host":"s3://npm-registry-packages-npm-production"}},"0.18.3":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.18.3","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.18.3","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"64b33e4d7008c5bd9964c74e6107c1a263298f1f","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.18.3.tgz","fileCount":367,"integrity":"sha512-PeluPPu1+iR8OCaaAGjrP98RFW8IXgFYfUAXgQjWJyQ9D62xF889Jf8MP7Bg+PcOHObChgzabfn0Br3dUjw75A==","signatures":[{"sig":"MEYCIQDpZ74v5iBbXj8hK5I0Qr0rN7mUP5tOhzhOEQYgDQYqqwIhAPvCpDYm9Em9gaMUvdEHMMyEUOGDN4aLdW2U4zUn1eYr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.18.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4841149},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"04f089ac85e6513e3d9e6107a9cd6b76aec5ae4d","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.18.3_1766689795934_0.6034888834820431","host":"s3://npm-registry-packages-npm-production"}},"0.18.4":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.18.4","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.18.4","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"7011d4ed7f21af191298ebc274b6e78362f49b82","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.18.4.tgz","fileCount":378,"integrity":"sha512-uMoj22MCqii86F2OHHgBGdkWMLZ4O4v0aOT+XwQnvbp1D1e3u1njAeGZMQdze7HTMMXlYbXmY8BKuv19pSLEkQ==","signatures":[{"sig":"MEUCIQCTp1AUscchrrP8I+GbK76UUsI6fpEkigftV1uDHA5JKQIgCwYAw9iUaYI4E+TMUun0rTHOlkFIz50jNJbh6mmtMqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.18.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4980197},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ab998c004293beb19d82da6013b626fa01322f98","scripts":{"dev":"tsc --watch","lint":"npm run lint:eslint && npm run format:check","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"prettier --log-level silent --write .","prepare":"npm run build:prod","lint:fix":"eslint src --ext .ts --fix && prettier --log-level silent --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","lint:eslint":"eslint src --ext .ts","format:check":"prettier --log-level silent --check .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dayjs":"^1.11.19","dotenv":"^17.2.1","d3-array":"^3.2.4","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.35.0","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.3.3","@eslint/js":"^9.35.0","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@types/d3-array":"^3.2.1","@types/papaparse":"^5.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.18.4_1766859312396_0.4116420949857955","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.19.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.19.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"a7a4095ad1a9a1b635b796f330381b5aaaa960fc","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.19.0.tgz","fileCount":388,"integrity":"sha512-SHqJ2PB0NozeeAVAOKu1+wSfbADuoKY5VAXO0d1lRcAZItCJ9uYKN3oUKoZmY8fOWJIyNfhgriJXrX+jGSdP4g==","signatures":[{"sig":"MEQCICi8+RQWgRXJaDHnOj9jyCJVbGolYfKIACC5lpFfhdI8AiAIBA/QMn5S+Y2AEaCTpvckLmjTlsfz9JOo4NqU4lXxuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4906965},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"a11878cb24b31e1ea18fa20982f458cacfa52653","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dotenv":"^17.2.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@biomejs/biome":"^1.9.4","@types/papaparse":"^5.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.19.0_1769977045568_0.9716242226107104","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.20.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.20.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"175a18b8f90948619df57a61f7810db4dd8bae5f","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.20.0.tgz","fileCount":388,"integrity":"sha512-pfMIna1xgZ3lbP9UiuKfuddFI1iqrTCmpDQ6mFJIOBudBw+7+DOMGeBayjJuwRIqiCbSBM8n7xdDu8W8gsVv0w==","signatures":[{"sig":"MEUCIHtfgSlNdZU88jz2ak6UKL7qBR1/NY/LquaQ8ua/+UzKAiEAoh8ufkvp+AVLxqE47hajihO1jBfgK3npTaqsg9qGKMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4909117},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"72d5433bf34389ceadeb9e0ba1dc4c872e33669b","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.1.11","ynab":"^2.9.0","dotenv":"^17.2.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","rimraf":"^6.1.2","vitest":"^3.2.4","esbuild":"^0.25.10","@vitest/ui":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.5.2","@biomejs/biome":"^1.9.4","@types/papaparse":"^5.5.0","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.20.0_1769996847104_0.7529712240702979","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.20.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.20.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"a0f5701a4bbdca2fa2839ec2485f585599f3d41b","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.20.1.tgz","fileCount":388,"integrity":"sha512-XiyK4A1PyE5Zyp1a3ktvRXJa+GMvYerGNAnz0hiLGXt5kdxUNeP6Cu9V49Vs2goxIJaSk5rXmOyZW8qZ4FEBDg==","signatures":[{"sig":"MEYCIQCFqwSw+XoMtkJF4F0ZsV8bbb9NTvRnKVVYTNGlsm9CdgIhAKepqJPdcheEIsBKh/mzD5qTWfJT5EJcdF3fPvXVDt5t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4948333},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ac452236e3f3b9f2e35720aea0272c6778144dd9","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.9.0","dotenv":"^17.2.3","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.2","vitest":"^4.0.18","esbuild":"^0.27.2","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.0","@biomejs/biome":"^2.3.13","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.20.1_1769997707291_0.017027759529215203","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.21.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.21.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"99782bb00213e475c38087e07af855cecd6f1e6d","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.21.0.tgz","fileCount":388,"integrity":"sha512-j3IQnucOAg8c6EjTY0KaXqxFa26AMVsMaMRFc/aKCApR5lyxUVwvj/h5vEkldraqiyCWblbKCHCjv8qGcTMjDQ==","signatures":[{"sig":"MEUCICDe0KACELNrP7xF9zsD4K6zZzjyPb9Rialzr2RzzhUOAiEA3J9LRZa7sI3PLPXxay/teipPqGoKMDvPqtTILoOFAPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4990178},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"322cdb8b3fd39bcbdc678261a0a82450cafb5a98","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.9.0","dotenv":"^17.2.3","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.2","vitest":"^4.0.18","esbuild":"^0.27.2","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.0","@biomejs/biome":"^2.3.13","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.21.0_1770014171291_0.08124906899059847","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.21.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.21.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"676788b81eae40305fd10006a4d6d1b01d36b648","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.21.1.tgz","fileCount":388,"integrity":"sha512-7JbHecQGVt/btnw+xfjdElReArTEo5HGsropxz7IFEgQBKyZCWfaT/oG/KwIOv4Dn1IF/au+fBhM7XIuHhuNrA==","signatures":[{"sig":"MEUCIQDi0WPssvsih0xo5hAGXy+RLUmhBzW4kUYSfhwOEEOFpgIgGCpsF+efyvNBLXdFgl/NF23VpI4Wezg0sGJiHVCJc8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4966094},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e4954552d0b24d6f1959dbbdd629400a45cfdadc","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.9.0","dotenv":"^17.2.3","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.2","vitest":"^4.0.18","esbuild":"^0.27.2","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.0","@biomejs/biome":"^2.3.13","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.21.1_1770220266694_0.3232038343581085","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.21.2","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.21.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"39174dd983ea12b6ecb162f7535581334442af0e","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.21.2.tgz","fileCount":391,"integrity":"sha512-s3AlfCtkyZFmLAdAfRFNW/Oeu/KsrvygL1FF5wu0oMdRuvGVBctu0aAhWFSGRQHMR7opySHM2RRPTNLcCpKuDQ==","signatures":[{"sig":"MEUCIQCZzSBFaGj4qHUUMXRpJ0lSABO95mN8/tQWtx2ZnzeOrgIgAgl7mx8W0owVlmsjBDuyf9efRguZf7+NolnSWj7VZ0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11585200},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"c981796764d804e0af55229513ff811aa2522951","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.9.0","dotenv":"^17.2.3","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.2","vitest":"^4.0.18","esbuild":"^0.27.2","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.0","@biomejs/biome":"^2.3.13","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.21.2_1770389740459_0.16821422593594182","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.22.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.22.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"d371e1b17fe5be9087027afcc2c27d3b3f7b86db","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.22.0.tgz","fileCount":402,"integrity":"sha512-2Xm1Is+zQPLwo6yT9NnC+gqSCs/M45nJX+oKIluyhie05h189mzht7sTD9sF9q2ryKUeU/g12WxXILSzrAcRJg==","signatures":[{"sig":"MEYCIQDDfK4+W57HCswg1Pa4Rbn06SpQHJgDGO+4ytArOjnWRAIhAI4IytAGGSin1+WCIG7IqTUartgGMV7bxfbH8ZnHTbBa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11623742},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b0a716b1f4e080be4ab98b532e7c51114397032f","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.10.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.22.0_1771708048712_0.4757650343877","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.23.0","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.23.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"3afd16887a4b828a1f8330b53af053d39408f377","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.23.0.tgz","fileCount":405,"integrity":"sha512-HbGaCVs0m8GJy91GZDV6fntvpNUlXeCj8PmUPiQrISXihdirgvVLXmyAimSpHCEjg4X5ZmpIFuq35EOqgq1oCQ==","signatures":[{"sig":"MEQCIEgee+hcIQuZIPa1bNc8slXOXB1GEvh5FLX0N6WXUua4AiASQpdEfUSgR88FDDzPNjzPAcCBJ5Msvlj7v5a64fJuuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11767726},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9cb01d4d7ea7fb1557fbba13e187954ce00575cf","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.10.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.23.0_1771776286858_0.29454378735851217","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.24.0","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.24.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"0eb1bf0cafea3fe12272240101b28c0e67adafd8","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.24.0.tgz","fileCount":405,"integrity":"sha512-DHzW8hBjncRNnhj8F98fGElgTVRlWce8QFth8K76QQwz0CJOGI5WgNH3J0bOEIAWFOskESMs6D9h+ZQrftv1EA==","signatures":[{"sig":"MEYCIQD2EsyfLwukS3oSM/d+wX5v8I4DNhZV4bA/fJM65DotUQIhAOuWl6zTdRd02Q0qEE1EBX7XjhZkHPnAQIn/iEmDEXwC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11773194},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d6e031e75a4214c5197a2bd1da3a2754dd1e6848","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.3.6","ynab":"^2.10.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.24.0_1771798402754_0.9114957144859479","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.24.1","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.24.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"57a7cd979b4e909d77c71bf36f3dc6787d91cfa8","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.24.1.tgz","fileCount":413,"integrity":"sha512-7b/9nl5PGM19MNG9NOg91QOSn1mx1DhD7lJtPHQSzyVPjyiF3Xt1jxu3KNwUu6E/HCRwLCGKEcXgoZI3PPF8Cw==","signatures":[{"sig":"MEUCICHHPeByAoTNiHIbTt9cPkdzZ10GhdU+jWzP0MIYQ8XlAiEAhJqttkNkHkSvjPSbfV3353cfRIbSGoHA+f4y3tezFrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11815096},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d6df6b6f2028e1d018573d242ab487f8d461015a","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^2.10.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"1.27.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.24.1_1774810288720_0.04719575087266814","host":"s3://npm-registry-packages-npm-production"}},"0.24.2":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.24.2","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.24.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"17cd19c06dec7d4a4de1d1081a544b54205c575a","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.24.2.tgz","fileCount":413,"integrity":"sha512-YrOD9HWE3SvOWIZb1nqajHmH9na+Gn0nJnJcODEE2ZxE37yKmot8MQIwLR/uHd/8DfhuQC37dPimpECEKaRf3A==","signatures":[{"sig":"MEUCIA4e8NWZoUeYx4uZNjGFnMifDSk2qJ0p/fLndzLfDzlfAiEAkhFu9DjGQcpt/fUas/saHftsVw08X+8cxMqNUS6fX6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.24.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11809524},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"2eba55114d220b2f157ca78e1762f241a0921530","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^2.10.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.24.2_1774810673650_0.20960539374089016","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.25.0","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.25.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"38a51e96de6bbbe04902925c91ffe227f80b9d8b","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.25.0.tgz","fileCount":413,"integrity":"sha512-YN8yQZ+YaEUjTZUN0kWDtTpFBre6bJHdr2VUgFG4xGFA9cUNeu0pwsf4ySj5wYMqSMkyPweFFNY1fFGFfvVpxQ==","signatures":[{"sig":"MEYCIQDBf/KLlyvmSI88oua4JjRb8mhkWG7zrJxDMmxF0GHIDQIhAIBHlRCbTd1FRFad1xnkhA+FtBIBSpYJfAClrQdQ6pzf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11812292},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"c2d68d88dc1e4d807620c9d4854ecd323fa65e03","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.25.0_1774812114975_0.6362987304325143","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.0","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"d7c0168cfa2507a46768ff698d1046b5150564f0","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.0.tgz","fileCount":414,"integrity":"sha512-WIimpj01ezOdsj5sNreS9px8CF15b2tniVatpoOW9xpBU7Ugmja6A/nRj6i/3Do80WgCaI4nenmrBZ1Y5NI3BA==","signatures":[{"sig":"MEUCIC0US5U8n7H6xdtiSV/sEV3kwRGlF/Uu9gzugE1jhlSnAiEA/w4Tk3YfImE1NSir5m2ANV05JOLCYB1v6J+/3nEPouM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11849700},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"a9a4ac381e9f0ae9c559a30765ccbdadf2b8665a","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.0_1775022963677_0.362797073344608","host":"s3://npm-registry-packages-npm-production"}},"0.26.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.1","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"f54524b103e4f54c8981de57b7736d785530c54b","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.1.tgz","fileCount":414,"integrity":"sha512-EZgTQsG/OPV/5gFHZ0MrPj0z6JjjsDiLrpTBgTFYjCtr00qZwQnKxizvgUhkRkjLwxnt/GnWy/PVCiHoSOsSrA==","signatures":[{"sig":"MEUCIQCk+tgSK9ExgdK64wS1EnfA6m5sN8sQAxGgWFhuQjY1gwIgdxUgxTnRa0CgcNDNap7EjUqlCzPGzEPkqfCd63gYIxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11868648},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e436422cd027b776ff390b802c265790f458b774","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.1_1775091273014_0.3517855103069456","host":"s3://npm-registry-packages-npm-production"}},"0.26.2":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.2","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"e19e338057757a95b533cb9c3157d5b16a151f83","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.2.tgz","fileCount":414,"integrity":"sha512-NX6IkMxBGH0+YpGcpvrZbbfcryi9xsOqM6cZtnGJCvUfWBW8vw1Wff7eCeiWVnZxtwJtLHhYzw65B+iXN24ARg==","signatures":[{"sig":"MEYCIQCmxigo5Obegv2plFufFIrsW17J3tBw1yNeIkyAbqxUwwIhANMycHKkZdlo6gEyqV1sonB1glSnDEvOzqyojEF+i9sR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11869223},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"5a38f30f00e7e9d5ee52546b719dabbea8dd436e","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.2_1775091897148_0.8964445753505026","host":"s3://npm-registry-packages-npm-production"}},"0.26.3":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.3","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.3","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"d90c435703c5bab8f6fd2a86a5e7f2191113e485","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.3.tgz","fileCount":414,"integrity":"sha512-GDnaeDhcZ3qaoBNNBXLzbuBGiBG6hNd/UcW4eEJlZvc9PYhqAbkb9zjyYcomQ8uMc/C6UfuexWozaatuR7gobA==","signatures":[{"sig":"MEUCIQCxx6UJOY6+yzjuDXIvhH9V7QcdfbD9f/nI/VWsPCdIWQIgWujgJZwLJ0QX2A6VDajB9oSLN/YmSc4IMYplYbtlJFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11874078},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"d12748a07cae7e798ca9697f8ea499fa86144a62","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.3_1775092266129_0.47354519858243505","host":"s3://npm-registry-packages-npm-production"}},"0.26.4":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.4","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.4","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"d5dd39eb508d2889d7f2a4111f09d0f637bdaa59","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.4.tgz","fileCount":414,"integrity":"sha512-ofcWwp0RIZwR8gw7cpBnGCjOJYXO7sXtt2KN2SKJQc5p5xrZ6IrShPLX6M/02rm92Ur19OcEWLplKSZofvTZtw==","signatures":[{"sig":"MEUCIQDX3CBwxWXVIgIoY+MHg1XK6v18gxJVnZp57W62hlhYOwIgZsVrkU+XREVuvTMJw/Npp21M0ISgGhgFN9TrFXP2Hmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11828832},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"7d774105fb11667da21c3978dbd4de00ec63d446","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.9.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.4_1775172832379_0.28554810892953775","host":"s3://npm-registry-packages-npm-production"}},"0.26.5":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.5","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.5","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"6bb403d05f67680f89a080817900a3d245ebd347","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.5.tgz","fileCount":417,"integrity":"sha512-UbHowC5Klv+lL3CIz4YVOHszVafJjMHzF4591K4It57Cxgh+SkVSe3/GIf5NyOIzk70qZCSCUES+JJDnpv3IDQ==","signatures":[{"sig":"MEUCICa+yVnEWrGqHI/fegP8g23REXzGyldDq3mqEtzy+wBgAiEAkOyeACZsOG1EyGFZVN5x4vY1FG+uNk/i4QoFcKHmoCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11837491},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"df10b74ae84ea76e7c4133711b2d31d13d2f3a36","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.5_1775243883511_0.3892168947597878","host":"s3://npm-registry-packages-npm-production"}},"0.26.6":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.6","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.6","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"e5a4e7a7ba78af1b6be00d0bd15ef150d95c62e3","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.6.tgz","fileCount":417,"integrity":"sha512-JTevb02SfWez2cGpA+T5AH6fyYFHemEvc447o9+qu06r7nYNGtjOseLEiq8q9xFN8v2imSNWLYiL2r0TwqjrCw==","signatures":[{"sig":"MEUCICURvrAJmr178e4KwswXR4BVpSQWQWpfw6kzdS4eTeILAiEAzUvDhkGXFTtOFQoo3waAxlt/nd5g1NziAN+hNlHPHgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11847495},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"f427af2953136e364c66ee753689000458c6b66f","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.6_1775251676534_0.418091530961475","host":"s3://npm-registry-packages-npm-production"}},"0.26.7":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.7","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.7","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"ce603189888a86c120ba4d98334a3e8790dcef92","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.7.tgz","fileCount":417,"integrity":"sha512-wBln0wlAzPCMXgjyJ6F67bNiKji9zXdkd88K+elEzBa7BgMHwz2iSyhpFa2bs3ub7pDdlZ+YU/bOM0yjDraFJg==","signatures":[{"sig":"MEQCIBRFi7v1kq9WntWHsZV1EeaCNvRgajzzyhC6TrH/nY5gAiAezfxfgJZolR5vVLdR8ztzc8VC4bVyXkWQYWWUOhvHbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11852786},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"8bf052a65cd9f741dde78aa255f103810c5252a0","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.27.3","@vitest/ui":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.7_1775276070756_0.23178782603816117","host":"s3://npm-registry-packages-npm-production"}},"0.26.8":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.8","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.8","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"85b20d96c82ce1a5980e98225b9b4239cb84b4c6","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.8.tgz","fileCount":420,"integrity":"sha512-pW+plOZv/ESYFF3JM9Sn2Feu/u7df5HpdGE/qFTkGO21MsXXt37ZGQCWk5dTRPpKK6lsbCC/RzSE1ELT7cmffg==","signatures":[{"sig":"MEQCIBLkZrozF1eC6urSKYhabVnf5IVDNqBDrIBZA12DnsOMAiBHZQguQS7XFEQK/5pUYNcticnIW5dqzxjtDrduWTuvnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11849760},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"a85f3002901f44dea85fda9fbb80ae64cbe832e1","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.28.0","@vitest/ui":"^4.0.18","typescript":"^6.0.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.8_1778390604172_0.05742691324124416","host":"s3://npm-registry-packages-npm-production"}},"0.26.9":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.9","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.9","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"b7567990419a1b6278ea3a41a0768cef65550ad0","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.9.tgz","fileCount":423,"integrity":"sha512-nQednvM/vZ5Vi8wa24v+E6kZbR54sq4IjrT14KbDCocvyKEDQA1XBhDvSP5TFbTYiPGAAfLP1xFkN69Qi2B47g==","signatures":[{"sig":"MEUCIQDCpjJYKbnSS42zgteHP7BFk5tokpvuSkadHy+7Xji0qgIgNVxmZ1Zs26oNCVcTyIt6ffQFznm9bH3h/wlcezBvRok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11874630},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"e370dccf1a57da552ef41b6510942f7d16f26a4e","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.28.0","@vitest/ui":"^4.0.18","typescript":"^6.0.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.9_1778453582221_0.9415970627449572","host":"s3://npm-registry-packages-npm-production"}},"0.26.10":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.10","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.10","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"331850bd58f096bfeb024ae4cc9a238a881d7cc1","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.10.tgz","fileCount":423,"integrity":"sha512-pkUQFtVRPhAjfK0APDCdA6wY3y8mAsBc60pn/KQAgAPgN6iWBD27NmxIa3wym6pitiMUl1Ib7h82a4znlJn4KQ==","signatures":[{"sig":"MEYCIQDWSZGK0Exc7lV1Fc+4W3L7euWe/hmSfrDIHz/DrQSbZQIhAM1GX8Hi3M6ygh7T11iZ4GzkOPxD/T8SaGtUZi5D0IJI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11874954},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"09044914010205e570f040157b1983f37d99abd0","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.12.1","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","ynab":"^4.0.0","dotenv":"^17.3.1","date-fns":"^4.1.0","fuzzball":"^2.2.3","csv-parse":"^6.1.0","papaparse":"^5.5.3","chrono-node":"^2.9.0","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","rimraf":"^6.1.3","vitest":"^4.0.18","esbuild":"^0.28.0","@vitest/ui":"^4.0.18","typescript":"^6.0.3","@types/node":"^25.3.0","@biomejs/biome":"^2.4.4","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.10_1779502726061_0.028889163865593703","host":"s3://npm-registry-packages-npm-production"}},"0.26.11":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.26.11","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.26.11","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"4902d18a8ae6937da110ae9e738a2c9959706001","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.26.11.tgz","fileCount":423,"integrity":"sha512-CaYiTPU/NL/FtCK848vSEwuYNDjk17eiOv4nyJvhulsQCiP2+TVo49xxEzJrrNbnD461Mnmw/tpE0vBl1KcPsQ==","signatures":[{"sig":"MEUCIQDMUeFaUrGdWS5FUUXiwH/QjTq6VIVyAFA6yApSEfrNAgIgDSdvn3vcdrHHjSOpvzsxKC/T2Oi0tBZPMkFt2Y2TpGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.26.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11879564},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"2244beefdc22de126d3e0013a14a510fe8afa52f","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","prebuild":"npm run clean","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run lint:fix && npm run prebuild && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run build:prod","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","ynab":"^4.5.0","dotenv":"^17.4.2","date-fns":"^4.4.0","fuzzball":"^2.2.6","csv-parse":"^7.0.1","papaparse":"^5.5.4","chrono-node":"^2.9.1","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","rimraf":"^6.1.3","vitest":"^4.1.10","esbuild":"^0.28.1","@vitest/ui":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@biomejs/biome":"^2.5.3","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.26.11_1783641557351_0.3547065996430492","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.27.0","keywords":["mcp","ynab","budget","finance","reconciliation","receipts","spending-analysis"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.27.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"d3825e18ec9567f92761c7892eec80d499e56df7","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.27.0.tgz","fileCount":454,"integrity":"sha512-As+lxm6maxgAwS9dMIa8hHrFr8EKZUZhxa+UkVhKPj5ooSX5ZNAodv1Fh5X62MrRklgOOJcNo9Xstc/B2tcZmw==","signatures":[{"sig":"MEUCICee5RftTFznAduLicb6nVtYJ9z4dg+BhfUjaqP1zvWsAiEA51dp2rWf1SlD+/0sijL5eLGzZ3lcNwuC/eCxUftM8js=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12113244},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"26a8baeb8e63570fd939822853b52f80d49aec59","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run clean && npm run lint && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build && npm run verify:metadata","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","measure:tools":"tsx scripts/measure-tool-profiles.ts","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run verify:metadata","verify:metadata":"tsx scripts/verify-metadata.ts","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first YNAB MCP workflows for reconciliation, receipt splitting, safe bulk cleanup, scheduled transactions, and spending analysis","directories":{"doc":"docs"},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","ynab":"^4.5.0","dotenv":"^17.4.2","date-fns":"^4.4.0","fuzzball":"^2.2.6","csv-parse":"^7.0.1","papaparse":"^5.5.4","chrono-node":"^2.9.1","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","rimraf":"^6.1.3","vitest":"^4.1.10","esbuild":"^0.28.1","@vitest/ui":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@biomejs/biome":"^2.5.3","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.27.0_1783701188727_0.8320809189384362","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.27.1","keywords":["mcp","ynab","budget","finance","reconciliation","receipts","spending-analysis"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcpb@0.27.1","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"0dad51c044eb09e93e07f2a7c78168bbae3c8ea0","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.27.1.tgz","fileCount":454,"integrity":"sha512-a4zVfFhktMod7SuF5fWH+qUiYAd0MqpsqW5YWQgCYleP6mW2Gq54Uyp8m+x8F7MslYYqtT88oiyN3XkL2Abbzw==","signatures":[{"sig":"MEUCIQDq9nmYtoUuAzPJOOGI5+GO6rz0wkhRPdRMUYnKynTCpwIgCVaPYnJ1pUk099Dn1Hyil3/C78T6YJtlF7RNTwGil/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12113506},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3a7876ebbdc3716fe5c8da5b264fee57af4e15b2","mcpName":"io.github.dizzlkheinz/ynab-mcpb","scripts":{"dev":"tsc --watch","lint":"biome lint .","test":"vitest run --project unit && npm run filter-test-results","build":"npm run build:prod","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"node esbuild.config.mjs","format":"biome format --write .","prepare":"npm run build:prod","lint:fix":"biome check --write .","test:all":"node scripts/run-all-tests.js","test:e2e":"vitest run --project e2e","build:dev":"npm run clean && tsc && npm run bundle","postbuild":"node scripts/run-generate-mcpb.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","start:mcp":"node dist/index.js","test:unit":"vitest run --project unit","build:prod":"npm run clean && npm run lint && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build && npm run verify:metadata","start:prod":"NODE_ENV=production node dist/index.js","test:watch":"vitest","type-check":"tsc --noEmit","bundle:prod":"node esbuild.config.mjs --production","format:check":"biome format .","package:mcpb":"npm run build:prod && npm run generate:mcpb","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle:prod","generate:mcpb":"node scripts/run-generate-mcpb.js","measure:tools":"tsx scripts/measure-tool-profiles.ts","test:all:full":"node scripts/run-all-tests.js --full","test:coverage":"vitest run --coverage --project unit","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:unit && npm run verify:metadata","verify:metadata":"tsx scripts/verify-metadata.ts","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","test:integration":"npm run test:integration:core","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","test:integration:core":"vitest run --project integration:core","test:integration:full":"node scripts/run-throttled-integration-tests.js","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:domain":"vitest run --project integration:domain","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"_npmVersion":"11.16.0","description":"Local-first YNAB MCP workflows for reconciliation, receipt splitting, safe bulk cleanup, scheduled transactions, and spending analysis","directories":{"doc":"docs"},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","ynab":"^4.5.0","dotenv":"^17.4.2","date-fns":"^4.4.0","fuzzball":"^2.2.6","csv-parse":"^7.0.1","papaparse":"^5.5.4","chrono-node":"^2.9.1","zod-validation-error":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","rimraf":"^6.1.3","vitest":"^4.1.10","esbuild":"^0.28.1","@vitest/ui":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@biomejs/biome":"^2.5.3","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/ynab-mcpb_0.27.1_1783701733255_0.8661160019670398","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@dizzlkheinz/ynab-mcpb","version":"0.28.0","mcpName":"io.github.dizzlkheinz/ynab-mcpb","description":"Local-first YNAB MCP workflows for reconciliation, receipt splitting, safe bulk cleanup, scheduled transactions, and spending analysis","main":"dist/index.js","type":"module","bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"scripts":{"build":"npm run build:prod","postbuild":"node scripts/run-generate-mcpb.js","build:dev":"npm run clean && tsc && npm run bundle","build:no-lint":"npm run clean && tsc && npm run bundle:prod","build:prod":"npm run clean && npm run lint && tsc --project tsconfig.prod.json && npm run bundle:prod && npm run verify-build && npm run verify:metadata","clean":"rimraf dist","dev":"tsc --watch","start":"node -r dotenv/config dist/index.js","start:prod":"NODE_ENV=production node dist/index.js","start:mcp":"node dist/index.js","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","verify:metadata":"tsx scripts/verify-metadata.ts","measure:tools":"tsx scripts/measure-tool-profiles.ts","lint":"biome lint .","lint:fix":"biome check --write .","format":"biome format --write .","format:check":"biome format .","type-check":"tsc --noEmit","test":"vitest run --project unit && npm run filter-test-results","test:watch":"vitest","test:unit":"vitest run --project unit","test:integration":"npm run test:integration:core","test:integration:core":"vitest run --project integration:core","test:integration:domain":"vitest run --project integration:domain","test:integration:full":"node scripts/run-mocked-integration-tests.js","test:integration:live":"node scripts/run-live-integration-smoke.js","test:integration:budgets":"node scripts/run-domain-integration-tests.js budgets","test:integration:accounts":"node scripts/run-domain-integration-tests.js accounts","test:integration:transactions":"node scripts/run-domain-integration-tests.js transactions","test:integration:categories":"node scripts/run-domain-integration-tests.js categories","test:integration:payees":"node scripts/run-domain-integration-tests.js payees","test:integration:months":"node scripts/run-domain-integration-tests.js months","test:integration:delta":"node scripts/run-domain-integration-tests.js delta","test:integration:reconciliation":"node scripts/run-domain-integration-tests.js reconciliation","test:e2e":"vitest run --project e2e","test:coverage":"vitest run --coverage --project unit","test:performance":"vitest run src/__tests__/performance.test.ts","test:comprehensive":"tsx src/__tests__/testRunner.ts","test:all":"node scripts/run-all-tests.js","test:all:full":"node scripts/run-all-tests.js --full","test:all:verbose":"npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance","filter-test-results":"node -e \"const fs = require('fs'); try { const results = JSON.parse(fs.readFileSync('test-results.json', 'utf-8')); if (!results.quickStats || !results.quickStats.success) { console.warn('Tests failed. See test-results/failed-tests.json for details.'); } } catch (e) { console.warn('Could not read test results:', e.message); }\"","generate:mcpb":"node scripts/run-generate-mcpb.js","bundle":"node esbuild.config.mjs","bundle:prod":"node esbuild.config.mjs --production","package:mcpb":"npm run build:prod && npm run generate:mcpb","pr:description":"node scripts/create-pr-description.js","pr:create":"npm run pr:description && gh pr create --body-file .pr-description.md","prepare":"npm run build:prod","prepublishOnly":"npm run test:unit && npm run verify:metadata"},"keywords":["mcp","ynab","budget","finance","reconciliation","receipts","spending-analysis"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","engines":{"node":">=24.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","chrono-node":"^2.10.1","csv-parse":"^7.0.1","date-fns":"^4.4.0","dotenv":"^17.4.2","fuzzball":"^2.2.6","papaparse":"^5.5.4","ynab":"^4.5.0","zod":"^4.4.3","zod-validation-error":"^5.0.0"},"devDependencies":{"@biomejs/biome":"^2.5.6","@types/node":"^24.13.3","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.1.10","@vitest/ui":"^4.1.10","esbuild":"^0.28.1","rimraf":"^6.1.3","tsx":"^4.23.1","typescript":"^7.0.2","vitest":"^4.1.10"},"directories":{"doc":"docs"},"repository":{"type":"git","url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git"},"types":"./dist/index.d.ts","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","gitHead":"d44d59d7c9f8c600d91f44d7c890716ea41f229b","_id":"@dizzlkheinz/ynab-mcpb@0.28.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-UL8g744Y2ZndCphDg6cYRyrf5piGqRwEKoLGEIz1k3hA4dFAwpzKiedWvhbEDcoG+9/+l7/hwA/OfCXU4bPrVw==","shasum":"eb1da2ea1a66f9472f84657819227073599cc3ba","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcpb/-/ynab-mcpb-0.28.0.tgz","fileCount":456,"unpackedSize":12086148,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcpb@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCp6LyhUDVCmDzg9NY948VQq8QAOnftbAGbp8VsVtb8jwIhAP7729vLQ5WV7NOc2vkqWRLm4AP4JyFdphZGGcKOmnd8"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0ad724d7-e3b8-481f-80f4-fffaa83ff706"}},"maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ynab-mcpb_0.28.0_1785343542065_0.9816582722739717"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-20T21:07:28.997Z","modified":"2026-07-29T16:45:42.717Z","0.12.1":"2025-11-20T21:07:29.361Z","0.12.2":"2025-11-20T21:16:08.014Z","0.13.1":"2025-11-22T02:00:13.064Z","0.15.0":"2025-11-30T18:34:52.382Z","0.15.1":"2025-11-30T21:59:38.635Z","0.16.0":"2025-12-01T17:04:43.964Z","0.16.1":"2025-12-07T14:47:48.047Z","0.17.0":"2025-12-11T18:50:25.249Z","0.17.1":"2025-12-20T18:13:03.570Z","0.18.0":"2025-12-21T15:43:20.187Z","0.18.1":"2025-12-22T17:49:12.712Z","0.18.2":"2025-12-24T17:06:32.535Z","0.18.3":"2025-12-25T19:09:56.142Z","0.18.4":"2025-12-27T18:15:12.606Z","0.19.0":"2026-02-01T20:17:25.794Z","0.20.0":"2026-02-02T01:47:27.330Z","0.20.1":"2026-02-02T02:01:47.542Z","0.21.0":"2026-02-02T06:36:11.524Z","0.21.1":"2026-02-04T15:51:06.867Z","0.21.2":"2026-02-06T14:55:40.863Z","0.22.0":"2026-02-21T21:07:29.161Z","0.23.0":"2026-02-22T16:04:47.246Z","0.24.0":"2026-02-22T22:13:23.175Z","0.24.1":"2026-03-29T18:51:29.097Z","0.24.2":"2026-03-29T18:57:54.155Z","0.25.0":"2026-03-29T19:21:55.329Z","0.26.0":"2026-04-01T05:56:04.164Z","0.26.1":"2026-04-02T00:54:33.412Z","0.26.2":"2026-04-02T01:04:57.693Z","0.26.3":"2026-04-02T01:11:06.539Z","0.26.4":"2026-04-02T23:33:53.283Z","0.26.5":"2026-04-03T19:18:03.942Z","0.26.6":"2026-04-03T21:27:56.924Z","0.26.7":"2026-04-04T04:14:31.116Z","0.26.8":"2026-05-10T05:23:24.503Z","0.26.9":"2026-05-10T22:53:02.706Z","0.26.10":"2026-05-23T02:18:46.374Z","0.26.11":"2026-07-09T23:59:17.679Z","0.27.0":"2026-07-10T16:33:09.000Z","0.27.1":"2026-07-10T16:42:13.616Z","0.28.0":"2026-07-29T16:45:42.393Z"},"bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","keywords":["mcp","ynab","budget","finance","reconciliation","receipts","spending-analysis"],"repository":{"type":"git","url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git"},"description":"Local-first YNAB MCP workflows for reconciliation, receipt splitting, safe bulk cleanup, scheduled transactions, and spending analysis","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"readme":"<div align=\"center\">\n\n# YNAB MCP Server\n\n**Connect YNAB to any AI assistant. Manage your budget in plain English.**\n\n[![Download MCPB](https://img.shields.io/badge/Download-MCPB-2563EB?style=for-the-badge&logo=github&logoColor=white)](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)\n[![npm](https://img.shields.io/npm/v/@dizzlkheinz/ynab-mcpb.svg?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcpb)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue?style=for-the-badge)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-24%2B-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org)\n\n</div>\n\n---\n\n## Demo\n\n<div align=\"center\">\n  <img src=\"docs/assets/demo/receipt-itemization-demo-lite.gif\" alt=\"Receipt itemization demo\" width=\"820\" />\n  <br/>\n  <sub>Paste a receipt &rarr; itemized split transaction in seconds</sub>\n</div>\n\n---\n\n## What you can do\n\n| Workflow | Example prompt |\n|---|---|\n| Receipt split | \"Create a split transaction for this receipt and allocate tax.\" |\n| Bank reconciliation | \"Reconcile my checking account using this CSV.\" |\n| Spending analysis | \"What did I spend on takeout this month?\" |\n| Scheduled cash flow | \"What scheduled bills and income are due this month?\" |\n| Transaction creation | \"Create a transaction: $42.18 at Trader Joe's yesterday.\" |\n| Month overview | \"Show my budget summary for January.\" |\n\n---\n\n## How it works\n\n```mermaid\ngraph LR\n    U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]\n    C -->|MCP protocol| S[YNAB MCP Server<br/>35 tools]\n    S -->|YNAB API| Y[(Your Budget)]\n\n    style S fill:#2563EB,color:#fff,stroke:#1d4ed8\n    style Y fill:#16a34a,color:#fff,stroke:#15803d\n    style C fill:#7c3aed,color:#fff,stroke:#6d28d9\n```\n\n---\n\n## Features\n\n- **Receipt itemization** — Paste a receipt, get an itemized split transaction with tax allocation automatically distributed across line items.\n- **Bank reconciliation (beta)** — Import a bank CSV, fuzzy-match against YNAB, detect missing or mismatched transactions, and apply bulk fixes.\n- **35 YNAB tools** — Full coverage plus scheduled transactions and deterministic period analytics.\n- **Write safety by default** — Preview mode requires a short-lived, single-use confirmation bound to the exact validated request.\n- **Smaller tool profiles** — Choose `core`, `read-only`, or `full` at startup without dynamic registration.\n- **Delta sync** — Fetches only changed data since the last request, keeping things fast.\n- **Markdown or JSON** — All read tools support `response_format`: human-readable markdown tables (default) or structured JSON.\n- **MCP-native** — Structured outputs, annotations, completions API, and resource templates.\n\n---\n\n## How reconciliation works\n\n<details>\n<summary>Show workflow diagram</summary>\n\n```mermaid\nsequenceDiagram\n    participant You\n    participant Claude\n    participant MCP as YNAB MCP Server\n    participant YNAB\n\n    You->>Claude: \"Reconcile my checking<br/>with this CSV\"\n    Claude->>MCP: reconcile_account(csv_data)\n    MCP->>YNAB: Fetch transactions\n    YNAB-->>MCP: YNAB transactions\n    MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched\n    MCP-->>Claude: Matches + recommendations\n    Claude->>You: \"Found 47 matches, 3 missing.<br/>Apply changes?\"\n    You->>Claude: \"Yes\"\n    Claude->>MCP: Apply recommended changes\n    MCP->>YNAB: Create / update transactions\n    MCP-->>Claude: Done\n    Claude->>You: \"3 transactions created,<br/>account reconciled.\"\n```\n\n</details>\n\n---\n\n## Setup (2 minutes)\n\n### 1 — Get a YNAB token\n\n1. Open [YNAB Web App](https://app.youneedabudget.com)\n2. Go to **Account Settings &rarr; Developer Settings &rarr; New Token**\n3. Copy it (shown once only)\n\n### 2 — Install\n\n<details>\n<summary><strong>Claude Desktop — MCPB file (recommended)</strong></summary>\n\n1. Download the latest `.mcpb` from [Releases](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)\n2. Drag it into Claude Desktop\n3. Enter your `YNAB_ACCESS_TOKEN` when prompted\n4. Restart Claude Desktop\n\n</details>\n\n<details>\n<summary><strong>Claude Desktop — npx</strong></summary>\n\nAdd to your Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"ynab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dizzlkheinz/ynab-mcpb@latest\"],\n      \"env\": {\n        \"YNAB_ACCESS_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Cline (VS Code)</strong></summary>\n\n```json\n{\n  \"mcpServers\": {\n    \"ynab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dizzlkheinz/ynab-mcpb@latest\"],\n      \"env\": {\n        \"YNAB_ACCESS_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Codex</strong></summary>\n\n```toml\n[mcp_servers.ynab-mcpb]\ncommand = \"npx\"\nargs = [\"-y\", \"@dizzlkheinz/ynab-mcpb@latest\"]\nenv = {\"YNAB_ACCESS_TOKEN\" = \"your-token-here\"}\nstartup_timeout_sec = 120\n```\n\n</details>\n\n<details>\n<summary><strong>Any other MCP client</strong></summary>\n\n- **Command:** `npx`\n- **Args:** `[\"-y\", \"@dizzlkheinz/ynab-mcpb@latest\"]`\n- **Env:** `YNAB_ACCESS_TOKEN=<your token>`\n\n</details>\n\n### 3 — Try these prompts\n\n```\nList my budgets and set the default to my main budget.\nShow recent transactions in my checking account.\nHow much did I spend on groceries in the last 30 days?\nCreate a transaction: $42.18 at Trader Joe's yesterday.\n```\n\n---\n\n## Tools (35)\n\n<details>\n<summary>See all tools by category</summary>\n\n| Category | Tools |\n|---|---|\n| Budgets | `list_budgets` `get_budget` `get_default_budget` `set_default_budget` |\n| Accounts | `list_accounts` `get_account` `create_account` |\n| Transactions | `list_transactions` `get_transaction` `create_transaction` `create_transactions` `update_transaction` `update_transactions` `delete_transaction` `export_transactions` `compare_transactions` `create_receipt_split_transaction` |\n| Categories | `list_categories` `get_category` `update_category` |\n| Payees | `list_payees` `get_payee` |\n| Months | `list_months` `get_month` |\n| Reconciliation | `reconcile_account` |\n| Scheduled transactions | `list_scheduled_transactions` `get_scheduled_transaction` `create_scheduled_transaction` `update_scheduled_transaction` `delete_scheduled_transaction` |\n| Analytics | `analyze_spending` `compare_spending_periods` |\n| Utilities | `get_user` `diagnostic_info` `clear_cache` |\n\nAll read tools accept `response_format` (`\"markdown\"` or `\"json\"`, default: `\"markdown\"`).\n\nFull reference: [docs/reference/API.md](docs/reference/API.md)\n\n</details>\n\n---\n\n## Configuration\n\n| Variable | Default | Description |\n|---|---|---|\n| `YNAB_ACCESS_TOKEN` | — | **Required.** Your YNAB personal access token. |\n| `YNAB_EXPORT_PATH` | `~/Downloads` | Directory for exported transaction files. |\n| `YNAB_MCP_ENABLE_DELTA` | `true` | Enable delta sync (only fetch changed data). |\n| `YNAB_MCP_WRITE_MODE` | `preview` | `read-only` hides YNAB mutations; `preview` requires exact confirmation; `enabled` permits direct writes. |\n| `YNAB_MCP_TOOL_PROFILE` | `full` | `core`, `read-only`, or `full` startup tool surface. |\n| `YNAB_MCP_CACHE_DEFAULT_TTL_MS` | `300000` | Cache TTL in milliseconds (5 min). |\n| `YNAB_MCP_CACHE_MAX_ENTRIES` | `1000` | Maximum cache entries before LRU eviction. |\n\nSee `.env.example` for all options.\n\n### Write modes and compatibility\n\n`preview` is the conservative default. A mutation call first runs its existing `dry_run` path and returns a confirmation token. That token expires after two minutes, can be used once, and only authorizes the same canonical tool name and validated arguments. `read-only` does not register YNAB mutation tools. `enabled` preserves the pre-safety direct-write behavior for users who explicitly opt in.\n\nTransaction amounts now prefer `amount_decimal` (for example, `-12.34`) or the explicit raw field `amount_milliunits` (`-12340`). Category funding similarly prefers `budgeted_decimal` or `budgeted_milliunits`. The old `amount` and `budgeted` fields remain accepted as deprecated milliunit aliases for backward compatibility; their meaning is never guessed.\n\n### Tool profiles\n\nProfiles are selected once at server startup, so clients receive a stable `tools/list` response:\n\n- `core` keeps common reads, transaction safety workflows, reconciliation, receipt splitting, scheduled review, and spending analytics.\n- `read-only` exposes every tool explicitly annotated read-only.\n- `full` exposes the complete 35-tool surface, subject to the selected write mode.\n\n## Privacy and trust\n\n- The server process runs locally and communicates with YNAB over YNAB's API.\n- Your YNAB personal access token is sensitive. Store it in your MCP client's secret configuration and never paste it into a conversation, issue, fixture, or log.\n- Financial data returned by tools and included in a conversation may be processed by the AI provider selected in your MCP client. Review that provider's data controls before sharing sensitive details.\n- Transaction exports remain on local disk at `YNAB_EXPORT_PATH` (or the platform default). The server does not upload exported files elsewhere.\n- Use `read-only` for no YNAB writes, `preview` for exact request confirmation, or `enabled` only when direct writes are an intentional compatibility choice.\n- This independent open-source project is not affiliated with or endorsed by YNAB.\n\n---\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| `npx` fails | Install Node.js 24+, then restart your MCP client. |\n| Auth errors | Regenerate your YNAB token and update `YNAB_ACCESS_TOKEN`. |\n| Tools not detected | Restart the MCP client after any config change. |\n| Reconciliation issues | [Open an issue](https://github.com/dizzlkheinz/ynab-mcpb/issues) with an anonymized CSV sample. |\n\n---\n\n## For developers\n\n```bash\ngit clone https://github.com/dizzlkheinz/ynab-mcpb.git\ncd ynab-mcpb\nnpm install\ncp .env.example .env   # add YNAB_ACCESS_TOKEN\nnpm run build\nnpm test\n```\n\nArchitecture and contributor guidance: [`CLAUDE.md`](CLAUDE.md)\n\nReconciliation architecture: [`docs/technical/reconciliation-system-architecture.md`](docs/technical/reconciliation-system-architecture.md)\n\n---\n\n## Contributing\n\nBug reports and CSV edge-case repros are very welcome, especially for bank reconciliation:\n[Open an issue](https://github.com/dizzlkheinz/ynab-mcpb/issues)\n\nPRs welcome — run `npm test` and `npm run lint` before submitting.\n\n---\n\n## License\n\n[AGPL-3.0](LICENSE)\n","readmeFilename":"README.md"}