Monarch MCP Server
Query and update Monarch Money accounts, transactions, and budgets
Connector by jamiew · GitHub account verified by the MCP Registry
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.
About
Use cases: finance-accounting, data-analysis
Reviews
Write a reviewNo 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_patternsget_account_historyget_account_holdingsget_accountsget_all_holdingsget_budgetsget_cashflowget_complete_financial_overviewget_household_membersget_institutionsget_recurring_transactionsget_spending_summary
Show 6 more tools
get_transaction_categoriesget_transaction_detailsget_transaction_rulesget_transaction_splitsget_transactionssearch_transactions
Write 9 · Create, change, send or run things.
create_manual_accountcreate_transactioncreate_transaction_rulerefresh_accountsset_budget_amountupdate_recurring_transactionupdate_transactionupdate_transaction_ruleupdate_transactions_bulk
Delete 2 · Delete, drop, revoke or wipe things.
delete_transaction_ruleupdate_transaction_splits
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
MONARCH_MFA_SECRETMONARCH_PASSWORD
Other settings (environment variables or headers).
MONARCH_EMAILMONARCH_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 PatternsSummarize 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 AccountCreate a manual account with account_name, Monarch account_type, and balance.
create_transactionCreate TransactionCreate 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 RuleCreate 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 RuleDelete 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 HistoryGet 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 HoldingsGet investment holdings for an account_id from get_accounts.
get_accountsGet AccountsRetrieve all linked financial accounts.
get_all_holdingsGet All Brokerage HoldingsGet 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 BudgetsRetrieve 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 CashflowRetrieve 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 OverviewFetch 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 MembersList 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 InstitutionsGet linked financial institutions.
get_recurring_transactionsGet Recurring TransactionsGet 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 SummarySummarize 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 CategoriesList 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 DetailsGet 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 RulesRead 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 SplitsGet 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 TransactionsFetch 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 AccountsRequest an institution refresh for all accounts; do not wait for completion.
search_transactionsSearch TransactionsSearch 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 AmountSet amount for a category_id from get_transaction_categories.
update_recurring_transactionUpdate Recurring TransactionChange 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 TransactionUpdate 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 RuleEdit 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 SplitsReplace 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 TransactionsUpdate 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
- Repository
- github.com/jamiew/monarch-mcp
- 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)