Documentation
Monarch Money CLI
monarch-money-pp-cli
Install
npx -y @mvanhorn/printing-press-library install monarch-moneyInstalls the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.
Documentation
Monarch Money CLI generated with CLI Printing Press.
This CLI wraps Monarch's browser API/GraphQL interface for practical terminal and agent workflows: checking connectivity, listing accounts and tags, reviewing transactions, summarizing cashflow, creating and editing manual transactions, and running guarded read-only GraphQL queries.
Created by @count (Count).
Authentication
The CLI supports either a saved session or an environment token. Prefer environment variables over putting credentials directly in shell history:
MONARCH_EMAIL='user@example.com' MONARCH_PASSWORD='...' monarch-money-pp-cli login
monarch-money-pp-cli status
If MFA is required:
MONARCH_EMAIL='user@example.com' MONARCH_PASSWORD='...' monarch-money-pp-cli login --mfa 123456
monarch-money-pp-cli status
Environment fallback:
export MONARCH_TOKEN='...'
monarch-money-pp-cli status
Session file:
~/.monarch-pp-cli/session.json
The login flow requests Monarch's trusted-device /auth/login/ token and refuses to save short-lived JWT-style feature tokens.
Unique Features
-
Guarded GraphQL query runner —
querylets advanced users run custom read-only Monarch GraphQL query files while refusing files that contain GraphQL mutations.monarch-money-pp-cli query query.graphql --operation OperationName --variables '{"limit":10}' -
Explicit transaction writes — create, update, tag, and delete transaction workflows are exposed as first-class commands. Write commands dry-run by default and require
--yesto apply.monarch-money-pp-cli transactions update TRANSACTION_ID --notes 'Reviewed by agent' monarch-money-pp-cli transactions update TRANSACTION_ID --notes 'Reviewed by agent' --yes
Commands
login— log in and save a local session tokenstatus— verify connectivity with a read-only GraphQL requestdoctor— check local auth and live connectivityaccounts— list accounts with balances, type, and institutiontags— list household transaction tags and countstransactions— list recent transactions with merchant, category, account, amount, and tagstransactions create— create a manual transaction; dry-run unless--yesis passedtransactions update— update a transaction by ID; dry-run unless--yesis passedtransactions set-tags— replace all tags on a transaction; dry-run unless--yesis passedtransactions delete— delete a transaction by ID; dry-run unless--yesis passedcashflow— summarize income, expenses, net savings, and savings rate for a date rangequery— run a read-only GraphQL query from a file; GraphQL mutations are refused
Examples
monarch-money-pp-cli accounts
monarch-money-pp-cli tags --limit 20
monarch-money-pp-cli transactions --days 30 --limit 25
monarch-money-pp-cli transactions --start 2026-01-01 --end 2026-01-31 --json
monarch-money-pp-cli transactions create --date 2026-01-15 --account-id ACCOUNT_ID --amount -42.50 --merchant 'Coffee Shop' --category-id CATEGORY_ID
monarch-money-pp-cli transactions update TRANSACTION_ID --category-id CATEGORY_ID --notes 'Reviewed'
monarch-money-pp-cli transactions set-tags TRANSACTION_ID --tag-id TAG_ID --tag-id ANOTHER_TAG_ID
monarch-money-pp-cli cashflow --start 2026-01-01 --end 2026-01-31
Safety model
GraphQL writes are exposed through explicit commands with narrow inputs. Transaction write commands print a dry-run payload by default and require --yes before sending a mutation to Monarch.
query performs a safety check and refuses query files containing mutation; it is not a raw write escape hatch.
Known limitations
- Monarch Money does not publish an official public OpenAPI spec, so this implementation is based on observed browser/GraphQL behavior and the community Python client.
- Authentication may require MFA depending on the account.
- GraphQL schema changes upstream may require query updates.
For agents: pass /documentation/monarch-money/agents.md to install this CLI from a prompt.