返回 Skill 列表
extension
分类: 开发与工程无需 API Key

monarch-money

用于Monarch Money预算管理的TypeScript库和CLI。按日期/商家/金额搜索交易,更新类别,列出账户和预算,管理认证。当用户询问有关Monarch Money交易的信息、希望对支出进行分类、需要找到特定交易或希望自动化预算任务时使用。

person作者: jakexiaohubgithub

Monarch Money

CLI and TypeScript library for Monarch Money budget automation.

Prerequisites

Environment Variables (Required)

| Variable | Required | Description | |----------|----------|-------------| | MONARCH_EMAIL | Yes | Monarch Money account email | | MONARCH_PASSWORD | Yes | Monarch Money account password | | MONARCH_MFA_SECRET | Yes | TOTP secret for MFA (see below) |

Getting Your MFA Secret

Monarch Money requires MFA. Generate the TOTP secret:

  1. Login to https://app.monarchmoney.com
  2. Go to Settings > Security > Two-Factor Authentication
  3. If MFA is already enabled: disable and re-enable to get a new secret
  4. When shown the QR code: click "Can't scan? View setup key"
  5. Copy the secret key (base32 string like JBSWY3DPEHPK3PXP)
  6. Complete MFA setup in Monarch Money with an authenticator app
  7. Set the secret: export MONARCH_MFA_SECRET="YOUR_SECRET"

Quick Start

# Check setup
monarch-money doctor

# Login (uses env vars by default)
monarch-money auth login

# List transactions
monarch-money tx list --limit 10

# List categories
monarch-money cat list

CLI Commands

Authentication

# Login with environment variables
monarch-money auth login

# Login with explicit credentials
monarch-money auth login -e email@example.com -p password --mfa-secret SECRET

# Check auth status
monarch-money auth status

# Logout
monarch-money auth logout

Transactions

# List recent transactions
monarch-money tx list --limit 20

# Search by date
monarch-money tx list --start-date 2026-01-01 --end-date 2026-01-31

# Search by merchant
monarch-money tx list --merchant "Walmart"

# Get transaction by ID
monarch-money tx get <transaction_id>

# Update category
monarch-money tx update <id> --category <category_id>

# Update merchant name
monarch-money tx update <id> --merchant "New Name"

# Add notes
monarch-money tx update <id> --notes "My notes here"

Categories

# List all categories
monarch-money cat list

# List with IDs (for updates)
monarch-money cat list --show-ids

Accounts

# List accounts
monarch-money acc list

# Show account details
monarch-money acc get <account_id>

Doctor (Diagnostics)

# Run diagnostic checks
monarch-money doctor

Checks:

  • Environment variables set
  • API connectivity
  • Session validity
  • Node.js version

Library Usage

Import and use the TypeScript library directly:

import { MonarchClient } from 'monarch-money';

const client = new MonarchClient({ baseURL: 'https://api.monarch.com' });

// Login
await client.login({
  email: process.env.MONARCH_EMAIL,
  password: process.env.MONARCH_PASSWORD,
  mfaSecretKey: process.env.MONARCH_MFA_SECRET
});

// Get transactions
const transactions = await client.transactions.getTransactions({ limit: 10 });

// Get categories
const categories = await client.categories.getCategories();

// Get accounts
const accounts = await client.accounts.getAll();

Common Workflows

Find and Update a Transaction

# 1. Find the transaction
monarch-money tx list --date 2026-01-15 --merchant "Target"

# 2. Get category ID
monarch-money cat list --show-ids

# 3. Update the transaction
monarch-money tx update <transaction_id> --category <category_id>

Search Transactions by Date Range

monarch-money tx list --start-date 2026-01-01 --end-date 2026-01-31 --limit 100

Check Budget Status

monarch-money acc list

Error Handling

| Error | Solution | |-------|----------| | "Not logged in" | Run monarch-money auth login | | "MFA code required" | Set MONARCH_MFA_SECRET environment variable | | "Invalid credentials" | Verify email/password work at app.monarchmoney.com | | "Session expired" | Run monarch-money auth login again |

Session Management

Sessions are cached locally at ~/.mm/session.json. After initial login, subsequent commands reuse the saved session for faster execution.

To clear the session: monarch-money auth logout

Automation Workflows

Weekly Reconciliation (Cron: Sunday 9am)

Automatically reviews recent transactions and sends Telegram summary of:

  • Transactions that look miscategorized
  • Uncategorized transactions needing review

Manual Review

# Review last 30 days of transactions
cd skills/monarch-money && node dist/cli/index.js tx search --limit 50

# Search for specific merchant
node dist/cli/index.js tx search --merchant "Amazon" --limit 20

# List categories with IDs
node dist/cli/index.js cat list

Re-categorize Transactions

# Find category ID
node dist/cli/index.js cat search "Gas"

# Apply category to transaction
node dist/cli/index.js tx categorize <transaction_id> <category_id>

# Update merchant name
node dist/cli/index.js tx update <id> --merchant "Corrected Name"

# Add notes
node dist/cli/index.js tx update <id> --notes "Business expense - Client X"

Auto-Categorization Rules

Edit references/categorization-rules.json to add merchant patterns:

{
  "gas": {
    "category": "Gas",
    "patterns": ["sheetz", "shell", "exxon"]
  }
}

References