yardstick-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | Alias for YARDSTICK_ENV. | |
| YARDSTICK_ENV | No | Which Yardstick to use: production, staging, uat or local (or prod/stage/dev/development); same as --env. Default production. | |
| YARDSTICK_TOKEN | No | Use this bearer token as-is and skip sign-in. | |
| YARDSTICK_API_URL | No | Point at a specific API base URL. Default set by YARDSTICK_ENV. | |
| YARDSTICK_CONFIG_DIR | No | Where the session is stored. Default ~/.config/yardstick-mcp. | |
| YARDSTICK_PUBLIC_URL | No | HTTP mode only: this server's public URL. | |
| YARDSTICK_API_VERSION | No | The API version the tool targets. Default 2026-07-21. | |
| YARDSTICK_ALLOW_WRITES | No | Expose the tools that add holdings and valuations; same as --allow-writes. Default false. | |
| YARDSTICK_CLERK_DOMAIN | No | Point sign-in at a specific domain. Default set by YARDSTICK_ENV. | |
| YARDSTICK_OAUTH_SCOPES | No | OAuth scopes to request. Default openid profile email offline_access. | |
| YARDSTICK_TOKEN_SOURCE | No | Which OAuth token to send: id_token or access_token. Default id_token. | |
| YARDSTICK_TOKEN_COMMAND | No | A command that prints a bearer token, run when one's needed. | |
| YARDSTICK_OAUTH_CLIENT_ID | No | OAuth client id for sign-in. Default is built in per environment. | |
| YARDSTICK_OAUTH_CLIENT_SECRET | No | Only if your OAuth client is a confidential one. | |
| YARDSTICK_OAUTH_REDIRECT_PORT | No | Local port the sign-in redirect comes back on. Default 33418. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_net_worthA | The user's current net worth: total assets, total liabilities and accessible (liquid) assets, with breakdowns by asset group, asset class, liquidity, liability type and liability security. Values are integer minor units (fields ending Minor) with pre-formatted display strings alongside. |
| get_net_worth_historyA | Month-end asset totals over time (with a by-group breakdown per month), for charting how wealth has changed. Note: history covers assets only; liabilities are not included. Defaults to the last 12 months. |
| list_accountsA | The user's connected bank accounts with their latest balances. Pseudo accounts represent manually tracked money rather than a live bank connection. |
| list_holdingsA | All holdings on the balance sheet: assets (property, pensions, investments, savings, valuables) and liabilities (mortgages, loans, credit cards). ownershipPercent is the user's share; latestValue is the most recent valuation. |
| get_holdingA | One holding in full: its valuation history, and for liabilities the terms (rate, term, secured-on links) and recorded payments. |
| search_transactionsA | Search the user's bank transactions with filters and pagination. Amounts are unsigned minor units; |
| aggregate_transactionsA | Group and total transactions server-side: by merchant, category, code and/or one of day/month/year. Returns per-group counts, totalAmountMinor (magnitude of all items) and netAmountMinor (credits minus debits, signed). Minor units; with no period filter the last 3 months are used. The go-to tool for questions like "top categories by spend this quarter" or "monthly spend at Tesco". |
| get_categorisation_statsA | How much of the user's transaction history is categorised: counts and minor-unit totals for user-categorised, auto-categorised (suggestion pending) and uncategorised items, split by direction. Useful for judging how complete category-based analysis will be. |
| get_top_merchantsA | The user's most visited merchants by spend (DEBIT items), with visit counts and category. valueMinor is total spend in minor units over the window. |
| get_merchant_summaryA | Spending profile for one merchant over a window (1m, 3m, 6m, 1y or all): visits, totals, averages, first/last visit, and an anonymous cohort benchmark of what similar users spend there (null when unavailable). Get merchantId from search_transactions or get_top_merchants. |
| get_spending_breakdownB | Per-month income and spending totals broken down by category (minor units, with category labels resolved). Only user-confirmed categories are bucketed; everything else is in |
| get_vitalsA | The user's monthly financial vitals (minor units): monthlySurplus (incomings, outgoings and what's left), steadyOutgoings (with rolling average), addingWealth (amount moved into savings/investments) and emergenciesCovered (months of average outgoings the month-end cash balance would cover). Each section has {personal, household} views; household is null without one. |
| list_categoriesA | Find category ids to filter by. The taxonomy has around 180 entries, so pass Categories are hierarchical (Group > Subgroup > Leaf) and you filter on the leaf ids. A word like "food" spans several branches (eating out, groceries, takeaways), so check the labels and use every id that fits the question. isNetNeutral marks categories left out of spending analysis, such as transfers between the user's own accounts. |
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 13 tools
Each tool targets a distinct resource and query type: categorisation stats, net worth, holdings, transactions search vs aggregate, merchant list vs single merchant summary, spending breakdown, vitals, and category lookup. Even closely related tools like get_top_merchants and get_merchant_summary differ clearly by collection vs single entity.
All tool names use a consistent snake_case verb_noun pattern. The verbs are semantically accurate: 'get' for single/computed values, 'list' for collections, 'search' for filtered queries, and 'aggregate' for grouped totals. No mixed conventions or vague names.
With 13 tools, the server is well-scoped for a personal finance analytics domain. Each tool covers a distinct aspect (transactions, holdings, net worth, categories, merchants, vitals) without redundancy or bloat, fitting comfortably in the ideal 3-15 range.
The surface covers the core analytics workflows: transaction search and server-side aggregation, merchant profiling, category discovery, spending breakdowns, net worth with history, holdings detail, and monthly vitals. Minor gaps exist, like no explicit tool for individual transaction details or liability history, but these are not critical for the stated purpose.