{"_id":"@baruchiro/actual-mcp","_rev":"9-c39f910d64aa994477afc271a7f7a199","name":"@baruchiro/actual-mcp","dist-tags":{"latest":"1.11.0"},"versions":{"0.0.1":{"name":"@baruchiro/actual-mcp","version":"0.0.1","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.1","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"d98a14e549ea657342aafb365a18ac16cce34993","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.1.tgz","fileCount":40,"integrity":"sha512-SYoIhd44HKuaPB2Jq4abBlVn19swZE01iIsbplX5jeSQwgzd+0XCZisAej8sWF8juAtevTaVBENTxQMJz6DjUQ==","signatures":[{"sig":"MEQCIEdS7I5ctFiz+/LX/35DZs6m0EuXoVFutpmsvAjE2Du8AiBWAjJNeGVaQxr5cJhmB1HfD2c4DQfD15DYWGecbsIAPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63825},"main":"build/index.js","gitHead":"be1c6b20707e725f4e9276c2a5d9da1f5c4752ff","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.1_1748171941410_0.14935010461625398","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@baruchiro/actual-mcp","version":"0.0.2","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.2","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"92b0bb3f7114f16eca0eab28996e7ab52868770b","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.2.tgz","fileCount":40,"integrity":"sha512-oRgtwX80SnzbnEomgi57KxVR94qEnysjqWWJV9rrmcMh+eIPxX9I6eEH4fb/g0e6H0bTqIZ52sEGFGAB2l6x8w==","signatures":[{"sig":"MEQCIFEqPPRssZLIE1THXnFCBs1d5/ECz3iXC5RKurisSb2XAiBiOgBLGYQkuvS/qfw6aAGiyDpRbi2ehIOYl8B+J6w03g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63825},"main":"build/index.js","gitHead":"b2f409e50b8d3c210526c7eb99febf6734363254","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.2_1748172395227_0.663806833965729","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@baruchiro/actual-mcp","version":"0.0.3","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.3","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"752f5d053e0271b1c5607fa61b1db3947a8ca1ee","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.3.tgz","fileCount":40,"integrity":"sha512-JGZokokYKIcq0Qqyk4jdmkK8Pj2Z9uzCOU7hsvzJCmlBLDCbogAhkUMFanh2SIS2raL9oYnOBlwxMkwSZTTHnA==","signatures":[{"sig":"MEUCIGKYdVSAwZXUPokyfiG85pG9unPxEUMOu1NdidklD9mVAiEAz95+XRrE/h6AXD1dQRmWdOVPJpCHgRLS3c7coIX3CIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63825},"main":"build/index.js","gitHead":"670b4573e5491d1dbe58a264b1fc65612cae1075","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.3_1748172923498_0.5047168076620205","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@baruchiro/actual-mcp","version":"0.0.4","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.4","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"5248c75500831f816efa6b95244fdf2998169804","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.4.tgz","fileCount":40,"integrity":"sha512-MW/XTWO/rgAgR5UU325dGm9kWKKD7CXA9KOXek2GCYAFZ6sj3zUrE41fdG78hfY4fCQVNrczAb2+ENhcb434dg==","signatures":[{"sig":"MEYCIQD/u8BET0h1ALutrdwethIdIZ/yRI+z4muJLigTSGM1BAIhAOadiFneQZK6L/YpLEfJ3kWXdUSYYQ0lRU8kxphjigar","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63643},"main":"build/index.js","gitHead":"dd548abee0bd3a623c50f03e3ab92a33cda19680","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.4_1748408012042_0.9611653230584569","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@baruchiro/actual-mcp","version":"0.0.5","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.5","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"17559fdfa25be1ff7f080668593945a6515a57a7","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.5.tgz","fileCount":40,"integrity":"sha512-HpgqeYELku47hO5TM2xFxZE90xWABVw2uT6rv8RtRLNfNInwRYdLKoX8Ph5vWKFKOvRxSXxM3Djt97Go09NPJg==","signatures":[{"sig":"MEQCIBupgyZ176NXJdzVNkYEdu/FB0a9Ly3UEFA2uWPwOzAeAiAfSBlMMEswUAkKKs5zH9M1MlUcgsCvO4JAO7N2JJ8IdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63643},"main":"build/index.js","gitHead":"b638c7cfa7edcc29df7ab11673e7e5e272bcb58f","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.5_1748408394788_0.9414577922258249","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@baruchiro/actual-mcp","version":"0.0.6","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem"},"_id":"@baruchiro/actual-mcp@0.0.6","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"a40dcb6191612891beceaba742fac6d9711ed154","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-0.0.6.tgz","fileCount":40,"integrity":"sha512-mLP8u+CLYrTKo9o/9Yoqb7EIDNSgI6uXE9BXRSgVj9WxFR3tbhiSUltYVBW5G347tGVZEwGyQ3byl0XuQNuxxg==","signatures":[{"sig":"MEUCIDTdv3LEUkuba5SYdTTcEWdAzJ1jRTmRQQHTiRdm7BVgAiEA+cqVV7gjaexfGdBfJvmjlA/2DX3JAztrqiLJ/vQT2Qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63775},"main":"build/index.js","gitHead":"e3ac5d0d65d02a431263607d0627869091be3d50","private":false,"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"baruchiro","email":"baruchiro@gmail.com"},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"20.19.1","dependencies":{"express":"^5.1.0","@actual-app/api":"^25.5.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","dotenv":"^16.4.7","typescript":"^5.3.3","@types/node":"^20.11.24","@types/express":"^5.0.2","@changesets/cli":"^2.29.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_0.0.6_1748412001648_0.06486770259161512","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@baruchiro/actual-mcp","version":"1.10.0","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"url":"Rothkoff","name":"Baruch Odem"},"license":"MIT","_id":"@baruchiro/actual-mcp@1.10.0","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"2d2daa97e2f555e1cfc8e778dd6e7bd82fc1b56d","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-1.10.0.tgz","fileCount":295,"integrity":"sha512-8Lu9ap5K2v+pU5YYvEk6RXRkA0RNMtu4WpD5l9EFY7G9eDg+vq2kyB6csq3RjvFLtwaX0bEYJwRF6m3js82yuQ==","signatures":[{"sig":"MEQCIDJeq9TOirPouSF2+sl3InCHbavcG2WTrRBn+d0FWh2zAiBfBpW5D6ZD+GRx3w1iUomY0oaqKO1lmOrcpkcjhhBbsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320140},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"9b8c239d0a845bdd4f35abdb88d29786b823748a","private":false,"scripts":{"lint":"eslint .","test":"npm run test:unit","build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","format":"prettier --write .","quality":"npm run lint && npm run format:check && npm run type-check","test:ui":"vitest --ui","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","test:unit":"vitest run","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:unit:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1630be70-afad-4d5c-bc72-5848e368429d"}},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"11.8.0","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"3.25.76","dotenv":"17.2.3","express":"5.2.1","@actual-app/api":"25.11.0","zod-to-json-schema":"3.25.0","@modelcontextprotocol/sdk":"1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","jiti":"2.6.1","eslint":"9.39.2","vitest":"3.2.4","globals":"16.5.0","prettier":"3.7.4","@vitest/ui":"3.2.4","typescript":"5.9.3","@types/node":"24.0.0","@types/express":"5.0.6","typescript-eslint":"8.50.0","@vitest/coverage-v8":"3.2.4","vite-tsconfig-paths":"5.1.4","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"5.5.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_1.10.0_1769583473167_0.7151255479225198","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"@baruchiro/actual-mcp","version":"1.10.1","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"url":"Rothkoff","name":"Baruch Odem"},"license":"MIT","_id":"@baruchiro/actual-mcp@1.10.1","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"homepage":"https://github.com/baruchiro/actual-mcp","bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"bin":{"actual-mcp":"build/index.js"},"dist":{"shasum":"ad4434ed462ed1395096784f630e595fdb67a3f5","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-1.10.1.tgz","fileCount":295,"integrity":"sha512-X6D+HMUh7mBYpGEtbmHTl7ppFC8qCDNQLzexq/ElnOkq4xEl8k4Pn98PcVXtAW3YUlO5qwJX6gIQf6ZvxEs/Cw==","signatures":[{"sig":"MEYCIQDNJtBQM2Vq7Gy+3hYJMl4Y3szNchzYTjhzI+81kn/QWgIhAJwUFSa4z6wMUR47KxTBrEPxZ7Ymqjr2eNac5cFiHClz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@1.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":327567},"main":"build/index.js","type":"module","types":"build/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"815daf39238bce6f17a75cc40bf246c2296150b2","private":false,"scripts":{"lint":"eslint .","test":"npm run test:unit","build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"tsx src/index.ts","watch":"tsc --watch","format":"prettier --write .","quality":"npm run lint && npm run format:check && npm run type-check","test:ui":"vitest --ui","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","test:unit":"vitest run","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:unit:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1630be70-afad-4d5c-bc72-5848e368429d"}},"repository":{"url":"git+https://github.com/baruchiro/actual-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Actual Budget MCP server exposing API functionality","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"3.25.76","dotenv":"17.2.3","express":"5.2.1","@actual-app/api":"25.11.0","zod-to-json-schema":"3.25.0","@modelcontextprotocol/sdk":"1.17.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","jiti":"2.6.1","eslint":"9.39.2","vitest":"3.2.4","globals":"16.5.0","prettier":"3.7.4","@vitest/ui":"3.2.4","typescript":"5.9.3","@types/node":"24.0.0","@types/express":"5.0.6","typescript-eslint":"8.50.0","@vitest/coverage-v8":"3.2.4","vite-tsconfig-paths":"5.1.4","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"5.5.4"},"_npmOperationalInternal":{"tmp":"tmp/actual-mcp_1.10.1_1780206043357_0.9699691002171995","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@baruchiro/actual-mcp","version":"1.11.0","description":"Actual Budget MCP server exposing API functionality","private":false,"main":"build/index.js","types":"build/index.d.ts","type":"module","bin":{"actual-mcp":"build/index.js"},"scripts":{"build":"tsc -p tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755')\"","watch":"tsc --watch","inspector":"npx @modelcontextprotocol/inspector -e ACTUAL_SERVER_URL=$ACTUAL_SERVER_URL -e ACTUAL_PASSWORD=$ACTUAL_PASSWORD -e ACTUAL_BUDGET_SYNC_ID=$ACTUAL_BUDGET_SYNC_ID node build/index.js","start":"tsx src/index.ts","test":"npm run test:unit","test:unit":"vitest run","test:unit:watch":"vitest","test:ui":"vitest --ui","test:coverage":"vitest run --coverage","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","type-check":"tsc --noEmit","quality":"npm run lint && npm run format:check && npm run type-check","prepublishOnly":"npm run build"},"dependencies":{"@actual-app/api":"25.11.0","@modelcontextprotocol/sdk":"1.17.4","express":"5.2.1","zod":"3.25.76","zod-to-json-schema":"3.25.0","dotenv":"17.2.3"},"engines":{"node":">=24.0.0"},"devDependencies":{"@types/express":"5.0.6","@types/node":"24.0.0","@vitest/coverage-v8":"3.2.4","@vitest/ui":"3.2.4","eslint":"9.39.2","eslint-config-prettier":"10.1.8","eslint-plugin-prettier":"5.5.4","globals":"16.5.0","jiti":"2.6.1","prettier":"3.7.4","tsx":"4.21.0","typescript":"5.9.3","typescript-eslint":"8.50.0","vite-tsconfig-paths":"5.1.4","vitest":"3.2.4"},"publishConfig":{"access":"public"},"homepage":"https://github.com/baruchiro/actual-mcp","repository":{"type":"git","url":"git+https://github.com/baruchiro/actual-mcp.git"},"bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"author":{"name":"Baruch Odem","url":"Rothkoff"},"license":"MIT","gitHead":"ef208f5289362f9c8936e8e26306bdab3dcbbc59","_id":"@baruchiro/actual-mcp@1.11.0","_nodeVersion":"24.16.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-oP9w55kf2amsFRf0sm/78Gpi3E5E3tHeBe33RScoRto0+3RkhFZtnBI8r5iSuHBpzlHl2ACpI0lIjqZzeos0sg==","shasum":"a8c262aaba0f9d9abe52312c9ab7b70c99a4d256","tarball":"https://registry.npmjs.org/@baruchiro/actual-mcp/-/actual-mcp-1.11.0.tgz","fileCount":299,"unpackedSize":338341,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baruchiro%2factual-mcp@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBvKGNJzwTWiZ6etUdETraMBhVbHW0AG1NGhYVqVwGWVAiA2OVs1XnfNzf19aYEF0rNTve8H4Thiv6yNSljaAuW91w=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1630be70-afad-4d5c-bc72-5848e368429d"}},"directories":{},"maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/actual-mcp_1.11.0_1781268581911_0.5669081478394307"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-25T11:19:01.302Z","modified":"2026-06-12T12:49:42.327Z","0.0.1":"2025-05-25T11:19:01.642Z","0.0.2":"2025-05-25T11:26:35.399Z","0.0.3":"2025-05-25T11:35:23.683Z","0.0.4":"2025-05-28T04:53:32.249Z","0.0.5":"2025-05-28T04:59:54.974Z","0.0.6":"2025-05-28T06:00:01.831Z","1.10.0":"2026-01-28T06:57:53.318Z","1.10.1":"2026-05-31T05:40:43.507Z","1.11.0":"2026-06-12T12:49:42.059Z"},"bugs":{"url":"https://github.com/baruchiro/actual-mcp/issues"},"author":{"name":"Baruch Odem","url":"Rothkoff"},"license":"MIT","homepage":"https://github.com/baruchiro/actual-mcp","keywords":["mcp","actual-budget","budgeting","ai","model-context-protocol","actual"],"repository":{"type":"git","url":"git+https://github.com/baruchiro/actual-mcp.git"},"description":"Actual Budget MCP server exposing API functionality","maintainers":[{"name":"baruchiro","email":"baruchiro@gmail.com"}],"readme":"# Actual Budget MCP Server\n\nMCP server for integrating Actual Budget with Claude and other LLM assistants.\n\n## Overview\n\nThe Actual Budget MCP Server allows you to interact with your personal financial data from [Actual Budget](https://actualbudget.com/) using natural language through LLMs. It exposes your accounts, transactions, and financial metrics through the Model Context Protocol (MCP).\n\n## Features\n\n### Resources\n\n- **Account Listings** - Browse all your accounts with their balances\n- **Account Details** - View detailed information about specific accounts\n- **Transaction History** - Access transaction data with complete details\n\n### Tools\n\n#### Transaction & Account Management\n\n- **`get-transactions`** - Retrieve and filter transactions by account, date, amount, category, or payee\n- **`create-transaction`** - Create a new transaction in an account with optional category, payee, and notes\n- **`update-transaction`** - Update an existing transaction with new category, payee, notes, or amount\n- **`get-accounts`** - Retrieve a list of all accounts with their current balance and ID\n- **`balance-history`** - View account balance changes over time\n\n#### Reporting & Analytics\n\n- **`spending-by-category`** - Generate spending breakdowns categorized by type\n- **`monthly-summary`** - Get monthly income, expenses, and savings metrics\n\n#### Categories\n\n- **`get-grouped-categories`** - Retrieve a list of all category groups with their categories\n- **`create-category`** - Create a new category within a category group\n- **`update-category`** - Update an existing category's name or group\n- **`delete-category`** - Delete a category\n- **`create-category-group`** - Create a new category group\n- **`update-category-group`** - Update a category group's name\n- **`delete-category-group`** - Delete a category group\n\n#### Payees\n\n- **`get-payees`** - Retrieve a list of all payees with their details\n- **`create-payee`** - Create a new payee\n- **`update-payee`** - Update an existing payee's details\n- **`delete-payee`** - Delete a payee\n\n#### Rules\n\n- **`get-rules`** - Retrieve a list of all transaction rules\n- **`create-rule`** - Create a new transaction rule with conditions and actions\n- **`update-rule`** - Update an existing transaction rule\n- **`delete-rule`** - Delete a transaction rule\n\n### Prompts\n\n- **`financial-insights`** - Generate insights and recommendations based on your financial data\n- **`budget-review`** - Analyze your budget compliance and suggest adjustments\n\n## Installation\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) (v24 or higher)\n- [Actual Budget](https://actualbudget.com/) installed and configured\n- [Claude Desktop](https://claude.ai/download) or another MCP-compatible client\n- [Docker Desktop](https://www.docker.com/products/docker-desktop) (optional)\n\n### Remote access\n\nPull the latest docker image from GitHub Container Registry:\n\n```bash\ndocker pull ghcr.io/baruchiro/actual-mcp:latest\n```\n\nFor PR preview images (replace `123` with PR number):\n\n```bash\ndocker pull ghcr.io/baruchiro/actual-mcp:pr-123\n```\n\n### Local setup\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/s-stefanov/actual-mcp.git\ncd actual-mcp\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n3. Build the server:\n\n```bash\nnpm run build\n```\n\n4. Build the local docker image (optional):\n\n```bash\ndocker build -t <local-image-name> .\n```\n\n5. Configure environment variables (optional):\n\n```bash\n# Path to your Actual Budget data directory (default: ~/.actual)\nexport ACTUAL_DATA_DIR=\"/path/to/your/actual/data\"\n\n# If using a remote Actual server\nexport ACTUAL_SERVER_URL=\"https://your-actual-server.com\"\nexport ACTUAL_PASSWORD=\"your-password\"\n\n# Specific budget to use (optional)\nexport ACTUAL_BUDGET_SYNC_ID=\"your-budget-id\"\n```\n\nOptional: separate encryption budget password\n\nIf your Actual setup requires a different password to unlock the local/encrypted budget data than the server authentication password, you can set `ACTUAL_BUDGET_ENCRYPTION_PASSWORD` in addition to `ACTUAL_PASSWORD`.\n\n```bash\n# If server auth and encryption/unlock use different passwords\nexport ACTUAL_BUDGET_ENCRYPTION_PASSWORD=\"your-encryption-password\"\n```\n\nOptional: currency symbol\n\nActual Budget is currency-agnostic. By default, formatted amounts are shown without a currency symbol (e.g., `1,234.56`). If you want to display amounts with currency formatting, you can set `ACTUAL_MCP_CURRENCY_SYMBOL` to a valid ISO 4217 currency code:\n\n```bash\n# Choose one of the following currency codes:\nexport ACTUAL_MCP_CURRENCY_SYMBOL=\"USD\"  # For US Dollars: $1,234.56\n# export ACTUAL_MCP_CURRENCY_SYMBOL=\"EUR\"  # For Euros: €1,234.56\n# export ACTUAL_MCP_CURRENCY_SYMBOL=\"GBP\"  # For British Pounds: £1,234.56\n```\n\nOptional: budget cache TTL\n\nBy default the server keeps the downloaded budget cached in memory for **60 seconds** between\ntool calls instead of re-downloading it every time, which makes back-to-back requests much\nfaster. Cached data is kept current by syncing the latest changes from your Actual server on\neach reuse, so you still see up-to-date data. Tune or disable it with `ACTUAL_MCP_CACHE_TTL_SECONDS`:\n\n```bash\nexport ACTUAL_MCP_CACHE_TTL_SECONDS=\"120\"  # keep the budget warm for 2 minutes\n# export ACTUAL_MCP_CACHE_TTL_SECONDS=\"0\"  # disable caching (re-download every call)\n```\n\n## Usage with Claude Desktop\n\nTo use this server with Claude Desktop, add it to your Claude configuration:\n\nOn MacOS:\n\n```bash\ncode ~/Library/Application\\ Support/Claude/claude_desktop_config.json\n```\n\nOn Windows:\n\n```bash\ncode %APPDATA%\\Claude\\claude_desktop_config.json\n```\n\nAdd the following to your configuration...\n\n### a. Using Node.js (npx version):\n\n```json\n{\n  \"mcpServers\": {\n    \"actualBudget\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"actual-mcp\", \"--enable-write\"],\n      \"env\": {\n        \"ACTUAL_DATA_DIR\": \"path/to/your/data\",\n        \"ACTUAL_PASSWORD\": \"your-password\",\n        \"ACTUAL_SERVER_URL\": \"http://your-actual-server.com\",\n        \"ACTUAL_BUDGET_SYNC_ID\": \"your-budget-id\"\n      }\n    }\n  }\n}\n\n### a. Using Node.js (local only):\n\n```json\n{\n  \"mcpServers\": {\n    \"actualBudget\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/your/clone/build/index.js\", \"--enable-write\"],\n      \"env\": {\n        \"ACTUAL_DATA_DIR\": \"path/to/your/data\",\n        \"ACTUAL_PASSWORD\": \"your-password\",\n        \"ACTUAL_SERVER_URL\": \"http://your-actual-server.com\",\n        \"ACTUAL_BUDGET_SYNC_ID\": \"your-budget-id\"\n      }\n    }\n  }\n}\n```\n\n### b. Using Docker (local or remote images):\n\n```json\n{\n  \"mcpServers\": {\n    \"actualBudget\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"-v\",\n        \"/path/to/your/data:/data\",\n        \"-e\",\n        \"ACTUAL_PASSWORD=your-password\",\n        \"-e\",\n        \"ACTUAL_SERVER_URL=https://your-actual-server.com\",\n        \"-e\",\n        \"ACTUAL_BUDGET_SYNC_ID=your-budget-id\",\n        \"ghcr.io/baruchiro/actual-mcp:latest\",\n        \"--enable-write\"\n      ]\n    }\n  }\n}\n```\n\nAfter saving the configuration, restart Claude Desktop.\n\n> 💡 `ACTUAL_DATA_DIR` is optional if you're using `ACTUAL_SERVER_URL`.\n\n> 💡 Use `--enable-write` to enable write-access tools.\n\n## Running an SSE Server\n\nTo expose the server over a port using Docker:\n\n```bash\ndocker run -i --rm \\\n  -p 3000:3000 \\\n  -v \"/path/to/your/data:/data\" \\\n  -e ACTUAL_PASSWORD=\"your-password\" \\\n  -e ACTUAL_SERVER_URL=\"http://your-actual-server.com\" \\\n  -e ACTUAL_BUDGET_SYNC_ID=\"your-budget-id\" \\\n  -e BEARER_TOKEN=\"your-bearer-token\" \\\n  ghcr.io/baruchiro/actual-mcp:latest \\\n  --sse --enable-write --enable-bearer\n```\n\n> ⚠️ Important: When using --enable-bearer, the BEARER_TOKEN environment variable must be set.  \n> 🔒 This is highly recommended if you're exposing your server via a public URL.\n\n## Docker Images\n\n### Available Images\n\nDocker images are published to GitHub Container Registry (ghcr.io) with the following tags:\n\n- `latest` - Latest release from the main branch\n- `v1.2.3` - Specific version tags (e.g., v1.8.0)\n- `1.2.3`, `1.2`, `1` - Semantic version aliases\n- `pr-123` - Preview images for pull requests (e.g., pr-42 for PR #42)\n\n### Using PR Preview Images\n\nTo test a pull request before it's merged, you can use the PR-specific Docker image:\n\n```bash\n# Replace 123 with the actual PR number\ndocker pull ghcr.io/baruchiro/actual-mcp:pr-123\n\n# Run the PR preview\ndocker run -i --rm \\\n  -v \"/path/to/your/data:/data\" \\\n  -e ACTUAL_PASSWORD=\"your-password\" \\\n  -e ACTUAL_SERVER_URL=\"http://your-actual-server.com\" \\\n  -e ACTUAL_BUDGET_SYNC_ID=\"your-budget-id\" \\\n  ghcr.io/baruchiro/actual-mcp:pr-123 \\\n  --enable-write\n```\n\nThis allows you to test new features or bug fixes before they are officially released.\n\n## Example Queries\n\nOnce connected, you can ask Claude questions like:\n\n- \"What's my current account balance?\"\n- \"Show me my spending by category last month\"\n- \"How much did I spend on groceries in January?\"\n- \"What's my savings rate over the past 3 months?\"\n- \"Analyze my budget and suggest areas to improve\"\n\n## Usage with Codex CLI\n\nExample Codex configuration:\n\nIn `~/.codex/config.toml`:\n```toml\n[mcp_servers.actual-budget]\nurl = \"http://localhost:3000\"\n```\n\nPoint Codex at the same port you pass to `npm start -- --sse --port <PORT>`.\n\n## Development\n\nFor development with auto-rebuild:\n\n```bash\nnpm run watch\n```\n\n### Testing the connection to Actual\n\nTo verify the server can connect to your Actual Budget data:\n\n```bash\nnode build/index.js --test-resources\n```\n\n### Debugging\n\nSince MCP servers communicate over stdio, debugging can be challenging. You can use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):\n\n```bash\nnpx @modelcontextprotocol/inspector node build/index.js\n```\n\n## Project Structure\n\n- `index.ts` - Main server implementation\n- `types.ts` - Type definitions for API responses and parameters\n- `prompts.ts` - Prompt templates for LLM interactions\n- `utils.ts` - Helper functions for date formatting and more\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","readmeFilename":"README.md"}