OpenChainGraph Suite · CONTRACT A3 · arch #5

Month-End Close Substantiation Check

Check month-end close substantiation in four independent stages from caller-supplied datasets, plus a session receipt. First, reconcile a caller-declared expected-source inventory against observed arrivals, marking each source arrived, missing, late or stale (ART-524). Then recompute subledger-to-GL totals from a caller-supplied posted ledger and a caller-declared chart-of-accounts mapping, diffed against reported trial-balance figures (ART-665). Then match intercompany receivable and payable pairs from caller-declared entity pairs, reporting matched pairs, mismatches with differences, elimination total and unmatched residual (ART-684). Then verify accrual-to-coding-entry linkage from caller-declared entries, reporting unlinked accruals, dangling references and duplicate lineage keys (ART-692). Finally, a session receipt aggregating the run's execution hashes (CRY-05). Each stage uses its own caller-supplied dataset; no stage's output is an input to another stage, and the order is interpretive: a feed that never arrived can make a tie-out pass on incomplete data, which is why freshness precedes the tie-out. Findings are arithmetic findings, never audit opinions or close approvals. Not legal advice.

OpenChainGraph · 5 Steps cryptographic mandate Hash-Anchored §4 chain_depth:5 Client-Side · Zero PII
Chain Topology (linear): Source Arrival & Freshness Register → GL Tie-Out Recompute → Intercompany Elimination and Netting Workflow → Close Posting Lineage → Agent-Action Audit-Trail Aggregator
§4 Execution Hash · Chain Definition Anchor
execution_hash:computing…
Chain Stages · 5 Steps
1 ROOT node
Source Arrival & Freshness Register art-524-source-arrival-freshness-register
Reconciles a caller-declared expected-source inventory against caller-declared observed arrivals, per source: arrived, missing, late or stale; refuses to report on arrivals alone when no expected inventory is declared
MCP Call · register_source_arrival_freshness
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "register_source_arrival_freshness",
    "arguments": {}
  },
  "id": 1
}
↓
2 D2 node
GL Tie-Out Recompute art-665-gl-tieout-recompute
Recomputes subledger-to-GL tie-out totals from a caller-supplied posted ledger and the caller's own declared product_code to gl_account_code chart-of-accounts mapping, diffed against caller-supplied reported trial-balance figures
MCP Call · compute_gl_tieout_recompute
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "compute_gl_tieout_recompute",
    "arguments": {}
  },
  "id": 1
}
↓
3 D3 node
Intercompany Elimination and Netting Workflow art-684-intercompany-elimination-netting
Matches intercompany receivable and payable pairs from caller-declared entity pairs, reporting matched pairs, mismatches with differences, elimination total and unmatched residual
MCP Call · compute_intercompany_elimination_netting
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "compute_intercompany_elimination_netting",
    "arguments": {}
  },
  "id": 1
}
↓
4 D4 node
Close Posting Lineage art-692-close-posting-lineage
Verifies accrual-to-coding-entry linkage from caller-declared entries, reporting unlinked accruals, dangling references, duplicate lineage keys, coding entries nothing traces to and coding entries with no declared source digest
MCP Call · verify_close_posting_lineage
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "verify_close_posting_lineage",
    "arguments": {}
  },
  "id": 1
}
↓
5 TERMINAL · D5 node
Agent-Action Audit-Trail Aggregator cry-05-agent-action-audit-trail-aggregator
Produces session_receipt_root, the Merkle root over the run's execution_hashes (final stage)
MCP Call · aggregate_execution_receipts
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "aggregate_execution_receipts",
    "arguments": {}
  },
  "id": 1
}
Export Artifacts
Download the §4 chain definition artifact (hash-anchored composite JSON) or the §13.11 W3C Verifiable Credentials view. Both derive from the chain definition; no new hash is minted. Available after hash computation.

Ask your agent

Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this whole workflow on the server and check one field that answers a real question.

Question: At month-end, which expected sources never arrived, arrived late, or arrived stale?
Run the AINumbers MCP tool `run_chain` with {"chain":"month-end-close-substantiation-check"} and read `art-524-source-arrival-freshness-register.expected_sources`.
Re-run with `inputs` for `art-524-source-arrival-freshness-register`, reusing the values that result echoed, with `expected_sources` changed so add an expected source with no arrival. Compare the same field.
Verify: call `verify_execution_hash` (https://mcp.ainumbers.co/mcp) with `claimed_hash` set to `composite_execution_hash` and the full `composite_artifact`.
Ledger, for a human re-check: https://ledger.ainumbers.co/
PII rule: send synthetic or anonymised inputs only. The MCP server runs these kernels and logs no payloads.
Chain page: https://ainumbers.co/chaingraph/chains/month-end-close-substantiation-check.html