Skip to content
Agentmart
Submit a tool

Monarch Money

MCP server for Monarch Money — account, transaction, and budget management.

Connector by pulsemcp.com · Domain verified by the MCP Registry

IndexedMITLocal (stdio)★ 81
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/pulsemcp-com-monarch-money

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for Monarch Money — account, transaction, and budget management.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
10 read · 8 write · 3 delete · 2 not yet classified
Secrets
5 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 23

Read from the source code; the running server may list different tools.

Read 10 · Look things up without changing anything.

  • check_authentication
  • get_account_balance_history
  • get_accounts
  • get_budgets
  • get_categories
  • get_net_worth
  • get_tags
  • get_transaction_details
  • get_transaction_rules
  • get_transactions

Write 8 · Create, change, send or run things.

  • create_tag
  • create_transaction
  • create_transaction_rule
  • monarch_login_with_token
  • set_account_balance_history
  • set_budget_amount
  • update_transaction
  • update_transaction_rule

Delete 3 · Delete, drop, revoke or wipe things.

  • delete_tag
  • delete_transaction
  • delete_transaction_rule

Not yet classified 2 · We could not tell from the name and description.

  • refresh_accounts
  • split_transaction

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • MONARCH_EMAIL_OTP
  • MONARCH_PASSWORD
  • MONARCH_SESSION_PASSPHRASE
  • MONARCH_SESSION_TOKEN
  • MONARCH_TOTP

Other settings (environment variables or headers).

  • MONARCH_DISABLED_TOOLS
  • MONARCH_EMAIL
  • MONARCH_ENABLED_TOOLS
  • MONARCH_ENABLED_TOOL_GROUPS
  • MONARCH_STATE_DIR

Tools (23)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • check_authentication

    Check whether the Monarch Money MCP server has a valid session, and return setup instructions when it does not. When authenticated, returns: ```json { "authenticated": true, "email": "you@example.com", "id": "user_123", "name": "Your Name", "sessionPath": "/home/you/.monarch-money-mcp/session.enc", "obtainedAt": "2026-01-15T12:34:56.000Z" } ``` When not authenticated, returns a multi-line string explaining the four ways to authenticate the server: 1. **Env-var token (simplest, headless)** — Set `MONARCH_SESSION_TOKEN=<token>` in the server's environment. Useful for sandboxed or …

  • create_tag

    Create a new transaction tag. Returns the created tag ({ id, name, color, order }); Monarch assigns `order` server-side. Both `name` and `color` are required. `color` is a hex string like the ones returned by `get_tags` (e.g. `#19d2a5`, `#ff8800`) — call `get_tags` first if you need to match an existing palette. Example call: ```json { "name": "Reimbursable", "color": "#19d2a5" } ``` Example response: ```json { "id": "tag_new", "name": "Reimbursable", "color": "#19d2a5", "order": 7 } ``` **Use cases:** - Add a tag you'll then assign to transactions via `update_transaction` (`tagIds`) - Set…

  • create_transaction

    Create a manual transaction. Use this for cash spending or other transactions Monarch can't import automatically. The amount sign matters: negative = expense (money out), positive = income (money in). Example response: ```json { "id": "tx_new123", "amount": -12.50, "date": "2026-01-20", "account": { "id": "acc_chk", "displayName": "Checking" }, "merchant": { "id": "m_new", "name": "Coffee Shop" } } ``` **Use cases:** - Log cash spending Monarch can't see - Backfill a missing transaction - Add a one-off income event (gift, refund, side income)

  • create_transaction_rule

    Create a transaction rule that auto-classifies imported transactions. A rule has **criteria** (what it matches) and **actions** (what it does to matches). Supply at least one criterion and at least one action. Criteria: - `merchantCriteria` — array of { operator, value } matchers against the merchant name (e.g. operator `contains`). - `merchantCriteriaUseOriginalStatement` — match against the raw bank statement text instead of the cleaned merchant name. - `amountCriteria` — single { operator, value, isExpense } matcher (e.g. operator `gte`). - `categoryIds` / `accountIds` — only match transa…

  • delete_tag

    Delete a transaction tag by id. Removes the tag from the workspace and unassigns it from any transactions that carried it. Returns `{ deleted, errors }`. `deleted` is confirmed by re-reading the tag list after the mutation (Monarch's raw `deleted` flag is not trusted). Example call: ```json { "id": "tag_old" } ``` **Use cases:** - Remove a stale or accidentally-created tag - Clean up tags left behind by earlier automation Use `get_tags` to look up the tag id first.

  • delete_transaction

    Permanently delete a transaction. This action cannot be undone. Example response: ```json { "deleted": true, "errors": [] } ``` **Use cases:** - Remove a duplicate manual entry - Delete a transaction created by mistake

  • delete_transaction_rule

    Permanently delete a transaction rule by id (from `get_transaction_rules`). This action cannot be undone. Existing transactions the rule already classified are not reverted. Example response: ```json { "deleted": true, "errors": [] } ``` **Use cases:** - Remove a rule that mis-categorizes transactions - Clean up a rule that is no longer needed

  • get_account_balance_history

    Daily balance snapshots for a single account over a date range. Useful for charting a balance curve, computing average balance, or spotting a sudden drop. Example response: ```json [ { "date": "2026-01-01", "balance": 4321.55 }, { "date": "2026-01-02", "balance": 4180.22 } ] ``` **Use cases:** - Plot a per-account balance chart - Compute month-over-month balance change for one account - Investigate a specific date when a balance dropped unexpectedly

  • get_accounts

    List every account connected to the Monarch Money workspace, including assets and liabilities. Returns balance, type/subtype, hidden/sync flags, last update time, and the linked institution. Use this as the starting point for nearly every read operation — most other tools take an account id you'll find here. Set `includeHoldings: true` to attach investment holdings (ticker, quantity, value, cost basis) to each account that tracks them. Holdings are an extra GraphQL request per account, so omit the flag when you only need balances. Example response (with `includeHoldings: true`): ```json [ …

  • get_budgets

    List per-category planned budget amounts across one or more months. Each row pairs a category with its planned amount for a single month — multi-month windows return one row per (category, month). Date arguments take the year-month portion of the YYYY-MM-DD value; the day is ignored. Omit both dates to get the current month's budgets. Example response: ```json [ { "categoryId": "cat_food", "categoryName": "Groceries", "amount": 600, "month": "2026-01-01" }, { "categoryId": "cat_dine", "categoryName": "Dining", "amount": 250, "month": "2026-01-01" } ] `…

  • get_categories

    List every category configured on the workspace, with its parent group and "system category" flag (system categories are predefined by Monarch and can't be renamed). Set `includeGroups: true` to also return the top-level category groups (Income, Expense, Transfer, etc.) — useful for rendering a grouped picker. The shape becomes `{ categories, groups }` instead of a bare array. Example response (default): ```json [ { "id": "cat_food", "name": "Groceries", "isSystemCategory": false, "group": { "id": "grp_exp", "name": "Expense" } }, { "id": "cat_dine", "name": "Dining", "isSystemCat…

  • get_net_worth

    Net worth view, returned in two flavors: - Default (`view: "history"`): time series of net worth (and assets/liabilities) over a date range. Omit both dates to fetch the full history Monarch has on file. - `view: "by_type"`: current net worth grouped by account type (e.g., depository, brokerage, credit, loan), synthesized client-side from `get_accounts`. Use for "how is my net worth distributed?" style questions. Date params are ignored in this view. Example response (`view: "history"`): ```json [ { "date": "2026-01-01", "netWorth": 124300, "assets": 162400, "liabilities": -38100 }, { "d…

  • get_tags

    List all transaction tags configured on the workspace, with name, color, and display order. Example response: ```json [ { "id": "tag_personal", "name": "Personal", "color": "#ff8800", "order": 1 }, { "id": "tag_work", "name": "Work", "color": "#0088ff", "order": 2 } ] ``` **Use cases:** - Discover tag ids for use with `update_transaction` (`tagIds`) - Render a tag picker - Look up an existing tag's id before deleting it with `delete_tag`, or its `color` format before calling `create_tag`

  • get_transaction_details

    Fetch a single transaction by id, including its splits (if any). Use after get_transactions (`view: "list"`) to drill into a specific row. Example response: ```json { "id": "tx_abc", "amount": -42.18, "date": "2026-01-15", "merchant": { "id": "m_1", "name": "Whole Foods" }, "category": { "id": "cat_food", "name": "Groceries" }, "splits": [ { "id": "split_1", "amount": -32.18, "category": { "id": "cat_food", "name": "Groceries" } }, { "id": "split_2", "amount": -10.00, "category": { "id": "cat_house", "name": "Household" } } ] } ``` **Use cases:** - Inspect splits of a …

  • get_transaction_rules

    List every transaction rule configured on the workspace. Rules auto-classify imported transactions based on merchant/amount/account criteria. Example response: ```json [ { "id": "rule_1", "order": 1, "merchantCriteria": [{ "operator": "contains", "value": "Whole Foods" }], "amountCriteria": { "operator": "gte", "value": 50, "isExpense": true }, "categoryIds": ["cat_food"], "accountIds": ["acc_chk"], "setCategoryAction": { "id": "cat_groceries", "name": "Groceries" }, "setHideFromReportsAction": false, "addTagsAction": [{ "id": "tag_food", "name": "Food" }…

Show 8 more tools
  • get_transactions

    Query transactions in five different shapes — pick the one that matches what you actually want to know. **View enum:** - `list` (default) — paged list of transactions with filters. Returns `{ totalCount, results }`. Use this for "show me all transactions matching X." - `summary` — aggregate totals (count, total income, total expense, average) over a date range. Fast top-line view. Requires `startDate` + `endDate`. - `cashflow` — income / expense / savings / savings rate over a date range. Requires `startDate` + `endDate`. - `by_category` — total spend per category over a date range. One row p…

  • monarch_login_with_token

    Save a pre-obtained Monarch Money session token to encrypted on-disk storage. The token is written to `~/.monarch-money-mcp/session.enc` (or `MONARCH_STATE_DIR/session.enc` when set), encrypted with AES-256-GCM. Once saved, all other tools will pick it up automatically — no env var configuration needed. This tool is for users who already have a valid session token. Most users should run the login script (`npm run login`) instead, which performs the email/password/TOTP exchange for you. The tool will validate the token by calling Monarch's `me` endpoint before saving. An invalid token return…

  • refresh_accounts

    Force a sync against the upstream financial institutions for the given accounts (or all accounts when omitted). This is a long-running operation on Monarch's side — the tool returns immediately once the sync is enqueued. Example response: ```json { "enqueued": true, "accounts": "all", "errors": [] } ``` **Use cases:** - Pull the latest balances before generating a report - Recover from a stuck or stale account sync - Force a refresh after manually fixing institution credentials

  • set_account_balance_history

    Set the recorded daily balance history for a (manual) account. This edits the balance chart / snapshots you see in Monarch — NOT a transaction, and NOT just the single "current balance". **How Monarch stores this:** balances are per-day snapshots. Monarch has no GraphQL mutation for dated balances; this tool drives Monarch's "Upload Balance History" importer under the hood (upload a date,balance CSV → parse → poll to completion). Writes are a **per-date UPSERT**: every date you specify is set/created; dates you don't specify are left unchanged. Only works on manual accounts (synced accounts g…

  • set_budget_amount

    Set the planned budget amount for a category for a single month. Pass `applyToFuture: true` to roll the change forward to all subsequent months; otherwise the change applies only to the month containing `startDate` (or the current month if `startDate` is omitted). Returns the request echoed back along with the new `budgetItemId` — Monarch's mutation is intentionally minimal and doesn't surface the post-update Budget shape. Example response: ```json { "budgetItemId": "bi_abc123", "categoryId": "cat_food", "amount": 650, "startDate": "2026-01-01", "applyToFuture": false } ``` **Use …

  • split_transaction

    Split a single transaction into multiple categorized parts. The split amounts must sum to the parent transaction's amount. Replaces any existing splits. Returns the new child split transactions (id + amount). Use `get_transactions` with `isSplit: true` if you need richer details on the split children. Example response: ```json [ { "id": "split_1", "amount": -32.18 }, { "id": "split_2", "amount": -10.00 } ] ``` **Use cases:** - Split a Costco run into "Groceries" and "Household" - Allocate a shared dinner across multiple categories - Break out the tip from a restaurant charge

  • update_transaction

    Update fields on a transaction. Single tool that consolidates the per-field "setter" operations. Provide `id` plus any subset of: - `amount`, `date`, `categoryId` — patch the core fields - `merchantName` — rename the merchant via free-form string (Monarch may auto-create a new merchant for unknown names; reassigning to an existing merchant by id is not supported) - `notes` — replace the notes (pass an empty string to clear) - `hideFromReports` — toggle the "hide from reports" flag - `reviewed` — true marks the transaction reviewed; false puts it back in the review queue - `tagIds` — full repl…

  • update_transaction_rule

    Update an existing transaction rule. Provide the rule `id` (from `get_transaction_rules`) plus the rule's complete desired criteria and actions. **This is a FULL REPLACE, not a patch.** The fields you send define the rule's entire new state — any criterion or action you omit is REMOVED from the rule. You must re-supply at least one criterion (`merchantCriteria`, `amountCriteria`, `categoryIds`, or `accountIds`) AND at least one action (`setCategoryAction`, `setHideFromReportsAction`, or `addTagsAction`) on every call. Accepts the same criteria/action fields as `create_transaction_rule`. **Sa…

Signals

Stars
81
Forks
10
Open issues
26
Contributors
4
Last commit (this folder)
Jul 6, 2026 (3 months ago)
Last release
Jul 9, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
com.pulsemcp/monarch-money
Version
0.0.13
Auth
API key
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from pulsemcp.com

Cite this page

Monarch Money MCP server. Agent Mart. https://agentmart.dev/connectors/pulsemcp-com-monarch-money (last updated 2026-10-24)