{ "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": "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" }