{"_id":"@agustinlzn/finpilot-mcp","_rev":"3-936e760274570629d646037201e657a0","name":"@agustinlzn/finpilot-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@agustinlzn/finpilot-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","claude","finpilot","portfolio","investing","cli"],"author":{"name":"Agustin B. Lozano"},"license":"MIT","_id":"@agustinlzn/finpilot-mcp@0.1.0","maintainers":[{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"}],"homepage":"https://github.com/agustinlozano/finpilot-mcp","bugs":{"url":"https://github.com/agustinlozano/finpilot-mcp/issues"},"bin":{"finpilot-mcp":"dist/index.js"},"dist":{"shasum":"df22feed57bfbb340952805631dd17cf40dd994c","tarball":"https://registry.npmjs.org/@agustinlzn/finpilot-mcp/-/finpilot-mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-tbi0Kl6vrG4mFDu63GhKytG9tz1RVLq8WTxixgT8SqXYpw4uAfJGUqPDn2LPJWlMCjRG1i25N9QrpF+us0+DCA==","signatures":[{"sig":"MEYCIQC0DHt0NVWF9Y2ToH1mf2C5nt1iwwslOb5vSIMdhA1cVQIhAPR/Uo5cMbFWxQg+w3untB0OSdEDM4GedcDgXxv+eDrV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76834},"type":"module","//files":"dist and the skill only. The rest of the repo (src, tests, configs) is on GitHub for anyone who wants it and is dead weight in an npx download.","engines":{"node":">=20"},"gitHead":"7d5fdd63b296afcfdd5e703cd7998e753ac9aa53","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"},"repository":{"url":"git+https://github.com/agustinlozano/finpilot-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Connect your Finpilot portfolios to Claude Code and any other MCP client, with one command.","directories":{},"_nodeVersion":"24.16.0","//dependencies":"Deliberately none. tsup bundles everything into a single dist/index.js, so `npx finpilot-mcp` is one small download with no install step — which matters when the whole pitch is 'one command'.","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9","vitest":"^4.1.9","picocolors":"^1.1.1","typescript":"^5","@types/node":"^20","@clack/prompts":"^0.11.0"},"_npmOperationalInternal":{"tmp":"tmp/finpilot-mcp_0.1.0_1786308846128_0.05839815786234914","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agustinlzn/finpilot-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","claude","finpilot","portfolio","investing","cli"],"author":{"name":"Agustin B. Lozano"},"license":"MIT","_id":"@agustinlzn/finpilot-mcp@0.1.1","maintainers":[{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"}],"homepage":"https://github.com/agustinlozano/finpilot-mcp","bugs":{"url":"https://github.com/agustinlozano/finpilot-mcp/issues"},"bin":{"finpilot-mcp":"dist/index.js"},"dist":{"shasum":"2312da351da4a204e8fe5601df839dc5da28ee30","tarball":"https://registry.npmjs.org/@agustinlzn/finpilot-mcp/-/finpilot-mcp-0.1.1.tgz","fileCount":5,"integrity":"sha512-cPTM+cSlFMw8ZzfQfR4GgpujbkjG6YKiFJZvADpt24kDver6YcZmCW3T2uC1ev363gw2SkNZ33nvweJKkM+Pbw==","signatures":[{"sig":"MEYCIQDHX6JMatPa5DUcVsrlj3L3UdScIBlFMupOz6BcW29ORwIhAMUyxac6OOo+0dfDoJKfMaynLeRXZEg6qK8SsiS155be","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA9+fRXWOnAlMMc9eyPfXxcdNIeuZEj1rZxeke0OO/zYAiBf2b03ZOeRnXQymFbcttePO6eGRjuhwffAadtjbCo40Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77062},"type":"module","//files":"dist and the skill only. The rest of the repo (src, tests, configs) is on GitHub for anyone who wants it and is dead weight in an npx download.","engines":{"node":">=20"},"gitHead":"f2215fe28a4904de6e4d9c11290de7a65d0cbc55","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build && pnpm run test"},"_npmUser":{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"},"repository":{"url":"git+https://github.com/agustinlozano/finpilot-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Connect your Finpilot portfolios to Claude Code and any other MCP client, with one command.","directories":{},"_nodeVersion":"24.16.0","//dependencies":"Deliberately none. tsup bundles everything into a single dist/index.js, so `npx @agustinlzn/finpilot-mcp` is one small download with no install step — which matters when the whole pitch is 'one command'.","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9","vitest":"^4.1.9","picocolors":"^1.1.1","typescript":"^5","@types/node":"^20","@clack/prompts":"^0.11.0"},"_npmOperationalInternal":{"tmp":"tmp/finpilot-mcp_0.1.1_1790691489746_0.6091051895151787","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"_id":"@agustinlzn/finpilot-mcp@0.1.2","bin":{"finpilot-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/agustinlzn/finpilot-mcp/issues"},"dist":{"shasum":"8ccae22c67bb8faefdb03713f82255a4846e3c22","tarball":"https://registry.npmjs.org/@agustinlzn/finpilot-mcp/-/finpilot-mcp-0.1.2.tgz","fileCount":5,"integrity":"sha512-quaK99VP1DT3JVy22ojdIC1OS1mAoZUpxEsWopaqxmrjcTrhpgjIcEe49hFOv1rV++gTBUoM+zthgXTd8rRrgQ==","signatures":[{"sig":"MEYCIQCYOy5cZ/sGruI16o0ZlKft4ZWhwsQ02CUlFrzN133swQIhANaQYdQrOybGO3D/fqNFKLjZE94szMpOi7C74u+mcZpK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID5leXMyIQOrt05+M/l1vPkY1yaBwC3fLquKMJDNtQmdAiEAvA6aiPYJZOWok3hOXtZEk7PoL1BNMO3DgeTEVYwuGww="}],"unpackedSize":77050},"name":"@agustinlzn/finpilot-mcp","type":"module","author":{"name":"Agustin B. Lozano"},"//files":"dist and the skill only. The rest of the repo (src, tests, configs) is on GitHub for anyone who wants it and is dead weight in an npx download.","engines":{"node":">=20"},"gitHead":"621903c130e424febc550016bada1019a9779c8b","license":"MIT","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build && pnpm run test"},"version":"0.1.2","_npmUser":{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"},"homepage":"https://github.com/agustinlzn/finpilot-mcp","keywords":["mcp","model-context-protocol","claude","finpilot","portfolio","investing","cli"],"repository":{"url":"git+https://github.com/agustinlzn/finpilot-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Connect your Finpilot portfolios to Claude Code and any other MCP client, with one command.","directories":{},"maintainers":[{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"}],"_nodeVersion":"24.16.0","//dependencies":"Deliberately none. tsup bundles everything into a single dist/index.js, so `npx @agustinlzn/finpilot-mcp` is one small download with no install step — which matters when the whole pitch is 'one command'.","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","eslint":"^9","vitest":"^4.1.9","picocolors":"^1.1.1","typescript":"^5","@types/node":"^20","@clack/prompts":"^0.11.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/finpilot-mcp_0.1.2_1790692407125_0.29393000625353705"}}},"time":{"created":"2026-08-09T20:54:05.968Z","modified":"2026-09-29T14:33:27.589Z","0.1.0":"2026-08-09T20:54:06.291Z","0.1.1":"2026-09-29T14:18:09.834Z","0.1.2":"2026-09-29T14:33:27.218Z"},"bugs":{"url":"https://github.com/agustinlzn/finpilot-mcp/issues"},"author":{"name":"Agustin B. Lozano"},"license":"MIT","homepage":"https://github.com/agustinlzn/finpilot-mcp","keywords":["mcp","model-context-protocol","claude","finpilot","portfolio","investing","cli"],"repository":{"url":"git+https://github.com/agustinlzn/finpilot-mcp.git","type":"git"},"description":"Connect your Finpilot portfolios to Claude Code and any other MCP client, with one command.","maintainers":[{"name":"engineerwizard","email":"agustinlozanoblua@gmail.com"}],"readme":"# finpilot-mcp\n\nConnect your [Finpilot](https://finpilot-market.vercel.app) portfolios to Claude\nCode — or any MCP client — with one command.\n\n```bash\nnpx @agustinlzn/finpilot-mcp login\n```\n\nThat opens your browser, you approve the request, and the CLI writes a\n`finpilot` entry into your project's `.mcp.json`. Restart your client and ask it\n*\"how are my portfolios doing?\"*.\n\nNo repo to clone, no server to keep running: Finpilot hosts the MCP server, and\nthis CLI just handles the login.\n\n## What your agent gets\n\nSix read-only tools:\n\n| Tool | Answers |\n| --- | --- |\n| `get_overview` | Net worth, per-portfolio P&L, asset mix, today's movers. Start here. |\n| `get_positions` | What you hold, flat or grouped by sector / class / currency / region |\n| `get_portfolios` | Every portfolio with a live valuation summary |\n| `get_portfolio` | One portfolio's totals and per-holding P&L |\n| `get_performance` | Time-weighted return, drawdown, volatility over a range |\n| `get_investor_profile` | Your stated risk appetite, goals and preferences |\n\n## Commands\n\n```bash\nnpx @agustinlzn/finpilot-mcp login      # authorize this machine, save the token, write .mcp.json\nnpx @agustinlzn/finpilot-mcp install    # write .mcp.json in another project, reusing the saved login\nnpx @agustinlzn/finpilot-mcp status     # what's saved and what it can read (never prints the token)\nnpx @agustinlzn/finpilot-mcp logout     # delete the saved credential from this machine\n```\n\n### Options\n\n| Flag | Default |\n| --- | --- |\n| `--scopes <list>` | `portfolios:read, wealth:read, strategy:read, profile:read` |\n| `--api-url <url>` | `https://finpilot-market.vercel.app` |\n| `--no-open` | Print the URL instead of launching a browser — useful over SSH |\n| `--no-install` | Log in without touching `.mcp.json` |\n\nAvailable scopes are `portfolios:read`, `wealth:read`, `market:read`,\n`strategy:read` and `profile:read`. Narrow them if you want:\n\n```bash\nnpx @agustinlzn/finpilot-mcp login --scopes portfolios:read,market:read\n```\n\n## Security\n\n**The login is read-only.** The device flow can only mint read scopes — there is\nno flag that grants write access. Anything that can modify your data has to be a\ntoken you create by hand in the app, deliberately. That is the containment for\nthe attack this kind of flow is exposed to: if someone tricks you into approving\ntheir code, they get a view of your holdings, not the ability to rewrite them.\n\n**Only approve a code you just generated yourself.** The browser shows the code\nand the exact permissions being granted — check the code matches your terminal.\nIf a link arrives from someone else, press Deny.\n\n**Where the token lives.** `~/.finpilot/config.json`, mode `0600`. `login` and\n`install` also write it into `./.mcp.json` so your MCP client can read it —\n**add `.mcp.json` to `.gitignore`**. The CLI warns you if it isn't already there.\n\n**Lifetime.** Tokens expire 90 days after login. Revoke early at any time from\n`/settings/personal-access-tokens`. `logout` clears the local copy but does not\nrevoke it server-side — do both if a machine is compromised.\n\nEvery request is rate limited to 30 per 60 seconds per token.\n\n## Use it as an agent skill\n\nThis repo is also a [skills.sh](https://www.skills.sh) skill, teaching an agent\nhow to connect Finpilot *and* how to read the numbers without the classic\nmistakes (quoting NAV change as if it were return, treating `null` as zero,\ndouble-converting ARS):\n\n```bash\nnpx skills add agustinlzn/finpilot-mcp\n```\n\n## Requirements\n\nNode 20 or newer. The published package bundles its dependencies into a single\nfile, so `npx` is one small download with no install step.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}