Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.eternal-roman/ledger

NPM · @ETERNAL-ROMAN/LEDGER-MCP

Exact-decimal double-entry for agents. Call MCP tools; do not do money math in tokens.

−5 this week 79 Trust /100

Last scanned (4 hours ago)

Scores higher than 67% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 71 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 2047 tokens (~89/item across 23 items; 20 tools + 3 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage81
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 44% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 19 Oct 26 +1
    • Stability: 0.97 → pass security
  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Oct 26 −3
    • Stability: pass → 0.80 functional
  • 12 Oct 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → pass ▲ functional
  • 11 Oct 26 −1
    • Security disclosure: pass → unverified ▼ functional
    • Stability: pass → 0.97 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Analysed npm/@eternal-roman/ledger-mcp@0.19.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 95 packages
Packages resolved 95
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 20 exposed · ~1,985 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
artifact_make ~314

Assemble a Canonical Financial Artifact (scope, assumptions, citations, kernel plan, proof, reproducibility, auditHash) — the structured proof bundle a financial answer should carry. Every field is required and auditHash is verified, not just format-checked: it must be a digest a kernel call (ledger_post / ledger_audit_hash / ledger_verify_determinism / trace_run) actually returned in this session, or one this tool can recompute from the serialized `ledger` you pass alongside it. A fabricated value — even a well-formed one — is rejected. Validates that the kernel plan references core primitives; errors otherwise.

NameTypeReqDescription
assumptionsarrayyes–
auditHashstringyesThe exact auditHash string returned by a prior ledger_post / ledger_audit_hash / ledger_verify_determinism / trace_run call in this session — proves the claim instead of asserting it.
citationsarrayyesReal canon/kernel references (e.g. GAAP/IFRS cites from cite_lookup, or "core:double-entry"). Never defaulted.
kernelPlanstringyesThe actual primitives used, e.g. "Money.from + createEntry + Ledger.apply + validateEntry"
ledgerobject–Optional: the serialized ledger the auditHash belongs to. If provided, the hash is recomputed from it and compared — useful when the hash was produced outside this server process.
proofstringyes–
reproducibilitystringyes–
scopestringyes–

No output schema declared.

No examples provided.

cashflow_statement ~141

Derive an exact direct-method cash flow statement from a serialized ledger: operating / investing / financing flows per currency, with opening and closing cash. Cash accounts are detected by convention (Asset codes starting CASH or names containing "cash") unless cashAccountCodes is supplied. Self-checks that opening + netChange === closing. Kernel verified.

NameTypeReqDescription
cashAccountCodesarray–Explicit cash account codes
endstring–Inclusive period end YYYY-MM-DD
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.
startstring–Inclusive period start YYYY-MM-DD

No output schema declared.

No examples provided.

cite_lookup ~80

Retrieve matching IFRS/GAAP facts and citations from the kernel knowledge graph for a query (e.g. "revenue recognition", "lease", "cost basis"). Use to ground claims in canon rather than asserting from memory.

NameTypeReqDescription
asOfstring––
leversobject–Optional dimension filters
querystringyes–

No output schema declared.

No examples provided.

closing_generate_entries ~89

Given a (serialized) ledger snapshot and close date, returns balanced JournalEntry[] that close Income/Expense to RE using the kernel. All entries are pre-validated. Kernel verified.

NameTypeReqDescription
closeDatestringyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.
retainedEarningsobject––

No output schema declared.

No examples provided.

depreciation_build_schedule ~98

Exact straight-line (allocate) or declining balance schedule. Input cost/salvage/life/method. Returns periods with exact Money amounts as strings. Kernel-allocate based.

NameTypeReqDescription
commencementDatestringyes–
costobjectyes–
decliningRatestring––
idstringyes–
methodstringyes–
salvageobjectyes–
usefulLifePeriodsintegeryes–

No output schema declared.

No examples provided.

entry_validate ~67

Run the kernel invariant check on a proposed journal entry: balanced debits=credits per currency, >=2 lines, positive amounts, no sub-scale precision, valid ISO date, no silent currency mix. Returns { ok, violations[] }. Always validate before posting.

NameTypeReqDescription
entryobjectyes–

No output schema declared.

No examples provided.

fx_compute_translation ~91

Translate ledger balances at asOf using provided rates into reportingCurrency. Returns holdings, translated totals, and the exact CTA plug amount. Always kernel-verified for balance.

NameTypeReqDescription
asOfstringyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.
ratesobjectyes–
reportingCurrencystringyes–

No output schema declared.

No examples provided.

ledger_audit_hash ~68

Compute the tamper-evident SHA-256 audit-hash chain for a serialized ledger. Any change to any field or line ordering yields a different hash.

NameTypeReqDescription
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

ledger_balance ~103

Net balance for an account in a serialized ledger, per its normal balance side. Pass "currency" for multi-currency accounts (otherwise fails closed). Returns all currencies via balancesByCurrency too.

NameTypeReqDescription
accountCodestringyes–
asOfstring–Optional as-of date YYYY-MM-DD
currencystring––
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

ledger_post ~94

Validate and apply a journal entry to a (serialized) ledger, returning the new ledger JSON plus its audit hash. The kernel refuses unbalanced state: an invalid entry is NOT posted and its violations are returned instead. Omit "ledger" to start from empty.

NameTypeReqDescription
entryobjectyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

ledger_trial_balance ~52

Every account in a serialized ledger with its current net balance (one row per currency).

NameTypeReqDescription
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

ledger_verify_determinism ~71

Rebuild a serialized ledger twice and confirm the two runs are byte-for-byte identical via their audit hashes AND that the fundamental equation holds. Returns { ok, hash }.

NameTypeReqDescription
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

ledger_verify_equation ~62

Verify Assets + Expenses = Liabilities + Equity + Income (per currency) holds for a serialized ledger. Returns { balanced }.

NameTypeReqDescription
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

money_compute ~151

Perform EXACT decimal money arithmetic with the kernel (decimal.js, never floats). Use this for every monetary calculation instead of computing in your own tokens. Ops: add, sub (same currency), mul, div (money x scalar), allocate (split by ratios, remainder to last), convert (via FX rate), compare.

NameTypeReqDescription
aobjectyes–
b––Second operand for add/sub/compare
opstringyes–
rateobject–FX rate for convert
ratiosarray–Ratios for allocate
roundingModestring–Rounding for mul/div/convert
scalarstring–Scalar for mul/div, as a decimal string

No output schema declared.

No examples provided.

periods_create_lock ~37

Create an immutable PeriodLock fact for use with guarded posting. effectiveDate <= lockDate will be rejected.

NameTypeReqDescription
lockobjectyes–

No output schema declared.

No examples provided.

periods_guarded_post ~79

Like ledger_post but rejects entries whose effectiveDate falls on or before any provided period lock. Returns the same shape. Always kernel-verified.

NameTypeReqDescription
entryobjectyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.
periodLocksarray––

No output schema declared.

No examples provided.

portfolio_relief ~120

Reconstruct open lots and realized disposals for an asset from the ledger using FIFO / LIFO / HIFO, with exact cost basis. Each disposal is broken down per consumed lot and classified short vs long term by holding days (default threshold 365). Fails closed on oversell. Kernel verified.

NameTypeReqDescription
assetstringyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.
longTermThresholdDaysinteger––
methodstring––

No output schema declared.

No examples provided.

reconcile_positions ~111

Compare ledger-derived balances against an external snapshot (exchange/custodian/bank), matched by account code AND currency. Returns per-account status (matched / mismatch / missing_in_ledger / missing_in_external) with exact diffs and an overall reconciled flag. Kernel verified.

NameTypeReqDescription
asOfstring–Optional as-of date YYYY-MM-DD
externalarrayyes–
ledgerobject–Serialized ledger (Ledger.toJSON shape). Strict shape for MCP; kernel fromJSON does final validation.

No output schema declared.

No examples provided.

settlement_build_entries ~93

Split a fill into trade-date entries (asset moves; cash booked as a settlement receivable on a sell / payable on a buy) and settlement-date entries (the receivable/payable is swapped for cash). All entries are kernel-validated and balanced. Returns both entry sets as JSON. Kernel verified.

NameTypeReqDescription
fillobjectyes–
lotMethodstring––
settlementDatestringyes–

No output schema declared.

No examples provided.

trace_run ~64

Replay a sequence of journal entries on a fresh ledger, capturing balances, the fundamental equation, and an audit-hash prefix at every step. This is the agent-facing audit trail. Fails closed with the offending step if any entry is invalid.

NameTypeReqDescription
entriesarrayyes–

No output schema declared.

No examples provided.

Install

How do I install the io.github.eternal-roman/ledger MCP server?

io.github.eternal-roman/ledger runs locally as an npm package, launched with npx -y @eternal-roman/ledger-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @eternal-roman/ledger-mcp

# add to Claude Code
claude mcp add eternal-roman-ledger -- npx -y @eternal-roman/ledger-mcp
Common questions

What is the io.github.eternal-roman/ledger MCP server?

io.github.eternal-roman/ledger is an MCP server listed in the public MCP registry as io.github.eternal-roman/ledger. Exact-decimal double-entry for agents. Call MCP tools; do not do money math in tokens. This page covers its npm package (@eternal-roman/ledger-mcp).

Is the io.github.eternal-roman/ledger MCP server safe to use?

io.github.eternal-roman/ledger scores 79 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 25 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.eternal-roman/ledger MCP server expose?

io.github.eternal-roman/ledger exposes 20 tools: money_compute, entry_validate, ledger_post, ledger_balance, ledger_trial_balance, and 15 more. Their descriptions and schemas cost roughly 1,985 tokens of context every time the server is loaded.

Is the io.github.eternal-roman/ledger MCP server still maintained?

io.github.eternal-roman/ledger is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.eternal-roman/ledger MCP server under?

io.github.eternal-roman/ledger declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.