monzo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MONZO_MCP_DB_PATH | No | Path to SQLite transaction cache (default: <package>/monzo.db) | |
| MONZO_MCP_CONFIG_DIR | No | Directory for OAuth credentials and tokens (default: <package>/config/) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| monzo_list_accountsB | List all Monzo accounts with their types and IDs. Returns account details including whether each is personal or joint, and whether it is open or closed. Any other kind of account keeps Monzo's own type name (e.g. "uk_rewards") and is not synced. |
| monzo_get_balanceA | Get current balance for a Monzo account. Args: account_type: "personal" or "joint" (default: "personal") Returns balance, spend today, and currency. Also records a balance snapshot. |
| monzo_list_potsA | List all pots (savings buckets) for a Monzo account. Args: account_type: "personal" or "joint" (default: "personal") Returns the account the pots belong to, plus pot names and balances. Also records balance snapshots. |
| monzo_syncA | Sync transactions, balances, and pots from the Monzo API into the local cache. Fetches up to 11 months of history (within SCA window) or falls back to the last-synced timestamp / 90 days. Handles pagination and auth-hold deduplication automatically. Declined card attempts are not stored. Only current and joint accounts are synced; any other is listed as skipped. Args: account_type: "personal", "joint", or None to sync both since: Optional ISO date ("2026-01-01") or datetime ("2026-01-01T14:30:00Z") to start the backfill from, overriding last-sync resumption. Reaching beyond ~90 days only works inside the post-auth SCA window. |
| monzo_list_transactionsA | List transactions from the local cache. Auto-syncs if the cache is stale (last sync before today). Queries the synced transaction database, not the live API. Bank transfers
(faster payments, p2p, bacs) include a Returns Args: account_type: "personal" or "joint" (default: all) since: Start date, e.g. "2026-01-01" (inclusive) before: End date, e.g. "2026-02-01" (exclusive) category: Exact category match, e.g. "groceries", "eating_out", "transport" merchant: Merchant name search (case-insensitive, partial match) limit: Max results (default 50) |
| monzo_search_transactionsA | Search cached transactions by merchant, counterparty (payee), description, or notes. Auto-syncs if the cache is stale (last sync before today). Case-insensitive partial match across merchant_name, counterparty_name, description, and notes fields. Counterparty matching finds bank transfers (faster payments, p2p, bacs) by payee name. Returns Args: query: Search term account_type: "personal" or "joint" (default: all) since: Start date, e.g. "2026-01-01" (inclusive) before: End date, e.g. "2026-02-01" (exclusive) limit: Max results (default 30) |
| monzo_spendingA | Analyse spending from cached Monzo transactions. Auto-syncs if the cache is stale (last sync before today). Every result carries Args: month: Month in YYYY-MM format (default: current month) category: Filter by category, e.g. "groceries", "eating_out", "transport" account_type: "personal" or "joint" (default: all) detail: If true, return individual transactions instead of category summary |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Most tools target distinct operations (balance, pots, accounts, sync, spending analysis). However, monzo_list_transactions and monzo_search_transactions overlap significantly: both return cached transactions and can filter by merchant, so an agent might struggle to choose between them. Descriptions help clarify their intended use, but the boundary is not perfectly sharp.
All tools share the monzo_ prefix and use snake_case, which is consistent. Most follow a verb_noun pattern (get_balance, list_pots, list_accounts, list_transactions, search_transactions), but monzo_sync is verb-only and monzo_spending is a noun, breaking the pattern slightly. Still readable and mostly predictable.
Seven tools is well-scoped for a personal finance MCP server. Each tool covers a distinct area (accounts, balance, pots, sync, transactions, search, spending) without redundancy or bloat, and the count supports typical read/analysis workflows.
The surface covers core read operations: accounts, balance, pots, transactions, search, spending analysis, and sync. Minor gaps exist, such as no direct get_transaction by ID or a way to list categories/merchants, but agents can work around these using list_transactions or search_transactions with filters.