Skip to main content
Glama
akutishevsky

LunchMoney MCP Server

by akutishevsky

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LUNCHMONEY_API_TOKENYesYour LunchMoney API token from LunchMoney Developer Settings

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_userA

Get details on the current user

get_all_categoriesA

Get a list of all categories associated with the user's account. Returns categories in alphabetical order.

get_single_categoryA

Get details on a single category or category group, including the list of children categories for category groups.

create_categoryA

Create a new category or a category group. Set is_group=true to create a category group; supply children as an array of existing category IDs and/or strings (names of new sub-categories to create).

update_categoryA

Update properties for an existing category or category group. For category groups, supplying children replaces the group's full child list. Cannot be used to convert between category and category group.

delete_categoryA

Delete a single category or category group. By default fails (HTTP 422) if dependencies exist, returning a structured dependents payload. Set force=true to delete and disassociate from all related budgets, transactions, recurring items, etc. Force delete is irreversible.

get_all_tagsA

Get a list of all tags associated with the user's account.

get_single_tagA

Get details of a single tag by ID.

create_tagA

Create a new tag.

update_tagC

Update properties for an existing tag.

delete_tagA

Delete a tag. By default fails (HTTP 422) with a structured dependents payload if the tag is in use by transactions or rules. Set force=true to delete and disassociate from those records.

get_transactionsA

Retrieve transactions, optionally filtered by date range, account, category, tag, recurring item, status, and more. Returns at most limit transactions (default 1000, max 2000); has_more is set on the response when more match the filters. Pending and split-parent / group-child transactions are excluded by default.

get_single_transactionA

Get details of a specific transaction. The response always includes plaid_metadata, custom_metadata, files, and (for split or group parents) the children array — none of which are returned by default in get_transactions.

create_transactionsA

Insert one or more transactions (1-500 per call). Returns inserted transactions plus any skipped duplicates.

update_transactionA

Update an existing transaction. Provide any subset of writable fields directly (the v2 API no longer wraps the body in a transaction envelope). Cannot modify split or grouped transactions; use the corresponding split/group tools instead.

delete_transactionA

Delete a single transaction. Fails for split/group transactions and their parents — unsplit/ungroup first. Irreversible.

update_transactions_bulkA

Update multiple transactions in a single call (1-500). Each entry must include id plus at least one writable field. Cannot be used to modify split or grouped transactions.

delete_transactions_bulkA

Bulk-delete transactions by ID (1-500). Fails if any ID is a split or group parent, or part of a split/group; unsplit or ungroup those first. Irreversible.

create_transaction_groupA

Create a transaction group from 2-500 existing transactions. Source transactions are hidden from get_transactions and accessible via the new group's children (set include_children=true on get_single_transaction). Cannot include split or recurring transactions.

delete_transaction_groupA

Delete (ungroup) a transaction group. The original child transactions remain and revert to normal ungrouped transactions.

split_transactionA

Split an existing transaction into 2-500 child transactions. The sum of child amounts must equal the parent's amount. After splitting, the parent is hidden from get_transactions and accessible via get_single_transaction (returns the parent with children).

unsplit_transactionA

Unsplit a previously split transaction by deleting its children and restoring the parent. Pass the parent (split_parent_id) — not a child — as the path id.

attach_file_to_transactionA

Attach a local image or PDF receipt (max 10MB) to a transaction. Allowed types: image/jpeg, image/png, image/heic, image/heif, application/pdf. The file is read from the local filesystem of the host running this MCP server, and its type is determined from its actual contents — files that are not a real image or PDF are rejected. If LUNCHMONEY_ATTACHMENTS_DIR is set on the host, only files inside that directory can be attached.

get_transaction_attachment_urlA

Get a short-lived signed download URL for a transaction file attachment. The response includes the URL and an expires_at timestamp.

delete_transaction_attachmentA

Delete a transaction file attachment. Irreversible.

get_recurring_itemsA

Retrieve a list of recurring items expected for a specified date range. The matches object on each item is populated based on the requested range.

get_single_recurring_itemA

Retrieve a single recurring item by ID. Optional date range populates the matches object.

get_budget_summaryA

Get a summary of the user's budget for a specified date range. Returns per-category totals (other_activity, recurring_activity, budgeted, available, recurring_remaining, recurring_expected). Set include_occurrences=true for a per-period breakdown matching the account's budget periodicity. (Backed by the v2 GET /summary endpoint.)

get_budget_settingsA

Get budget period and display settings for the account (granularity, period length, anchor date, hide-no-activity preference, income option, rollover-left-to-budget setting).

upsert_budgetA

Create or update a budget for a category and budget period. The start_date must be a valid budget period start for the account (see get_budget_settings).

remove_budgetA

Remove the budget for a specific category and period. The request is idempotent — succeeds even if no budget exists for the period.

get_all_manual_accountsA

Get a list of all manually-managed accounts associated with the user. (Formerly known as assets in the v1 API.)

get_single_manual_accountA

Get details of a single manual account by ID.

create_manual_accountB

Create a new manually-managed account. (Formerly create_asset.)

update_manual_accountB

Update an existing manually-managed account. (Formerly update_asset.)

delete_manual_accountA

Delete a manually-managed account. Optionally also delete its transactions/rules/recurring items, and/or its balance history. Both deletion options are irreversible.

get_all_plaid_accountsA

Get a list of all Plaid (synced) accounts associated with the user.

get_single_plaid_accountA

Get details of a single Plaid (synced) account by ID.

trigger_plaid_fetchA

Trigger a fetch of latest data from Plaid. Optionally scope the fetch to a date range and/or a specific Plaid account ID. Note: Plaid enforces a minimum 60-second delay between fetch requests; fetching may take up to 5 minutes.

get_supported_cryptocurrenciesA

Get the list of cryptocurrencies supported for manual tracking. The symbol of an entry here is what must be passed to create_manual_crypto.

add_supported_cryptocurrencyA

Add a new cryptocurrency to the supported manual-crypto list by submitting its CoinGecko coin-page URL. Only needed when get_supported_cryptocurrencies does not already list the symbol you want to track.

get_all_manual_cryptoA

Get all manually-managed crypto balances associated with the user.

get_single_manual_cryptoA

Get a single manually-managed crypto balance by ID. Call get_all_manual_crypto first to discover ids.

create_manual_cryptoA

Create a manually-managed crypto asset. The symbol must match one returned by get_supported_cryptocurrencies.

update_manual_cryptoA

Update a manually-managed crypto balance. At least one of name, display_name, institution_name, or balance must be supplied. The symbol of an existing balance cannot be changed.

delete_manual_cryptoA

Delete a manually-managed crypto asset. If the asset has balance history, keep_history must be set explicitly or the API rejects the request. Irreversible.

get_all_synced_cryptoA

Get all synced crypto accounts (Coinbase, Kraken, Ethereum wallets) and their nested per-symbol balances. Synced accounts are connected in the Lunch Money web app and cannot be created or edited through the API.

get_single_synced_cryptoA

Get a single synced crypto account and all its nested balances by ID.

get_synced_crypto_balanceA

Get a single balance held inside a synced crypto account, looked up by its cryptocurrency symbol.

refresh_synced_cryptoA

Trigger a balance refresh for a synced crypto account and return the refreshed account. Reaches out to the external crypto provider.

get_balance_historyA

Get monthly account balance history across all accounts — the data behind the Net Worth views in the LunchMoney app. History is monthly. With no month range, returns all available history plus an ephemeral current entry for the current month, which is calculated on demand and may change between requests. Only months with data are included.

get_account_balance_historyA

Get monthly balance history for a single account. Call get_all_manual_accounts, get_all_plaid_accounts, or get_all_manual_crypto first to discover ids. For synced crypto holdings use get_crypto_synced_balance_history instead.

upsert_account_balance_historyA

Create or update monthly balance history entries for a single account. Every month must be a past calendar month — the current month is calculated on demand and cannot be written. The request is all-or-nothing: if any entry fails validation, none are applied. The response contains only the entries submitted, not the account's full history.

delete_account_balance_historyA

Delete ALL historical balance entries for a single account. This is irreversible and affects the Net Worth views. To remove a single month, use delete_balance_history_entry instead.

get_crypto_synced_balance_historyA

Get monthly balance history for a synced crypto holding, identified by its account id and ticker symbol. Synced crypto is scoped per symbol, so it is not available through get_account_balance_history.

upsert_crypto_synced_balance_historyA

Create or update monthly balance history entries for a synced crypto holding. Every month must be a past calendar month. If an entry sets symbol, it must match the symbol argument. The request is all-or-nothing.

delete_crypto_synced_balance_historyA

Delete ALL historical balance entries for a synced crypto holding. This is irreversible and affects the Net Worth views.

delete_balance_history_entryA

Delete a single historical balance entry by its id. The id must come from an entry with type=historical in a balance history response; ephemeral current entries have no id and cannot be deleted.

update_deleted_account_detailsA

Update the display details shown for a deleted account in the Net Worth views. Applies to all historical entries for that deleted source. At least one field must be provided; pass null to clear a field.

Prompts

Interactive templates invoked by user choice

NameDescription
monthly_spending_breakdownAnalyze spending by category for a given month, combining transaction data with budget targets
subscription_auditReview recurring items for a given month to audit subscriptions and recurring costs
net_worth_snapshotCalculate total net worth by combining manual assets, Plaid accounts, and crypto holdings
uncategorized_cleanupFind uncategorized transactions in a date range and suggest categories for them

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/akutishevsky/lunchmoney-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server