{
  "markdown": "# orla\n\nYour [Orla](https://orla.finance) books from a terminal, and a stdio bridge for\nMCP clients that cannot speak HTTP.\n\n```bash\nnpx orla-cli login\nnpx orla-cli tx list --from 2026-08-01\nnpx orla-cli export --from 2026-01-01 > books.csv\n```\n\nNo dependencies, no build step, no native module to compile. Node 22 or newer.\n\nThe package is `orla-cli` and the command it installs is `orla`. They differ\nbecause npm refused the bare name as too close to packages that already exist\n(`ora`, `ol`, `rlp`, `url`), and renaming the command would have been the worse\nhalf of that trade: `npm i -g orla-cli` still gives you `orla tx list`.\n\n## What it is\n\nA thin client over the same MCP endpoint Claude connects to. Every command is a\ntool call, so the CLI cannot do anything a personal connection cannot do, and\nnothing here has its own idea of authorization. `orla login` walks the ordinary\nOAuth code flow with S256 PKCE: the browser lands on Orla's own consent page,\nwhere you tick the spaces this machine may reach.\n\n**It does not move money.** A personal connection reads and records. Payments,\ntransfers and card details belong to an agent connected for that purpose, with\nits own limits, set in the app under Agents. The tools that move money are not\nin the list this connection is given, and are refused at the endpoint if asked\nfor by name.\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `orla login [--api URL]` | Connect this machine. Opens a browser. |\n| `orla logout` | Forget the stored session. |\n| `orla whoami` | Which connection this is and which spaces it reaches. |\n| `orla spaces` | The spaces in reach. |\n| `orla use <space-id>` | Remember one as the default. |\n| `orla accounts` | Accounts in the space. |\n| `orla tx list` | Transactions. `--from --to --search --account --limit`. |\n| `orla tx add` | Record one. `--account --kind --amount --date [--payee --note]`. |\n| `orla export` | The same rows as CSV on stdout. |\n| `orla tools` | Which tools this connection was given. |\n| `orla mcp` | stdio bridge (below). |\n\n`--space <id>` on anything space-scoped, `--json` for machine-readable output.\n\n## As an MCP server\n\nOrla's MCP server is remote and speaks Streamable HTTP:\n\n```\nhttps://app.orla.finance/api/mcp\n```\n\nA client that supports remote MCP needs nothing from this package. Point it at\nthat URL and it will find the consent page by itself. Claude Code, for example:\n\n```bash\nclaude mcp add --transport http orla https://app.orla.finance/api/mcp\n```\n\nClients that only support stdio servers can run this CLI as one. It relays\nJSON-RPC to the HTTP endpoint and holds the token, so the client needs no OAuth\nsupport of its own:\n\n```json\n{\n  \"mcpServers\": {\n    \"orla\": { \"command\": \"npx\", \"args\": [\"-y\", \"orla-cli\", \"mcp\"] }\n  }\n}\n```\n\nRun `npx orla-cli login` once first. The bridge uses that session and refreshes it.\n\nThe server is listed in the official MCP registry as **`finance.orla/orla`**,\nwhich is the name a client or a directory should resolve it by. The entry\ncarries both doors: the remote endpoint above and this package for stdio.\n\nSetup for individual clients is written up at\n[orla.finance/en/mcp](https://orla.finance/en/mcp). That is the personal\nconnection, which reads your books and cannot pay. `/en/ai-agents` is a\ndifferent door, where an agent gets a budget and a card of its own.\n\n## Where the token lives\n\nThe OS keychain: `security` on macOS, `secret-tool` on Linux. Where neither\nexists it falls back to a `0600` file under your config directory and says so\non stderr, because a refresh token quietly landing on disk is not something to\ndiscover later.\n\n`orla logout` clears both.\n\n## Development\n\n```bash\nnpm install\nnpm run check   # types\nnpm run build   # dist/\n```\n\nThe server this talks to is not in this repository. `--api` points the CLI at a\ndifferent deployment, and the session records which one minted it, so a token\nfrom one environment is never replayed against another.\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n",
  "bytes": 4057,
  "sha": "33774bffb173a79d81b074d89e335240d43c736d6feaf0d5c62206d168db9bdc",
  "repo_slug": "cheetah-trade/orla-cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_finance_orla_orla_abddaf08/readme"
}