Skip to content
Agentmart
Submit a tool

Monarch MCP Server

Query and update Monarch Money accounts, transactions, and budgets

Connector by jamiew · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 28
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/jamiew-monarch-mcp

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

Query and update Monarch Money accounts, transactions, and budgets

Use cases: finance-accounting, data-analysis

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, install config and code. Checked Oct 25, 2026.

Tools
18 read · 9 write · 2 delete
Secrets
2 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Python package

Tools by what they do 29

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

Read 18 · Look things up without changing anything.

  • analyze_spending_patterns
  • get_account_history
  • get_account_holdings
  • get_accounts
  • get_all_holdings
  • get_budgets
  • get_cashflow
  • get_complete_financial_overview
  • get_household_members
  • get_institutions
  • get_recurring_transactions
  • get_spending_summary
Show 6 more tools
  • get_transaction_categories
  • get_transaction_details
  • get_transaction_rules
  • get_transaction_splits
  • get_transactions
  • search_transactions

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

  • create_manual_account
  • create_transaction
  • create_transaction_rule
  • refresh_accounts
  • set_budget_amount
  • update_recurring_transaction
  • update_transaction
  • update_transaction_rule
  • update_transactions_bulk

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

  • delete_transaction_rule
  • update_transaction_splits

Secrets and settings it asks for

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

  • MONARCH_MFA_SECRET
  • MONARCH_PASSWORD

Other settings (environment variables or headers).

  • MONARCH_EMAIL
  • MONARCH_FORCE_LOGIN

Network hosts it talks to 1

  • github.com · found in code

Files it touches

  • Your home directory (~)

Tools (29)

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

  • analyze_spending_patternsAnalyze Spending Patterns

    Summarize monthly trends, category expenses, account usage, and budget data. Args: lookback_months: Months before today to include (default: 6). include_forecasting: Include average-based income and expense estimates. verbose: Include full budget details instead of monthly budget totals. Requests one page of up to 2000 transactions, without pagination; analysis can be incomplete for larger periods. Forecasts average up to three month buckets in response order, not necessarily the latest three calendar months. The confidence label is fixed, not a statistical measure. Failed transa…

  • create_manual_accountCreate Manual Account

    Create a manual account with account_name, Monarch account_type, and balance.

  • create_transactionCreate Transaction

    Create a manual transaction. Args: amount: Positive for income, negative for an expense. merchant_name: Merchant/payee display name. account_id: Account ID from get_accounts. date: Transaction date in YYYY-MM-DD format. category_id: Required category ID from get_transaction_categories. notes: Optional memo. update_balance: False records the transaction without changing the account balance. True also adjusts the balance, useful for manual accounts. Returns the created transaction details.

  • create_transaction_ruleCreate Transaction Rule

    Create an automation rule. A rule needs at least one action and a merchant, statement, or amount criterion. Without one of those three, Monarch ignores later edits to the rule. Criteria (a transaction must match all of them; values in one list are "or"): merchant_criteria: Merchant name text, e.g. [{"operator": "contains", "value": "Corner Deli"}]. original_statement_criteria: Bank statement text, same shape. amount_criteria: {"operator": "gt"|"lt"|"eq", "value": 20} or {"operator": "between", "lower": 10, "upper": 50}. Amounts have no sign. is_expense=True (the d…

  • delete_transaction_ruleDelete Transaction Rule

    Delete an automation rule by ID from get_transaction_rules. Transactions the rule already changed keep their current values. Deletion is confirmed by reading the rule list again.

  • get_account_historyGet Account History

    Get a page of balance history for account_id from get_accounts. Optional YYYY-MM-DD bounds are inclusive; an omitted bound is unbounded. Filtering precedes local paging, preserving Monarch's snapshot order. limit: 1–1000 (default 100); offset: zero-based position after filtering. Follow next_offset until null. total_count counts all matching snapshots. Monarch still returns the full history upstream; the MCP response is bounded.

  • get_account_holdingsGet Account Holdings

    Get investment holdings for an account_id from get_accounts.

  • get_accountsGet Accounts

    Retrieve all linked financial accounts.

  • get_all_holdingsGet All Brokerage Holdings

    Get holdings grouped by brokerage account, not all asset classes. Fetches accounts, then holdings for each brokerage account concurrently. A failed account request fails the entire call; this is not a single API request.

  • get_budgetsGet Budgets

    Retrieve budgets for optional start_date/end_date filters. Dates accept ISO strings or natural language such as 'last month'. A missing end defaults to today; a missing start to the first day of the end date's month.

  • get_cashflowGet Cashflow

    Retrieve cash flow for optional start_date/end_date filters. Dates accept ISO strings or natural language such as 'last month'. A missing end defaults to today; a missing start to the first day of the end date's month.

  • get_complete_financial_overviewComplete Financial Overview

    Fetch a compact financial overview; verbose=True includes full API details. period is a start date or phrase such as 'this month', 'last month', or 'this year'; the end is always today. 'last month' therefore includes the current month too. Transactions and their summary use one page of up to 500 entries, not the full history. Failed API sections contain errors while successful sections remain. Default: account IDs/names/balances/types, monthly budget totals, cashflow totals, and a transaction summary. Raw transactions/categories are null unless verbose. Use their dedicated tools for details.…

  • get_household_membersGet Household Members

    List current household members and IDs for transaction ownership. Pending invitations are excluded. Use an ID as owner_user_id in transaction updates, or "" for Shared; a missing/null owner_user_id leaves it unchanged.

  • get_institutionsGet Institutions

    Get linked financial institutions.

  • get_recurring_transactionsGet Recurring Transactions

    Get scheduled recurring occurrences, not the posted transaction history. Dates accept ISO dates or natural language such as "today" or "last month". With neither date, fetch the current calendar month. With only one date, use the beginning or end of that date's month for the missing bound. The recurring.recurringTransactionItems list includes each occurrence's date, amount, account, category, transactionId (when matched), and stream containing the merchant ID, frequency, and expected amount. isPast describes the date, not whether a bill was paid. Use get_transactions(is_recurring=True) for r…

Show 14 more tools
  • get_spending_summaryGet Spending Summary

    Summarize income, expenses, and net by category, account, or month. Args: start_date: Inclusive start; accepts ISO dates or natural language. end_date: Inclusive end; accepts the same formats. A missing end defaults to today; a missing start to the first day of the end date's month. group_by: 'category', 'account', or 'month'; other values produce one group. Fetches all matching pages. Expenses are positive magnitudes.

  • get_transaction_categoriesGet Transaction Categories

    List category IDs and names for lookups and transaction updates. verbose=True preserves full API details, including groups and system flags. Returns categories, count, and verbose.

  • get_transaction_detailsGet Transaction Details

    Get one transaction's split linkage, amount, merchant, and category_id. Compact get_transactions/search_transactions results omit split flags. Verbose results identify split legs with isSplitTransaction but do not expose their parent IDs. This tool returns a leg's parent_transaction_id or a parent's has_split_transactions flag and split_transaction_ids. Use these IDs to fetch details for individual legs; an unsplit transaction or a split leg returns an empty list. Use this before get_transaction_splits or update_transaction_splits when you need the parent ID. transaction_id is the resolved I…

  • get_transaction_rulesGet Transaction Rules

    Read a page of automation rules in priority order, without modifying them. limit: 1–100 (default 25); offset: zero-based position. Follow next_offset until null; count is this page and total_count is all rules. Paging is local. Compact results omit null/empty object fields and GraphQL type labels, but preserve false, zero, and active criteria/actions. verbose=True returns the full upstream objects for the requested page.

  • get_transaction_splitsGet Transaction Splits

    Get split legs for transaction_id from get_transactions or search_transactions. Returns transaction_id, has_split_transactions, and splits with each leg's amount, category, merchant, and notes. An unsplit transaction has an empty list.

  • get_transactionsGet Transactions

    Fetch one page of transactions. Args: limit: Maximum transactions to request (default: 100). offset: Transactions to skip for pagination. start_date: Inclusive start; accepts ISO dates, 'last month', or '30 days ago'. Without end_date, the end defaults to today. end_date: Inclusive end, with the same date formats. Without start_date, the start defaults to the first day of the end date's month. account_id: Account ID from get_accounts. category_id: Category ID from get_transaction_categories. tag_ids: Comma-separated tag IDs. has_attachments: Tru…

  • refresh_accountsRefresh Accounts

    Request an institution refresh for all accounts; do not wait for completion.

  • search_transactionsSearch Transactions

    Search one page of transactions using Monarch's text search. Args: query: Nonempty search text for Monarch's transaction search. limit: Maximum transactions to request (default: 500). offset: Transactions to skip for pagination. start_date: Inclusive start, accepting ISO dates or natural language. Without end_date, the end defaults to today. end_date: Inclusive end. Without start_date, the start defaults to the first day of the end date's month. account_id: Account ID from get_accounts. category_id: Category ID from get_transaction_categories. t…

  • set_budget_amountSet Budget Amount

    Set amount for a category_id from get_transaction_categories.

  • update_recurring_transactionUpdate Recurring Transaction

    Change a merchant's recurring schedule, not an individual transaction. This affects the merchant-wide recurrence. Get merchant_id from an occurrence's stream.merchant.id, not stream.id or transactionId. Pass the current merchant_name to avoid renaming the merchant. Omitted settings stay unchanged; provide at least one. is_recurring enables or removes recurrence; is_active pauses or resumes a schedule. frequency is Monarch's string (for example, "monthly"). base_date is the schedule's anchor date and accepts the same date formats as get_recurring_transactions. amount uses Monarch's signed amo…

  • update_transactionUpdate Transaction

    Update a transaction, leaving omitted fields unchanged. Args: transaction_id: Transaction ID from get_transactions or search_transactions. amount: New amount. merchant_name: New display name, not the read-only plaidName statement text. The API ignores empty names. category_id: New category ID from get_transaction_categories. date: New date in YYYY-MM-DD format. notes: Memo, separate from the merchant name; "" clears it. goal_id: Savings goal ID; "" clears the association. hide_from_reports: Whether to hide the transaction from reports. needs_review:…

  • update_transaction_ruleUpdate Transaction Rule

    Edit a rule, and optionally run it on existing transactions. Get rule_id from get_transaction_rules. Arguments you leave out keep their current value. To clear a value, pass [] for a list or "" for set_category_id, set_merchant_name, or review_status. clear_amount_criteria removes the amount criterion. A list replaces the whole old list. Shapes match create_transaction_rule. Monarch replaces the whole rule on update. So this reads the rule first and sends it back with your changes, which keeps settings this tool can't edit, such as owners, goals, and splits. The edited rule must keep at leas…

  • update_transaction_splitsUpdate Transaction Splits

    Replace a transaction's entire set of splits, or remove all splits with []. Args: transaction_id: Parent transaction ID. For a split leg from list/search, resolve parent_transaction_id with get_transaction_details first. splits: Complete replacement list. Each leg accepts: - amount (required): Negative for expenses, positive for income. Amounts must sum to the parent's amount or Monarch rejects the update. - category_id: Category ID for the leg. - merchant_name: Display name; defaults to the parent merchant. - notes: Per-leg memo. Exa…

  • update_transactions_bulkBulk Update Transactions

    Update transactions concurrently, returning per-item results and counts. Args: updates: JSON array encoded as a string. Each item requires a nonempty transaction_id and accepts amount, merchant_name, category_id, date (YYYY-MM-DD), notes, goal_id, hide_from_reports, needs_review, and owner_user_id. Fields have the same meaning as update_transaction; omitted/null fields stay unchanged. Empty notes or goal_id clears that value; empty owner_user_id makes the transaction Shared. Items reject unknown fields and wrong types without coercion; amounts must…

Signals

Stars
28
Forks
11
Open issues
0
Contributors
7
Weekly downloads
220
Last commit
Sep 29, 2026 (1 month ago)
Last release
Sep 29, 2026 (1 month ago)
Last package publish
Sep 29, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.jamiew/monarch-mcp
Version
0.5.2
Auth
API key
Packages
pypi monarch-mcp-jamiew
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from jamiew

Cite this page

Monarch MCP Server. Agent Mart. https://agentmart.dev/connectors/jamiew-monarch-mcp (last updated 2026-10-24)