finledger
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| expenses_spendA | Spend in a window, grouped. Returns gross, reimbursed, and net. Net subtracts only CONFIRMED reimbursements — an unreviewed auto-match is a proposal, not a fact. |
| expenses_recurringD | Charges repeating on a roughly monthly cadence at a stable amount, with annualized cost. |
| expenses_outstandingA | What is still owed to you. Only charges with at least one confirmed reimbursement are counted as shared; charges nobody has paid toward are excluded because the data cannot distinguish a shared cost from an ordinary purchase. |
| expenses_runwayC | Spending-account balances plus trailing monthly net burn. |
| expenses_review_queueA | Inbound payments the matcher would not auto-match, best candidate first. These need a human or agent decision via expenses_resolve. |
| expenses_resolveB | Record a decision on an inbound payment. Pass charge_ids to link reimbursements. Empty charge_ids = not a reimbursement. disposition=charge_missing when it is a repayment but the parent charge(s) are not in the ledger. Decisions survive re-runs. |
| investments_balancesB | Latest balance per investment account, plus the total. |
| investments_holdingsC | Current holdings, aggregated by ticker across accounts by default. |
| investments_summaryB | Portfolio value plus what actually entered and left over a trailing window. BUY/SELL are excluded from cash figures — they move money within an account, not into or out of it. |
| investments_transactionsD | Investment activity in a window. |
| income_summaryA | Year-to-date earnings from payroll. IMPORTANT: net_pay_ytd is only what reached a bank account; payroll_savings_ytd (401k/Roth/HSA/ESPP) also belongs to the user. Use disposable_ytd = net_pay + payroll_savings when judging whether income covers spending. imputed_offset_ytd is booked as both an earning and a deduction and nets to zero. |
| income_contributionsC | Payroll deductions year-to-date, each classified savings / cost / offset, plus employer contributions. |
| income_statementsC | Individual pay statements in a window. |
| savings_rateA | What share of earnings is being kept, combining payroll savings with what survives spending. Income is year-to-date and spend is a trailing window, so the ratio is an estimate — read the |
| context_notesA | Free-text goals, career plans, and constraints written by the user. These are statements of intent, not figures derived from the ledger — do not treat them as data. |
| accountsC | Every connected account, split by domain (expense vs investment). |
| syncB | Pull every source into the store. Idempotent and additive; never deletes. |
| reconcileB | Re-run the matcher over inbound payments. Confirmed decisions are preserved. |
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 18 tools
Each tool has a clearly defined role within its domain: expenses, investments, income, savings, or general ledger management. The distinct prefixes (expenses_, investments_, income_) prevent cross-domain confusion, and within domains, tools like spend vs. outstanding vs. runway vs. review_queue are semantically distinct. Even the less prefixed tools (reconcile, sync, accounts) are obviously separate from the financial queries.
The dominant pattern is domain-prefix + descriptive noun (e.g., expenses_spend, investments_balances, income_summary), which is highly consistent. However, a few tools like reconcile, sync, accounts, and savings_rate do not follow the prefix scheme, creating minor inconsistency. The syntax is all snake_case with no verb conjugations, so the deviation is not jarring.
Eighteen tools is on the higher end of typical MCP servers, but the breadth of the domain—expenses, investments, income, savings, notes, accounts, sync—justifies the count. Each tool addresses a specific financial question or action, and none feel redundant. The size is slightly above the ideal 3-15 range but well within the acceptable limit for a comprehensive financial ledger service.
The tool surface covers the core lifecycle of financial data aggregation: reading balances, transactions, and summaries, plus actions like reconciliation and decision resolution. There are minor gaps, such as no direct way to create or edit transactions or notes, but these are likely handled externally or intentionally read-only. The inclusion of sync and review queues ensures operational completeness for the stated purpose.