Skip to main content
Glama
monarch-mcp2-obot

monarch-mcp2-obot

by dcode

monarch-mcp2-obot

Lint Tests Documentation License: MIT

A single-tenant Monarch Money MCP server for self-hosting behind obot, forked from erikrubstein/monarch-mcp2 (itself not a fork of the more commonly-seen robcerda/monarch-mcp-server family — it's an independent implementation backed by its own API client, monarch-api2).

Full documentation: https://dcode.github.io/monarch-mcp2-obot/

This fork exists for four reasons upstream didn't cover:

  1. Ported to MCP Python SDK v2 (MCPServer, not the deprecated v1 FastMCP).

  2. A login workflow built for obot: credentials configured once as environment variables, with optional TOTP-seed support so an authenticator-app MFA challenge can be solved automatically — no browser, no OS keyring, no copying a 6-digit code by hand.

  3. Deliberately single-tenant: exactly one Monarch account per running instance. No tool call can target a different account's session, even if a client tried to send one — see "Single-tenant, on purpose" below.

  4. Resilient to session expiry: a tool call that fails because the saved session expired is retried once, transparently, after a fresh login — see "Automatic re-login on session expiry" below.

Not affiliated with, endorsed by, or supported by Monarch Money.

What's inherited from upstream

125 tools across 14 groups — accounts, transactions, budget, cashflow, categories, goals, household, investments, merchants, receipts, recurring, reports, tags — unchanged from monarch-mcp2. See its tool list and design notes for what's covered and what's deliberately out of scope (transaction rules and automation, provider account-connection flows, account-admin edges).

Related MCP server: monarch-mcp

What's different here

Auth: auth_login, auth_status

Two new tools, on top of upstream's auth_create_session / auth_save_session / auth_load_session (which still work, for a fully manual one-shot login):

  • auth_login — no arguments needed if the server's environment has MONARCH_EMAIL / MONARCH_PASSWORD (and, for authenticator-app MFA, MONARCH_TOTP_SECRET) configured. Handles an MFA challenge automatically by computing the current code from the seed. Pass email / password / totp_secret / mfa_code explicitly to override for a one-off login without touching server config.

  • auth_status — reports whether a session exists and is currently valid (one lightweight API call by default), without ever returning the session token.

The server also attempts this login automatically at startup if credentials are configured — best-effort, non-fatal, so a wrong password or a down network doesn't prevent the server from starting; auth_status and auth_login remain available to diagnose and retry.

TOTP seed: the same base32 secret an authenticator app would be enrolled with (what you'd scan as a QR code). Monarch shows this once when you enable authenticator-app MFA — save it there, or you'll need to disable and re-enable MFA to get a fresh one. This only applies if your account's MFA method is an authenticator app; email-code MFA isn't automatable this way (there's no seed to compute a code from) and still needs a human to relay a fresh code via auth_login's mfa_code argument.

Automatic re-login on session expiry

If a saved session expires mid-use, every tool call now goes through a re-login retry (reauth.py): a failure that looks like an expired/invalid session (matched against the wording Monarch's API is known to return for a 401) triggers one fresh login and one retry of the original call, if credentials are configured. auth_* tools are exempt (retrying a login failure by logging in again would just mask the real error), and this never retries more than once — see the docs' Authentication page for the exact matching rules and limits.

Single-tenant, on purpose

session_path exists on every underlying function (a monarch-api2 convention) but is stripped from every tool's public schema before it's exposed to an MCP client — see tool_metadata.py. One deployment, one Monarch account, one session file, chosen once via MONARCH_SESSION_PATH / MONARCH_CONFIG_DIR. This isn't just a config default: no tool call can override it per-request, by design, even if a client sent one anyway (see tests/test_server.py::test_tool_call_ignores_session_path_even_if_a_client_sends_it).

Transport selection for obot's two deployment models

obot supports MCP servers two ways relevant here: command/uvx-based (stdio) and Docker-based (a port plus a streamable-http endpoint). Both are supported via MCP_TRANSPORT (default stdio); the Docker image sets it to streamable-http by default. See config.py / server.py.

Environment variables

Variable

Purpose

Default

MONARCH_EMAIL

Monarch account email, for automatic login

—

MONARCH_PASSWORD

Monarch account password

—

MONARCH_PASSWORD_FILE

Read the password from this file instead (Docker/Kubernetes secret mounts)

—

MONARCH_TOTP_SECRET

Base32 authenticator-app seed, for automatic MFA

—

MONARCH_TOTP_SECRET_FILE

Read the TOTP seed from this file instead

—

MONARCH_SESSION_PATH

Exact path to the session file

$MONARCH_CONFIG_DIR/session.json

MONARCH_CONFIG_DIR

Directory for the default session path

~/.config/monarch

MCP_TRANSPORT

stdio | sse | streamable-http

stdio (Dockerfile overrides to streamable-http)

MCP_HOST

Bind host for sse/streamable-http

0.0.0.0

MCP_PORT

Bind port for sse/streamable-http

8000

Treat MONARCH_PASSWORD and MONARCH_TOTP_SECRET like any other secret. obot's single-user MCP server model marks fields like these "sensitive" when an admin configures the server, which covers the most common obot deployment path; the _FILE variants above are for deployments layering obot on top of Docker/Kubernetes secret mounts instead of putting the value directly in the environment. See the docs' Configuration page for details.

Running it

obot, command/uvx-based (stdio)

uvx --from git+https://github.com/dcode/monarch-mcp2-obot monarch-mcp

obot, Docker-based (streamable-http)

Pull the published image directly — no local build needed:

docker volume create monarch-session

docker run -d --rm \
  -p 8000:8000 \
  -v monarch-session:/data \
  -e MONARCH_EMAIL=you@example.com \
  -e MONARCH_PASSWORD=... \
  -e MONARCH_TOTP_SECRET=...  `# omit if your account doesn't use authenticator-app MFA` \
  ghcr.io/dcode/monarch-mcp2-obot:latest

:latest tracks the newest tagged release; pin to a specific version instead (e.g. ghcr.io/dcode/monarch-mcp2-obot:0.1.2) for a reproducible deployment — see available tags. Images are multi-arch (linux/amd64, linux/arm64) and built from a pushed release tag by .github/workflows/docker.yml.

Point obot's Docker-based MCP server config at this container's streamable-http endpoint on port 8000. Session state lives in the monarch-session volume, so it survives container restarts and re-deploys without a re-login.

Building locally instead is still supported:

docker build -t monarch-mcp2-obot:local .
# then use monarch-mcp2-obot:local in place of the ghcr.io image above

Local development (stdio, no Docker)

uv sync --extra dev
uv run monarch-mcp

Testing

uv run pytest --cov=src --cov-report=term-missing
uv run ruff check src tests
uv run ruff format --check src tests
uv run mypy src

mypy --strict runs across the entire src/ tree, including the 13 group modules inherited from upstream. Install pre-commit hooks to run the same checks automatically before each commit:

uv run pre-commit install

See Development for more, and ROADMAP.md for what's done, known gaps, and deliberately deferred next steps.

Releases

Until a PyPI release is possible (see below), install a specific version from its GitHub release — semantic-versioned tags, with the built wheel/sdist attached as immutable release assets:

pip install https://github.com/dcode/monarch-mcp2-obot/releases/download/vX.Y.Z/monarch_mcp2_obot-X.Y.Z-py3-none-any.whl

Publishing to PyPI

The package metadata (classifiers, license, URLs, a py.typed marker) is ready for PyPI, but an actual upload isn't yet possible: this project depends on monarch-api2 via a direct GitHub reference (no PyPI release of that package exists), and PyPI rejects any package whose metadata contains a direct/VCS dependency. See "Publishing to PyPI" in the Installation docs and in ROADMAP.md for what would need to change first.

License

MIT, inherited from upstream, with this fork's own additions also under MIT. See LICENSE and NOTICE.md for the full attribution.

Available Tools

127 tools
accounts_create_manual_accountAccounts Create Manual AccountC

Create manual account. This may create or update Monarch data.

Inputs: name (required), type (required), subtype (required), fields, +4 more.

accounts_delete_accountAccounts Delete AccountB
Destructive

Delete account. This may delete, clear, reset, or otherwise remove data.

Inputs: account_id (required), fields, output_mode.

accounts_get_accountAccounts Get AccountC
Read-onlyIdempotent

Get account.

Inputs: account_id (required), fields, output_mode.

accounts_get_account_historyAccounts Get Account HistoryC
Read-onlyIdempotent

Get account history.

Inputs: account_id (required), fields, output_mode.

accounts_get_historical_balancesAccounts Get Historical BalancesC
Read-onlyIdempotent

Get historical balances.

Inputs: balance_date (required), fields, filters, output_mode.

accounts_get_net_worth_breakdownAccounts Get Net Worth BreakdownC
Read-onlyIdempotent

Get net worth breakdown.

Inputs: timeframe (required), start_date (required), fields, filters, +1 more.

accounts_get_net_worth_performanceAccounts Get Net Worth PerformanceD
Read-onlyIdempotent

Get net worth performance.

Inputs: fields, filters, end_date, start_date, +2 more.

accounts_list_accountsAccounts List AccountsC
Read-onlyIdempotent

List accounts.

Inputs: fields, filters, output_mode.

accounts_update_accountAccounts Update AccountC

Update account. This may create or update Monarch data.

Inputs: account_id (required), name, type, fields, +8 more.

auth_create_sessionAuth Create SessionC

Create session. This may create or update Monarch data.

Inputs: email (required), password (required), fields, mfa_code, +3 more.

auth_load_sessionAuth Load SessionC
Read-onlyIdempotent

Load session.

Inputs: fields, output_mode, include_token.

auth_loginAuth LoginA

Log in to Monarch using the server's configured credentials (or explicit overrides), handling an authenticator-app MFA challenge automatically if MONARCH_TOTP_SECRET is configured. Saves the resulting session for this deployment's single Monarch account.

Inputs: email, fields, mfa_code, password, +2 more.

auth_save_sessionAuth Save SessionC

Save session. This may create or update Monarch data.

Inputs: session (required), fields, output_mode.

auth_statusAuth StatusA

Report whether this deployment has a usable, currently-valid Monarch session, without exposing the session token.

Inputs: fields, validate, output_mode.

budget_clear_budgetBudget Clear BudgetC
Destructive

Clear budget. This may delete, clear, reset, or otherwise remove data.

Inputs: month (required), fields, confirm, output_mode.

budget_create_budgetBudget Create BudgetC

Create budget. This may create or update Monarch data.

Inputs: month (required), fields, output_mode.

budget_get_budgetBudget Get BudgetC
Read-onlyIdempotent

Get budget.

Inputs: month (required), fields, output_mode.

budget_get_budget_categoryBudget Get Budget CategoryC
Read-onlyIdempotent

Get budget category.

Inputs: month (required), category_id (required), fields, output_mode.

budget_get_budget_settingsBudget Get Budget SettingsC
Read-onlyIdempotent

Get budget settings.

Inputs: fields, output_mode.

budget_get_flex_rollover_settingsBudget Get Flex Rollover SettingsB
Read-onlyIdempotent

Get flex rollover settings.

Inputs: fields, output_mode.

budget_list_budget_monthsBudget List Budget MonthsC
Read-onlyIdempotent

List budget months.

Inputs: end_month (required), start_month (required), fields, output_mode.

budget_reset_budgetBudget Reset BudgetD
Destructive

Reset budget. This may delete, clear, reset, or otherwise remove data.

Inputs: month (required), fields, output_mode, category_ids, +3 more.

budget_reset_budget_rolloverBudget Reset Budget RolloverC
Destructive

Reset budget rollover. This may delete, clear, reset, or otherwise remove data.

Inputs: month (required), fields, category_id, output_mode, +2 more.

budget_set_budget_amountBudget Set Budget AmountC

Set budget amount. This may create or update Monarch data.

Inputs: month (required), amount (required), category_id (required), fields, +3 more.

budget_set_budget_category_rolloverBudget Set Budget Category RolloverC

Set budget category rollover. This may create or update Monarch data.

Inputs: enabled (required), category_id (required), fields, frequency, +6 more.

budget_set_budget_category_variabilityBudget Set Budget Category VariabilityC

Set budget category variability. This may create or update Monarch data.

Inputs: category_id (required), variability (required), fields, output_mode.

budget_set_budget_group_amountBudget Set Budget Group AmountC

Set budget group amount. This may create or update Monarch data.

Inputs: month (required), amount (required), category_group_id (required), fields, +3 more.

budget_set_budget_group_rolloverBudget Set Budget Group RolloverB

Set budget group rollover. This may create or update Monarch data.

Inputs: enabled (required), category_group_id (required), fields, output_mode, +3 more.

budget_set_budget_group_variabilityBudget Set Budget Group VariabilityB

Set budget group variability. This may create or update Monarch data.

Inputs: variability (required), category_group_id (required), fields, output_mode.

budget_set_flex_budget_amountBudget Set Flex Budget AmountC

Set flex budget amount. This may create or update Monarch data.

Inputs: month (required), amount (required), fields, output_mode, +2 more.

budget_set_flex_rollover_settingsBudget Set Flex Rollover SettingsC

Set flex rollover settings. This may create or update Monarch data.

Inputs: enabled (required), fields, output_mode, start_month, +1 more.

cashflow_get_cashflow_breakdownCashflow Get Cashflow BreakdownD
Read-onlyIdempotent

Get cashflow breakdown.

Inputs: end_date (required), direction (required), start_date (required), fields, +3 more.

cashflow_get_cashflow_summaryCashflow Get Cashflow SummaryD
Read-onlyIdempotent

Get cashflow summary.

Inputs: end_date (required), start_date (required), fields, filters, +1 more.

categories_create_categoryCategories Create CategoryC

Create category. This may create or update Monarch data.

Inputs: icon (required), name (required), group_id (required), fields, +1 more.

categories_create_category_groupCategories Create Category GroupC

Create category group. This may create or update Monarch data.

Inputs: name (required), type (required), fields, output_mode.

categories_delete_category_groupCategories Delete Category GroupC
Destructive

Delete category group. This may delete, clear, reset, or otherwise remove data.

Inputs: group_id (required), fields, output_mode, move_to_group_id.

categories_get_categoryCategories Get CategoryC
Read-onlyIdempotent

Get category.

Inputs: category_id (required), fields, output_mode.

categories_get_category_catalogCategories Get Category CatalogC
Read-onlyIdempotent

Get category catalog.

Inputs: fields, output_mode, include_disabled.

categories_get_category_groupCategories Get Category GroupC
Read-onlyIdempotent

Get category group.

Inputs: group_id (required), fields, output_mode.

categories_list_categoriesCategories List CategoriesC
Read-onlyIdempotent

List categories.

Inputs: fields, filters, output_mode, include_disabled.

categories_list_category_groupsCategories List Category GroupsB
Read-onlyIdempotent

List category groups.

Inputs: fields, output_mode.

categories_reactivate_categoryCategories Reactivate CategoryC

Reactivate category. This may create or update Monarch data.

Inputs: category_id (required), fields, output_mode.

categories_remove_categoryCategories Remove CategoryC
Destructive

Remove category. This may delete, clear, reset, or otherwise remove data.

Inputs: category_id (required), fields, output_mode, move_to_category_id.

categories_reorder_categoryCategories Reorder CategoryC

Reorder category. This may create or update Monarch data.

Inputs: order (required), group_id (required), category_id (required), fields, +1 more.

categories_reorder_category_groupCategories Reorder Category GroupC

Reorder category group. This may create or update Monarch data.

Inputs: order (required), group_id (required), fields, output_mode.

categories_update_categoryCategories Update CategoryD

Update category. This may create or update Monarch data.

Inputs: category_id (required), icon, name, fields, +2 more.

categories_update_category_groupCategories Update Category GroupC

Update category group. This may create or update Monarch data.

Inputs: group_id (required), name, type, fields, +1 more.

goals_archive_goalGoals Archive GoalC

Archive goal. This may create or update Monarch data.

Inputs: goal_id (required), fields, output_mode.

goals_contribute_to_goalGoals Contribute To GoalD

Contribute to goal. This may create or update Monarch data.

Inputs: amount (required), goal_id (required), account_id (required), date, +4 more.

goals_create_goalGoals Create GoalC

Create goal. This may create or update Monarch data.

Inputs: name (required), fields, priority, goal_type, +7 more.

goals_delete_goalGoals Delete GoalC
Destructive

Delete goal. This may delete, clear, reset, or otherwise remove data.

Inputs: goal_id (required), fields, output_mode.

goals_delete_goal_eventGoals Delete Goal EventB
Destructive

Delete goal event. This may delete, clear, reset, or otherwise remove data.

Inputs: event_id (required), fields, output_mode.

goals_get_goalGoals Get GoalD
Read-onlyIdempotent

Get goal.

Inputs: goal_id (required), fields, output_mode.

goals_get_goal_budget_amountsGoals Get Goal Budget AmountsC
Read-onlyIdempotent

Get goal budget amounts.

Inputs: goal_id (required), end_month (required), start_month (required), fields, +1 more.

goals_list_goal_eventsGoals List Goal EventsC
Read-onlyIdempotent

List goal events.

Inputs: goal_id (required), fields, output_mode.

goals_list_goalsGoals List GoalsC
Read-onlyIdempotent

List goals.

Inputs: fields, output_mode, include_archived.

goals_restore_goalGoals Restore GoalB

Restore goal. This may create or update Monarch data.

Inputs: goal_id (required), fields, output_mode.

goals_set_goal_budget_amountGoals Set Goal Budget AmountC

Set goal budget amount. This may create or update Monarch data.

Inputs: month (required), amount (required), goal_id (required), fields, +3 more.

goals_update_goalGoals Update GoalC

Update goal. This may create or update Monarch data.

Inputs: goal_id (required), name, fields, status, +9 more.

goals_update_goal_eventGoals Update Goal EventC

Update goal event. This may create or update Monarch data.

Inputs: event_id (required), date, notes, fields, +2 more.

goals_update_goal_prioritiesGoals Update Goal PrioritiesC

Update goal priorities. This may create or update Monarch data.

Inputs: goal_ids (required), fields, output_mode.

goals_withdraw_from_goalGoals Withdraw From GoalC

Withdraw from goal. This may create or update Monarch data.

Inputs: amount (required), goal_id (required), account_id (required), date, +4 more.

household_get_current_userHousehold Get Current UserC
Read-onlyIdempotent

Get current user.

Inputs: fields, output_mode.

household_get_householdHousehold Get HouseholdC
Read-onlyIdempotent

Get household.

Inputs: fields, output_mode.

household_get_household_memberHousehold Get Household MemberC
Read-onlyIdempotent

Get household member.

Inputs: member_id (required), fields, output_mode.

household_get_household_preferencesHousehold Get Household PreferencesC
Read-onlyIdempotent

Get household preferences.

Inputs: fields, output_mode.

household_list_household_membersHousehold List Household MembersB
Read-onlyIdempotent

List household members.

Inputs: fields, output_mode.

household_update_current_userHousehold Update Current UserC

Update current user. This may create or update Monarch data.

Inputs: fields, timezone, output_mode, display_name.

household_update_household_preferencesHousehold Update Household PreferencesC

Update household preferences. This may create or update Monarch data.

Inputs: fields, output_mode, exclude_business_from_budget, new_transactions_need_review, +3 more.

investments_create_manual_holdingInvestments Create Manual HoldingC

Create manual holding. This may create or update Monarch data.

Inputs: quantity (required), account_id (required), security_id (required), fields, +2 more.

investments_delete_manual_holdingInvestments Delete Manual HoldingC
Destructive

Delete manual holding. This may delete, clear, reset, or otherwise remove data.

Inputs: holding_id (required), fields, output_mode.

investments_get_holdingInvestments Get HoldingC
Read-onlyIdempotent

Get holding.

Inputs: holding_id (required), fields, output_mode.

investments_get_holding_performanceInvestments Get Holding PerformanceC
Read-onlyIdempotent

Get holding performance.

Inputs: holding_id (required), fields, end_date, start_date, +1 more.

investments_get_portfolioInvestments Get PortfolioD
Read-onlyIdempotent

Get portfolio.

Inputs: fields, end_date, start_date, account_ids, +3 more.

investments_get_securityInvestments Get SecurityC
Read-onlyIdempotent

Get security.

Inputs: security_id (required), fields, output_mode.

investments_list_holdingsInvestments List HoldingsC
Read-onlyIdempotent

List holdings.

Inputs: fields, account_ids, output_mode, include_hidden_holdings.

investments_list_investment_accountsInvestments List Investment AccountsC
Read-onlyIdempotent

List investment accounts.

Inputs: fields, output_mode.

investments_search_securitiesInvestments Search SecuritiesC
Read-onlyIdempotent

Search securities.

Inputs: query (required), limit, fields, output_mode, +1 more.

investments_update_manual_holdingInvestments Update Manual HoldingC

Update manual holding. This may create or update Monarch data.

Inputs: holding_id (required), fields, quantity, cost_basis, +2 more.

merchants_delete_merchantMerchants Delete MerchantC
Destructive

Delete merchant. This may delete, clear, reset, or otherwise remove data.

Inputs: merchant_id (required), fields, output_mode, move_to_merchant_id.

merchants_get_merchantMerchants Get MerchantC
Read-onlyIdempotent

Get merchant.

Inputs: merchant_id (required), fields, output_mode.

merchants_list_merchantsMerchants List MerchantsC
Read-onlyIdempotent

List merchants.

Inputs: sort, limit, fields, offset, +2 more.

merchants_update_merchantMerchants Update MerchantC

Update merchant. This may create or update Monarch data.

Inputs: merchant_id (required), name, fields, output_mode.

receipts_delete_receiptReceipts Delete ReceiptC
Destructive

Delete receipt. This may delete, clear, reset, or otherwise remove data.

Inputs: receipt_id (required), fields, output_mode.

receipts_get_receiptReceipts Get ReceiptC
Read-onlyIdempotent

Get receipt.

Inputs: receipt_id (required), fields, output_mode.

receipts_get_receipt_settingsReceipts Get Receipt SettingsC
Read-onlyIdempotent

Get receipt settings.

Inputs: fields, output_mode.

receipts_list_receiptsReceipts List ReceiptsA
Read-onlyIdempotent

List uploaded and emailed receipts, optionally filtered by source or status.

Inputs: limit, fields, offset, filters, +1 more.

receipts_match_receiptReceipts Match ReceiptC

Match receipt. This may create or update Monarch data.

Inputs: receipt_id (required), transaction_id (required), fields, output_mode.

receipts_unmatch_receiptReceipts Unmatch ReceiptB

Unmatch receipt. This may create or update Monarch data.

Inputs: receipt_id (required), fields, output_mode.

receipts_update_receiptReceipts Update ReceiptC

Update receipt. This may create or update Monarch data.

Inputs: receipt_id (required), tax, tip, date, +8 more.

receipts_update_receipt_settingsReceipts Update Receipt SettingsC

Update receipt settings. This may create or update Monarch data.

Inputs: fields, output_mode, auto_categorize, update_transaction_notes.

receipts_upload_receiptReceipts Upload ReceiptC

Upload receipt. This may create or update Monarch data.

Inputs: file_path (required), fields, filename, output_mode, +1 more.

recurring_create_recurring_streamRecurring Create Recurring StreamC

Create recurring stream. This may create or update Monarch data.

Inputs: amount (required), base_date (required), frequency (required), merchant_id (required), +3 more.

recurring_get_recurring_streamRecurring Get Recurring StreamC
Read-onlyIdempotent

Get recurring stream.

Inputs: recurring_id (required), fields, output_mode, include_liabilities.

recurring_get_recurring_summaryRecurring Get Recurring SummaryC
Read-onlyIdempotent

Get recurring summary.

Inputs: end_date (required), start_date (required), fields, filters, +1 more.

recurring_list_recurring_occurrencesRecurring List Recurring OccurrencesC
Read-onlyIdempotent

List recurring occurrences.

Inputs: end_date (required), start_date (required), fields, filters, +2 more.

recurring_list_recurring_streamsRecurring List Recurring StreamsC
Read-onlyIdempotent

List recurring streams.

Inputs: fields, filters, output_mode, include_pending, +1 more.

recurring_remove_recurring_streamRecurring Remove Recurring StreamC
Destructive

Remove recurring stream. This may delete, clear, reset, or otherwise remove data.

Inputs: recurring_id (required), fields, output_mode.

recurring_update_recurring_streamRecurring Update Recurring StreamC

Update recurring stream. This may create or update Monarch data.

Inputs: recurring_id (required), amount, fields, base_date, +3 more.

reports_create_saved_reportReports Create Saved ReportC

Create saved report. This may create or update Monarch data.

Inputs: name (required), fields, filters, group_by, +2 more.

reports_delete_saved_reportReports Delete Saved ReportB
Destructive

Delete saved report. This may delete, clear, reset, or otherwise remove data.

Inputs: report_id (required), fields, output_mode.

reports_get_report_dataReports Get Report DataD
Read-onlyIdempotent

Get report data.

Inputs: fields, filters, sort_by, group_by, +3 more.

reports_get_saved_reportReports Get Saved ReportC
Read-onlyIdempotent

Get saved report.

Inputs: report_id (required), fields, output_mode.

reports_list_saved_reportsReports List Saved ReportsC
Read-onlyIdempotent

List saved reports.

Inputs: fields, output_mode.

reports_update_saved_reportReports Update Saved ReportC

Update saved report. This may create or update Monarch data.

Inputs: name (required), report_id (required), fields, output_mode.

tags_create_tagTags Create TagB

Create tag. This may create or update Monarch data.

Inputs: name (required), color (required), fields, output_mode.

tags_delete_tagTags Delete TagC
Destructive

Delete tag. This may delete, clear, reset, or otherwise remove data.

Inputs: tag_id (required), fields, output_mode.

tags_get_tagTags Get TagC
Read-onlyIdempotent

Get tag.

Inputs: tag_id (required), fields, output_mode.

tags_list_tagsTags List TagsC
Read-onlyIdempotent

List tags.

Inputs: limit, fields, search, output_mode, +1 more.

tags_reorder_tagTags Reorder TagC

Reorder tag. This may create or update Monarch data.

Inputs: order (required), tag_id (required), fields, output_mode.

tags_update_tagTags Update TagC

Update tag. This may create or update Monarch data.

Inputs: tag_id (required), name, color, fields, +1 more.

transactions_create_transactionTransactions Create TransactionC

Create transaction. This may create or update Monarch data.

Inputs: date (required), amount (required), account_id (required), category_id (required), +7 more.

transactions_delete_transactionTransactions Delete TransactionC
Destructive

Delete transaction. This may delete, clear, reset, or otherwise remove data.

Inputs: transaction_id (required), fields, output_mode.

transactions_delete_transaction_attachmentTransactions Delete Transaction AttachmentB
Destructive

Delete transaction attachment. This may delete, clear, reset, or otherwise remove data.

Inputs: attachment_id (required), fields, output_mode.

transactions_download_transaction_attachmentTransactions Download Transaction AttachmentC
Read-onlyIdempotent

Download transaction attachment.

Inputs: attachment_id (required), path, fields, output_mode.

transactions_get_transactionTransactions Get TransactionC
Read-onlyIdempotent

Get transaction.

Inputs: transaction_id (required), fields, output_mode, redirect_posted.

transactions_get_transaction_attachmentTransactions Get Transaction AttachmentC
Read-onlyIdempotent

Get transaction attachment.

Inputs: attachment_id (required), fields, output_mode.

transactions_get_transaction_splitsTransactions Get Transaction SplitsC
Read-onlyIdempotent

Get transaction splits.

Inputs: transaction_id (required), fields, output_mode.

transactions_list_transaction_attachmentsTransactions List Transaction AttachmentsC
Read-onlyIdempotent

List transaction attachments.

Inputs: transaction_id (required), fields, output_mode, redirect_posted.

transactions_list_transactionsTransactions List TransactionsC
Read-onlyIdempotent

List transactions.

Inputs: sort, limit, fields, offset, +2 more.

transactions_unsplit_transactionTransactions Unsplit TransactionC

Unsplit transaction. This may create or update Monarch data.

Inputs: transaction_id (required), fields, output_mode.

transactions_update_transactionTransactions Update TransactionC

Update transaction. This may create or update Monarch data.

Inputs: transaction_id (required), date, notes, amount, +12 more.

transactions_update_transaction_splitsTransactions Update Transaction SplitsC

Update transaction splits. This may create or update Monarch data.

Inputs: splits (required), transaction_id (required), fields, output_mode.

transactions_upload_transaction_attachmentTransactions Upload Transaction AttachmentB

Upload transaction attachment. This may create or update Monarch data.

Inputs: file_path (required), transaction_id (required), fields, filename, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    C2.8/5.0

    Scored across 127 tools

    Disambiguation4/5

    Most tools are cleanly namespaced by domain with distinct resource-action pairs, so the overall set is navigable. However, a few pairs like reports_get_report_data vs reports_get_saved_report and transactions_get_transaction_attachment vs transactions_download_transaction_attachment could cause misselection because the descriptions are too terse to fully separate them.

    Naming Consistency5/5

    All tools use a consistent lowercase snake_case domain_verb_noun pattern, with familiar verbs like list, get, create, update, and delete. Minor variations such as remove vs delete or archive vs delete are tied to specific resource behavior and do not break the overall pattern.

    Tool Count1/5

    At 127 tools, this is an extreme count that creates a large context and selection burden for an agent. Even though the tools are organized by domain, this many operations makes the surface unwieldy and impractical for reliable agent navigation.

    Completeness5/5

    The tool surface provides comprehensive lifecycle coverage across accounts, categories, tags, transactions, budgets, goals, recurring streams, investments, reports, receipts, and household data. Read-only analytics and supporting operations like attachments, matches, and rollover settings are also present, leaving few obvious dead ends.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides an MCP server for querying and managing Monarch Money personal finance data through a local SQLite mirror with read-only SQL access. It enables users to sync transaction history from the Monarch API and analyze accounts, categories, and tags.
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that integrates with Monarch Money to provide financial data access and operations, including account management, transaction filtering, budget analysis, and goal tracking through natural language.
      -
    • A
      license
      C
      quality
      C
      maintenance
      Unofficial MCP server for Monarch Money that exposes tools for managing accounts, transactions, budgets, and other financial data through natural language.
      125
      1
      MIT