ledgerkit-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LEDGER_FILE | No | Path to the append-only journal file. If not set, the ledger runs in-memory (not persistent). | |
| LEDGER_CURRENCY | No | The currency code for the ledger. Defaults to USD. Can be 'EUR', 'JPY', or a custom code with decimals like 'CODE:2'. | USD |
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 |
|---|---|
| open_accountA | Open a ledger account. Every account posts in the ledger currency. Accounts may not go negative unless allow_negative is set: overdraft is a policy you opt into, not an accident. |
| post_entryA | Post a balanced journal entry: total debits must equal total credits across at least two legs. This is the ONLY way to change a balance. Corrections are reversal entries, never edits. If you are retrying a call that may already have gone through, reuse the SAME idempotency_key: you will get the original entry back with replayed=true instead of posting twice. |
| get_balanceA | Current signed normal balance of one account (asset/expense: debit-positive; liability/equity/income: credit-positive). Pass as_of for the balance at a past moment, recomputed from the journal. |
| list_accountsA | Every account with its type, overdraft policy, and current balance. |
| list_entriesA | Journal entries, newest first, paginated. Use before_seq from the previous page to walk further back instead of asking for everything: the journal is append-only and can be long. |
| trial_balanceA | Every account's balance plus the proof the books balance: total debits and total credits across the whole journal, always equal. |
| allocateA | Split an amount by integer ratios without losing a minor unit (largest-remainder method). allocate("100.00", [1,1,1]) is ["33.34","33.33","33.33"]: the parts sum to EXACTLY the original. Use this for commission splits, installments, and tax apportionment instead of doing division yourself. |
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
Each tool targets a distinct action or resource: account querying, creation, entry posting, listing, reporting, and allocation. No two tools could be confused for the same operation, even with overlapping concepts like balance and trial balance.
The vast majority follow a clear verb_noun pattern (get_, open_, post_, list_). allocate is a single verb, and trial_balance is a noun phrase, but the all-lowercase underscore style and intuitive verbs keep the set predictable.
At 7 tools, the server covers the core ledger lifecycle (accounts, entries, reports) plus a useful allocation utility. It feels appropriately scoped without redundancy or excess.
The tool set covers opening/listing accounts, posting/listing entries, querying balances, and producing a trial balance. Minor gaps like fetching a single entry or account details are workable through list endpoints, and the append-only design intentionally omits deletion/editing.