{"name":"io.github.eternal-roman/ledger","slug":"eternal-roman-ledger","title":null,"description":"Exact-decimal double-entry for agents. Call MCP tools; do not do money math in tokens.","url":"https://mcp.market/server/eternal-roman-ledger","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":1,"forks":0,"downloads_week":64,"last_push_at":"2026-11-01T20:13:43.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/eternal-roman/ledger","website":null,"version":"0.19.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@eternal-roman/ledger-mcp","version":"0.19.1","transport":{"type":"stdio"}}],"tools":[{"name":"artifact_make","description":"Assemble a Canonical Financial Artifact (scope, assumptions, citations, kernel plan, proof, reproducibility, auditHash) \\u2014 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 se","write_action":false,"price_micros":0,"input_schema":null},{"name":"cashflow_statement","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cite_lookup","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"closing_generate_entries","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"depreciation_build_schedule","description":"Exact straight-line (allocate) or declining balance schedule. Input cost/salvage/life/method. Returns periods with exact Money amounts as strings. Kernel-allocate based.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entry_validate","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"fx_compute_translation","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ledger_audit_hash","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ledger_balance","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ledger_post","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ledger_trial_balance","description":"Every account in a serialized ledger with its current net balance (one row per currency).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ledger_verify_determinism","description":"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 }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ledger_verify_equation","description":"Verify Assets + Expenses = Liabilities + Equity + Income (per currency) holds for a serialized ledger. Returns { balanced }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"money_compute","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"periods_create_lock","description":"Create an immutable PeriodLock fact for use with guarded posting. effectiveDate <= lockDate will be rejected.","write_action":true,"price_micros":0,"input_schema":null},{"name":"periods_guarded_post","description":"Like ledger_post but rejects entries whose effectiveDate falls on or before any provided period lock. Returns the same shape. Always kernel-verified.","write_action":true,"price_micros":0,"input_schema":null},{"name":"portfolio_relief","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reconcile_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"settlement_build_entries","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"trace_run","description":"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.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-11-03T19:43:08.356Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-03T19:43:08.296Z","components":{"code":{"score":25,"max":25,"notes":["13 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@eternal-roman/ledger-mcp","version":"0.19.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-08-14T18:31:06.579Z","repositoryUrl":"git+https://github.com/eternal-roman/ledger.git","weeklyDownloads":64}],"repo":{"found":true,"owner":"eternal-roman","repo":"ledger","archived":false,"pushedAt":"2026-11-01T20:13:43Z","stars":1,"forks":0,"openIssues":11,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/225102665?v=4","ownerCreatedAt":"2025-08-07T01:02:12Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":64,"license":"MIT","lastPushAt":"2026-11-01T20:13:43.000Z","score":27}}}},"grade_history":[],"reviews":[]}