monarch-mcp2-obot
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@monarch-mcp2-obotHow much did I spend on groceries this month?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
monarch-mcp2-obot
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:
Ported to MCP Python SDK v2 (
MCPServer, not the deprecated v1FastMCP).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.
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.
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 hasMONARCH_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. Passemail/password/totp_secret/mfa_codeexplicitly 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 account email, for automatic login | — |
| Monarch account password | — |
| Read the password from this file instead (Docker/Kubernetes secret mounts) | — |
| Base32 authenticator-app seed, for automatic MFA | — |
| Read the TOTP seed from this file instead | — |
| Exact path to the session file |
|
| Directory for the default session path |
|
|
|
|
| Bind host for |
|
| Bind port for |
|
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-mcpobot, 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 aboveLocal development (stdio, no Docker)
uv sync --extra dev
uv run monarch-mcpTesting
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 srcmypy --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 installSee 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.whlPublishing 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 toolsaccounts_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 AccountBDestructive
Delete account. This may delete, clear, reset, or otherwise remove data.
Inputs: account_id (required), fields, output_mode.
accounts_get_accountAccounts Get AccountCRead-onlyIdempotent
Get account.
Inputs: account_id (required), fields, output_mode.
accounts_get_account_historyAccounts Get Account HistoryCRead-onlyIdempotent
Get account history.
Inputs: account_id (required), fields, output_mode.
accounts_get_historical_balancesAccounts Get Historical BalancesCRead-onlyIdempotent
Get historical balances.
Inputs: balance_date (required), fields, filters, output_mode.
accounts_get_net_worth_breakdownAccounts Get Net Worth BreakdownCRead-onlyIdempotent
Get net worth breakdown.
Inputs: timeframe (required), start_date (required), fields, filters, +1 more.
accounts_get_net_worth_performanceAccounts Get Net Worth PerformanceDRead-onlyIdempotent
Get net worth performance.
Inputs: fields, filters, end_date, start_date, +2 more.
accounts_list_accountsAccounts List AccountsCRead-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 SessionCRead-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 BudgetCDestructive
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 BudgetCRead-onlyIdempotent
Get budget.
Inputs: month (required), fields, output_mode.
budget_get_budget_categoryBudget Get Budget CategoryCRead-onlyIdempotent
Get budget category.
Inputs: month (required), category_id (required), fields, output_mode.
budget_get_budget_settingsBudget Get Budget SettingsCRead-onlyIdempotent
Get budget settings.
Inputs: fields, output_mode.
budget_get_flex_rollover_settingsBudget Get Flex Rollover SettingsBRead-onlyIdempotent
Get flex rollover settings.
Inputs: fields, output_mode.
budget_list_budget_monthsBudget List Budget MonthsCRead-onlyIdempotent
List budget months.
Inputs: end_month (required), start_month (required), fields, output_mode.
budget_reset_budgetBudget Reset BudgetDDestructive
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 RolloverCDestructive
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 BreakdownDRead-onlyIdempotent
Get cashflow breakdown.
Inputs: end_date (required), direction (required), start_date (required), fields, +3 more.
cashflow_get_cashflow_summaryCashflow Get Cashflow SummaryDRead-onlyIdempotent
Get cashflow summary.
Inputs: end_date (required), start_date (required), fields, filters, +1 more.
cashflow_get_cashflow_trendsCashflow Get Cashflow TrendsCRead-onlyIdempotent
Get cashflow trends.
Inputs: end_date (required), start_date (required), fields, filters, +2 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 GroupCDestructive
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 CategoryCRead-onlyIdempotent
Get category.
Inputs: category_id (required), fields, output_mode.
categories_get_category_catalogCategories Get Category CatalogCRead-onlyIdempotent
Get category catalog.
Inputs: fields, output_mode, include_disabled.
categories_get_category_groupCategories Get Category GroupCRead-onlyIdempotent
Get category group.
Inputs: group_id (required), fields, output_mode.
categories_list_categoriesCategories List CategoriesCRead-onlyIdempotent
List categories.
Inputs: fields, filters, output_mode, include_disabled.
categories_list_category_groupsCategories List Category GroupsBRead-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 CategoryCDestructive
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 GoalCDestructive
Delete goal. This may delete, clear, reset, or otherwise remove data.
Inputs: goal_id (required), fields, output_mode.
goals_delete_goal_eventGoals Delete Goal EventBDestructive
Delete goal event. This may delete, clear, reset, or otherwise remove data.
Inputs: event_id (required), fields, output_mode.
goals_get_goalGoals Get GoalDRead-onlyIdempotent
Get goal.
Inputs: goal_id (required), fields, output_mode.
goals_get_goal_budget_amountsGoals Get Goal Budget AmountsCRead-onlyIdempotent
Get goal budget amounts.
Inputs: goal_id (required), end_month (required), start_month (required), fields, +1 more.
goals_link_goal_account_balanceGoals Link Goal Account BalanceB
Link goal account balance. This may create or update Monarch data.
Inputs: goal_id (required), account_id (required), amount, fields, +2 more.
goals_list_goal_eventsGoals List Goal EventsCRead-onlyIdempotent
List goal events.
Inputs: goal_id (required), fields, output_mode.
goals_list_goalsGoals List GoalsCRead-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_unlink_goal_accountGoals Unlink Goal AccountC
Unlink goal account. This may create or update Monarch data.
Inputs: goal_id (required), account_id (required), fields, output_mode.
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 UserCRead-onlyIdempotent
Get current user.
Inputs: fields, output_mode.
household_get_householdHousehold Get HouseholdCRead-onlyIdempotent
Get household.
Inputs: fields, output_mode.
household_get_household_memberHousehold Get Household MemberCRead-onlyIdempotent
Get household member.
Inputs: member_id (required), fields, output_mode.
household_get_household_preferencesHousehold Get Household PreferencesCRead-onlyIdempotent
Get household preferences.
Inputs: fields, output_mode.
household_list_household_membersHousehold List Household MembersBRead-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 HoldingCDestructive
Delete manual holding. This may delete, clear, reset, or otherwise remove data.
Inputs: holding_id (required), fields, output_mode.
investments_get_holdingInvestments Get HoldingCRead-onlyIdempotent
Get holding.
Inputs: holding_id (required), fields, output_mode.
investments_get_holding_performanceInvestments Get Holding PerformanceCRead-onlyIdempotent
Get holding performance.
Inputs: holding_id (required), fields, end_date, start_date, +1 more.
investments_get_portfolioInvestments Get PortfolioDRead-onlyIdempotent
Get portfolio.
Inputs: fields, end_date, start_date, account_ids, +3 more.
investments_get_securityInvestments Get SecurityCRead-onlyIdempotent
Get security.
Inputs: security_id (required), fields, output_mode.
investments_list_holdingsInvestments List HoldingsCRead-onlyIdempotent
List holdings.
Inputs: fields, account_ids, output_mode, include_hidden_holdings.
investments_list_investment_accountsInvestments List Investment AccountsCRead-onlyIdempotent
List investment accounts.
Inputs: fields, output_mode.
investments_search_securitiesInvestments Search SecuritiesCRead-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 MerchantCDestructive
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 MerchantCRead-onlyIdempotent
Get merchant.
Inputs: merchant_id (required), fields, output_mode.
merchants_list_merchantsMerchants List MerchantsCRead-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 ReceiptCDestructive
Delete receipt. This may delete, clear, reset, or otherwise remove data.
Inputs: receipt_id (required), fields, output_mode.
receipts_get_receiptReceipts Get ReceiptCRead-onlyIdempotent
Get receipt.
Inputs: receipt_id (required), fields, output_mode.
receipts_get_receipt_settingsReceipts Get Receipt SettingsCRead-onlyIdempotent
Get receipt settings.
Inputs: fields, output_mode.
receipts_list_receiptsReceipts List ReceiptsARead-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 StreamCRead-onlyIdempotent
Get recurring stream.
Inputs: recurring_id (required), fields, output_mode, include_liabilities.
recurring_get_recurring_summaryRecurring Get Recurring SummaryCRead-onlyIdempotent
Get recurring summary.
Inputs: end_date (required), start_date (required), fields, filters, +1 more.
recurring_list_recurring_occurrencesRecurring List Recurring OccurrencesCRead-onlyIdempotent
List recurring occurrences.
Inputs: end_date (required), start_date (required), fields, filters, +2 more.
recurring_list_recurring_streamsRecurring List Recurring StreamsCRead-onlyIdempotent
List recurring streams.
Inputs: fields, filters, output_mode, include_pending, +1 more.
recurring_remove_recurring_streamRecurring Remove Recurring StreamCDestructive
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 ReportBDestructive
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 DataDRead-onlyIdempotent
Get report data.
Inputs: fields, filters, sort_by, group_by, +3 more.
reports_get_saved_reportReports Get Saved ReportCRead-onlyIdempotent
Get saved report.
Inputs: report_id (required), fields, output_mode.
reports_list_saved_reportsReports List Saved ReportsCRead-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 TagCDestructive
Delete tag. This may delete, clear, reset, or otherwise remove data.
Inputs: tag_id (required), fields, output_mode.
tags_get_tagTags Get TagCRead-onlyIdempotent
Get tag.
Inputs: tag_id (required), fields, output_mode.
tags_list_tagsTags List TagsCRead-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 TransactionCDestructive
Delete transaction. This may delete, clear, reset, or otherwise remove data.
Inputs: transaction_id (required), fields, output_mode.
transactions_delete_transaction_attachmentTransactions Delete Transaction AttachmentBDestructive
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 AttachmentCRead-onlyIdempotent
Download transaction attachment.
Inputs: attachment_id (required), path, fields, output_mode.
transactions_get_transactionTransactions Get TransactionCRead-onlyIdempotent
Get transaction.
Inputs: transaction_id (required), fields, output_mode, redirect_posted.
transactions_get_transaction_attachmentTransactions Get Transaction AttachmentCRead-onlyIdempotent
Get transaction attachment.
Inputs: attachment_id (required), fields, output_mode.
transactions_get_transaction_splitsTransactions Get Transaction SplitsCRead-onlyIdempotent
Get transaction splits.
Inputs: transaction_id (required), fields, output_mode.
transactions_list_transaction_attachmentsTransactions List Transaction AttachmentsCRead-onlyIdempotent
List transaction attachments.
Inputs: transaction_id (required), fields, output_mode, redirect_posted.
transactions_list_transactionsTransactions List TransactionsCRead-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
Scored across 127 tools
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.
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.
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.
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
Related MCP Connectors
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP Server for Monarch Money, utilizing an unofficial api.11430MIT
- AlicenseNot gradedqualityDmaintenanceProvides 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.1MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.-
- AlicenseCqualityCmaintenanceUnofficial MCP server for Monarch Money that exposes tools for managing accounts, transactions, budgets, and other financial data through natural language.1251MIT