{"_id":"@dizzlkheinz/ynab-mcp-server","_rev":"4-26265e6cac0497de7672380b1324ad63","name":"@dizzlkheinz/ynab-mcp-server","dist-tags":{"latest":"0.12.1"},"versions":{"0.8.2":{"name":"@dizzlkheinz/ynab-mcp-server","version":"0.8.2","keywords":["mcp","ynab","budget","finance"],"author":{"name":"dizzlkheinz"},"license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcp-server@0.8.2","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcp-dxt#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcp-dxt/issues"},"dist":{"shasum":"bba479f33f4daa5b7e89f2afc2fcfc5955f65c2e","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcp-server/-/ynab-mcp-server-0.8.2.tgz","fileCount":313,"integrity":"sha512-Rvw4/Ldt/gA1+qFcocs+B8jbAhCMU7soG/iWBF5juWKkPPy1sAftPuIrwkXKGgBImHLxbpUen34u3/CBavfCEA==","signatures":[{"sig":"MEUCIQC4bRrAQeB+H+uPGqffsuNT4KwNXcGcCun5izvUTahJjAIgObksyeGqCeJoXcP9/ZZ4cAa5jNhU/jDVzU/ukb9KNQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8313613},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"83baf06d0c4da91d55e0919f58e50436e5b03570","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run && npm run filter-test-results","build":"rimraf dist && tsc && npm run bundle","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"esbuild dist/index.js --bundle --platform=node --format=cjs --outfile=dist/bundle/index.cjs --sourcemap","format":"prettier --write .","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:all":"npm run test:unit && npm run test:integration && npm run test:e2e && npm run test:performance","test:e2e":"vitest run --project e2e","postbuild":"npm run generate:dxt","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 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":"esbuild dist/index.js --bundle --platform=node --format=cjs --outfile=dist/bundle/index.cjs --minify","package:dxt":"npm run build:prod && npm run generate:dxt","format:check":"prettier --check .","generate:dxt":"powershell -ExecutionPolicy Bypass -File scripts/generate-dxt.ps1","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle","test:coverage":"vitest run --coverage","pr:description":"node scripts/create-pr-description.js","prepublishOnly":"npm run test:all && npm run build:prod","test:integration":"vitest run --project integration","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')); results.testResults = results.testResults.filter(r => r.status === 'fail'); fs.writeFileSync('test-results.json', JSON.stringify(results, null, 2)); } catch (e) { console.error('Failed to filter test results:', e); process.exit(1); }\""},"_npmUser":{"name":"dizzlkheinz","email":"ksutker@gmail.com"},"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcp-dxt.git","type":"git"},"_npmVersion":"11.6.1","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"24.10.0","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.18.2"},"_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-mcp-server_0.8.2_1760395940946_0.8137244695866814","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package renamed to @dizzlkheinz/ynab-mcpb. Please use the new package instead: npm install @dizzlkheinz/ynab-mcpb"},"0.11.0":{"name":"@dizzlkheinz/ynab-mcp-server","version":"0.11.0","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcp-server@0.11.0","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"homepage":"https://github.com/dizzlkheinz/ynab-mcp-dxt#readme","bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcp-dxt/issues"},"bin":{"ynab-mcp-server":"bin/ynab-mcp-server.cjs"},"dist":{"shasum":"421d51e022e45ca5728598a094d3cc9d9667c5f5","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcp-server/-/ynab-mcp-server-0.11.0.tgz","fileCount":466,"integrity":"sha512-yhfyvYDXpOmedtBMIP/Rnsz+e9MtZ3ljPGUia1aI1+V338Nx9TNPYQo1IUPXX/mLkm7EUTM1vG3k/68C6CJfPw==","signatures":[{"sig":"MEUCIQC+wjAKuEL/kAayvfs7ns482N9anoo027hAMnxQbZ4lIgIgUDTxIeBy7ravp/HIYAoCQPpvVyQCC5Vljza9TGxtMnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dizzlkheinz%2fynab-mcp-server@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9874010},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"976516a0149557d5284f283eb2e966d444dbee6f","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run --project unit && npm run filter-test-results","build":"rimraf dist && tsc && npm run bundle","clean":"rimraf dist","start":"node -r dotenv/config dist/index.js","bundle":"esbuild dist/index.js --bundle --platform=node --format=cjs --outfile=dist/bundle/index.cjs --sourcemap","format":"prettier --write .","prepare":"npm run build","lint:fix":"eslint src --ext .ts --fix","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","postbuild":"node scripts/run-generate-dxt.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 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":"esbuild dist/index.js --bundle --platform=node --format=cjs --outfile=dist/bundle/index.cjs --minify","package:dxt":"npm run build:prod && npm run generate:dxt","format:check":"prettier --check .","generate:dxt":"node scripts/run-generate-dxt.js","validate-env":"node scripts/validate-env.js","verify-build":"node scripts/verify-build.js","build:no-lint":"npm run clean && tsc && npm run bundle","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')); results.testResults = results.testResults.filter(r => r.status === 'fail'); fs.writeFileSync('test-results.json', JSON.stringify(results, null, 2)); } catch (e) { console.error('Failed to filter test results:', e); process.exit(1); }\"","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-mcp-dxt.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for YNAB (You Need A Budget) integration","directories":{"doc":"docs"},"_nodeVersion":"18.20.8","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.18.2"},"_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-mcp-server_0.11.0_1763233114353_0.6975868165261181","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package renamed to @dizzlkheinz/ynab-mcpb. Please use the new package instead: npm install @dizzlkheinz/ynab-mcpb"},"0.12.1":{"name":"@dizzlkheinz/ynab-mcp-server","version":"0.12.1","keywords":["mcp","ynab","budget","finance"],"author":"","license":"AGPL-3.0","_id":"@dizzlkheinz/ynab-mcp-server@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":"3e8d6e1090c53e00eb17fc3e1bcc0bbf0fea3e3a","tarball":"https://registry.npmjs.org/@dizzlkheinz/ynab-mcp-server/-/ynab-mcp-server-0.12.1.tgz","fileCount":435,"integrity":"sha512-8Zq28qjCosQ83hHxvaHUuVV/7PVLS/Z+ahm6AHTfVVSf2A3Xzm9eRJY5xDGgZpu0X9+IaNCQbuZH+QXCdc4aNQ==","signatures":[{"sig":"MEQCID/8mBQBr6cBhAiznCIAf+4DKWsqgxTnjleWTIQ1ZausAiBqw8IMJewb1GFclFaW668FbFxxXVuCmDZg075b/ipicA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5783300},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ff1e57fcf9391ef7d3533266da8520a8ccb0bed4","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-mcp-server_0.12.1_1763672578585_0.12246204191417398","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package renamed to @dizzlkheinz/ynab-mcpb. Please use the new package instead: npm install @dizzlkheinz/ynab-mcpb"}},"time":{"created":"2025-10-13T22:52:20.835Z","modified":"2025-11-20T21:08:16.922Z","0.8.2":"2025-10-13T22:52:21.179Z","0.11.0":"2025-11-15T18:58:34.612Z","0.12.1":"2025-11-20T21:02:58.797Z"},"bugs":{"url":"https://github.com/dizzlkheinz/ynab-mcpb/issues"},"license":"AGPL-3.0","homepage":"https://github.com/dizzlkheinz/ynab-mcpb#readme","keywords":["mcp","ynab","budget","finance"],"repository":{"url":"git+https://github.com/dizzlkheinz/ynab-mcpb.git","type":"git"},"description":"Model Context Protocol server for YNAB (You Need A Budget) integration","maintainers":[{"name":"dizzlkheinz","email":"ksutker@gmail.com"}],"readme":"# YNAB MCP Server\n\n[![Download latest MCPB](https://img.shields.io/badge/Download-latest%20MCPB-blue?logo=github)](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)\n[![npm version](https://img.shields.io/npm/v/@dizzlkheinz/ynab-mcp-server.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcp-server)\n[![npm downloads](https://img.shields.io/npm/dm/@dizzlkheinz/ynab-mcp-server.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcp-server)\n\n[![Release](https://img.shields.io/github/v/release/dizzlkheinz/ynab-mcpb?sort=semver)](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)\n[![Release MCPB](https://github.com/dizzlkheinz/ynab-mcpb/actions/workflows/release.yml/badge.svg)](https://github.com/dizzlkheinz/ynab-mcpb/actions/workflows/release.yml)\n[![Downloads](https://img.shields.io/github/downloads/dizzlkheinz/ynab-mcpb/total.svg)](https://github.com/dizzlkheinz/ynab-mcpb/releases)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://prettier.io)\n[![lint: eslint](https://img.shields.io/badge/lint-eslint-green.svg)](https://eslint.org)\n[![Node](https://img.shields.io/badge/node-%E2%89%A518-brightgreen.svg)](#)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6.svg)](https://www.typescriptlang.org)\n[![SemVer](https://img.shields.io/badge/SemVer-0.y.z-yellow.svg)](https://semver.org/)\n[![Issues](https://img.shields.io/github/issues/dizzlkheinz/ynab-mcpb)](https://github.com/dizzlkheinz/ynab-mcpb/issues)\n[![PRs](https://img.shields.io/github/issues-pr/dizzlkheinz/ynab-mcpb)](https://github.com/dizzlkheinz/ynab-mcpb/pulls)\n\nConnect your YNAB budget to Claude Desktop and other AI assistants using the Model Context Protocol (MCP). Ask questions about your spending, create transactions, reconcile accounts, and manage your budget using natural language.\n\n## What Can You Do?\n\n- **Ask Questions**: \"How much did I spend on groceries last month?\" or \"What's my credit card balance?\"\n- **Manage Transactions**: Create, update, or delete transactions without opening YNAB\n- **Split Receipts**: Create itemized transactions from receipts with automatic tax allocation across items\n- **Reconcile Accounts**: Import and compare bank statements to find missing transactions\n- **Analyze Spending**: Get insights into spending patterns and budget performance\n- **Set Budgets**: Adjust category budgets and move money between categories\n\nAll monetary amounts are automatically converted to dollars (YNAB stores them in milliunits internally), so everything is human-readable.\n\n## Quick Start\n\n### Step 1: Get Your YNAB Access Token\n\n1. Log in to [YNAB Web App](https://app.youneedabudget.com)\n2. Go to **Account Settings** → **Developer Settings**\n3. Click **New Token**\n4. Give it a name (e.g., \"MCP Server\")\n5. Copy the token (you'll only see it once!)\n\n### Step 2: Install in Your MCP Client\n\n<details>\n<summary><b>Claude Desktop</b> (Recommended)</summary>\n\n#### Option A: Download the Extension\n\n1. Download the latest `.mcpb` file from [Releases](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)\n2. Drag and drop it into Claude Desktop\n3. Paste your YNAB Access Token when prompted\n4. Restart Claude Desktop\n\n#### Option B: Use npx\n\nAdd this to your Claude Desktop MCP settings file:\n\n```json\n{\n  \"mcpServers\": {\n    \"ynab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dizzlkheinz/ynab-mcp-server\"],\n      \"env\": {\n        \"YNAB_ACCESS_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><b>Cline (VS Code Extension)</b></summary>\n\nAdd this to your Cline MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"ynab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dizzlkheinz/ynab-mcp-server\"],\n      \"env\": {\n        \"YNAB_ACCESS_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><b>Other MCP Clients</b></summary>\n\nFor any MCP-compatible client, configure the server with:\n\n**Command:** `npx`\n**Arguments:** `[\"-y\", \"@dizzlkheinz/ynab-mcp-server\"]`\n**Environment Variables:**\n\n- `YNAB_ACCESS_TOKEN`: Your YNAB Personal Access Token\n\nRefer to your MCP client's documentation for specific configuration steps.\n\n</details>\n\n### Step 3: Start Using It\n\nAsk your AI assistant questions like:\n\n- \"What's my checking account balance?\"\n- \"How much have I spent on dining out this month?\"\n- \"List my recent transactions\"\n- \"Set my groceries budget to $500\"\n\nThat's it! You're ready to manage your budget with AI.\n\n## Optional Configuration\n\nMost users won't need to change these settings, but they're available if you need them:\n\n**Export Location:**\n\n- `YNAB_EXPORT_PATH` — Where to save exported transaction files (defaults to Downloads folder)\n\nExample:\n\n```json\n{\n  \"mcpServers\": {\n    \"ynab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dizzlkheinz/ynab-mcp-server\"],\n      \"env\": {\n        \"YNAB_ACCESS_TOKEN\": \"your-token-here\",\n        \"YNAB_EXPORT_PATH\": \"C:\\\\Users\\\\YourName\\\\Documents\"\n      }\n    }\n  }\n}\n```\n\nFor advanced configuration options (caching, output formatting), see the [Configuration Guide](docs/getting-started/CONFIGURATION.md).\n\n## What's Available\n\nThe server gives Claude access to 30 tools organized by function. You don't need to know the tool names - just ask Claude in natural language and it will use the right tools.\n\n**Budget & Account Info**\n\n- View budgets, accounts, categories, payees\n- Check balances and category budgets\n- See monthly spending summaries\n\n**Transactions**\n\n- List, create, update, or delete transactions\n- Import and reconcile bank statements\n- Export transactions to files\n- Create split transactions from receipts\n\n**Analysis**\n\n- Compare spending across time periods\n- Find missing transactions\n- Track budget performance\n\nFor the complete list with technical details, see the [API Reference](docs/reference/API.md).\n\n## Need Help?\n\n- **[Troubleshooting Guide](docs/reference/TROUBLESHOOTING.md)** - Common issues and solutions\n- **[Full Documentation](docs/README.md)** - Complete guides and API reference\n- **[GitHub Issues](https://github.com/dizzlkheinz/ynab-mcpb/issues)** - Report bugs or request features\n\n## For Developers\n\nWant to contribute or build from source?\n\n- **[Development Guide](docs/guides/DEVELOPMENT.md)** - Setup and best practices\n- **[Architecture Overview](docs/guides/ARCHITECTURE.md)** - How the code is organized\n- **[Testing Guide](docs/guides/TESTING.md)** - Running and writing tests\n\nQuick start for development:\n\n```bash\ngit clone <repository-url>\ncd ynab-mcp-server\nnpm install\nnpm run build\nnpm test\n```\n\n## Security & Privacy\n\nYour YNAB access token is stored securely and never logged. All communication with YNAB's API uses HTTPS, and the server validates all inputs to prevent errors and security issues.\n\n## Contributing\n\nContributions welcome! Please:\n\n1. [Open an issue](https://github.com/dizzlkheinz/ynab-mcpb/issues) to discuss your idea\n2. Fork the repository and make your changes\n3. Add tests for new features\n4. Submit a pull request\n\nSee the [Development Guide](docs/guides/DEVELOPMENT.md) for details.\n\n## License\n\nLicensed under [AGPL-3.0](LICENSE). Free to use and modify, but derivative works must also be open source.\n\n---\n\nBuilt with:\n\n- [YNAB API](https://api.youneedabudget.com/) - Official YNAB REST API\n- [Model Context Protocol](https://modelcontextprotocol.io/) - AI integration standard\n- [Claude Desktop](https://claude.ai/download) - AI assistant with MCP support\n","readmeFilename":"README.md"}