OpenChainGraph Suite · ART-537 · Bank Regulatory Reporting

QFC Part 371 Recordkeeping File Validator

Validates the shape of your own 12 CFR part 371 qualified-financial-contract recordkeeping file, the position/counterparty/collateral record set the appendix to part 371 requires, against its published record layout: required field presence, malformed notional or collateral values, and a repeated position identifier. Ties the file's declared totals to a supplied control-total summary you provide. A shape defect and a totals mismatch are two separate findings, never merged: a shape problem is checked first and routes to review, regardless of how the totals compare, and only a clean-shaped file with a totals disagreement escalates. Position identifier and counterparty identifier are enumerable low-entropy identifiers, salted before this tool computes anything with them; QFC type and currency code stay opaque strings throughout, with no table of part 371 contract-type or currency codes held here. Emits a hash-anchored OpenChainGraph v0.4 artifact carrying a §27.4 gate-policy decision at a predictable pointer.

Shape defect and totals mismatch, two separate findings Position and counterparty IDs salted, QFC type/currency opaque No control-total summary ⇒ did_not_run
🔒 All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data; use synthetic or anonymised inputs only.
⚠ This tool holds no table of 12 CFR part 371 QFC contract-type or currency codes, offers no advice on whether a contract is a covered QFC, and is not a filing. It computes once when you press the button, stores nothing, runs on no schedule, and retains nothing. Position identifier and counterparty identifier are enumerable low-entropy identifiers within the meaning of SPEC.md §25.1; salt yours before pasting a file row here, since this tool never salts on your behalf and never sees a raw identifier's salt.
Recordkeeping file rows

The demo figures below are synthetic and already loaded, so you can press Run without entering anything of your own. Load a demo to see a structure defect, a totals mismatch, or a missing control-total summary. Position and counterparty identifiers in the demo are placeholder salted-form strings, so supply your own already-salted identifiers, never a raw one.

File structure errors
Totals reconciliation
Rationale
    Execution Hash (SHA-256)
    What this does not do

    It does not salt a position or counterparty identifier for you, interpret a QFC type or currency code, hold a table of part 371 contract-type or currency codes, or determine whether a given contract is a covered QFC; you supply the file rows and the tied control-total summary, both already in the shape this tool expects. It is not a filing tool and produces no part 371 appendix submission format. A clean shape-and-tie-out pass is not a determination that the file would satisfy an examiner's part 371 review.

    Related

    ART-535 validates the sibling 12 CFR part 370 output-file shape using the same discipline: a structural defect and a totals mismatch as two separate, never-merged findings. This node applies that same discipline to the 12 CFR part 371 QFC recordkeeping file, tying its totals to a caller-supplied control-total summary rather than to another node's coverage recompute.

    Ask your agent

    Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.

    Run the AINumbers MCP tool `validate_qfc_recordkeeping_file`. Task: Validate the shape of the institution's own 12 CFR part 371 qualified-financial-contract recordkeeping file -- the position, counterparty, and collateral record set the appendix to part 371 requires -- against its published record layout, and ties the file's declared totals to a supplied control-total summary.
    Call it with arguments: {"policy_parameters":{"as_of_date":"2026-06-30","institution_ref":"IDI-SYNTH-0001","file_records":[{"row_ref":"FR-1","position_id":"sha256-salted@1:aa11","counterparty_id":"sha256-salted@1:cc01","qfc_type":"interest_rate_swap","currency_code":"USD","notional_minor_units":500000000,"collateral_minor_units":25000000},{"row_ref":"FR-2","position_id":"sha256-salted@1:aa22","counterparty_id":"sha256-salted@1:cc02","qfc_type":"repurchase_agreement","currency_code":"USD","notional_minor_units":200000000,"collateral_minor_units":21000000}],"control_totals":{"position_count":2,"distinct_counterparty_count":2,"notional_minor_units":700000000,"collateral_minor_units":46000000}}}
    Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string.
    Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
    PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data — use synthetic or anonymised inputs only.
    Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/art-537-qfc-recordkeeping-file-validator.html#p=v1.H4sIAAAAAAAA_wGOAnH9eyJhc19vZl9kYXRlIjoiMjAyNi0wNi0zMCIsImluc3RpdHV0aW9uX3JlZiI6IklESS1TWU5USC0wMDAxIiwiZmlsZV9yZWNvcmRzIjpbeyJyb3dfcmVmIjoiRlItMSIsInBvc2l0aW9uX2lkIjoic2hhMjU2LXNhbHRlZEAxOmFhMTEiLCJjb3VudGVycGFydHlfaWQiOiJzaGEyNTYtc2FsdGVkQDE6Y2MwMSIsInFmY190eXBlIjoiaW50ZXJlc3RfcmF0ZV9zd2FwIiwiY3VycmVuY3lfY29kZSI6IlVTRCIsIm5vdGlvbmFsX21pbm9yX3VuaXRzIjo1MDAwMDAwMDAsImNvbGxhdGVyYWxfbWlub3JfdW5pdHMiOjI1MDAwMDAwfSx7InJvd19yZWYiOiJGUi0yIiwicG9zaXRpb25faWQiOiJzaGEyNTYtc2FsdGVkQDE6YWEyMiIsImNvdW50ZXJwYXJ0eV9pZCI6InNoYTI1Ni1zYWx0ZWRAMTpjYzAyIiwicWZjX3R5cGUiOiJyZXB1cmNoYXNlX2FncmVlbWVudCIsImN1cnJlbmN5X2NvZGUiOiJVU0QiLCJub3Rpb25hbF9taW5vcl91bml0cyI6MjAwMDAwMDAwLCJjb2xsYXRlcmFsX21pbm9yX3VuaXRzIjoyMTAwMDAwMH1dLCJjb250cm9sX3RvdGFscyI6eyJwb3NpdGlvbl9jb3VudCI6MiwiZGlzdGluY3RfY291bnRlcnBhcnR5X2NvdW50IjoyLCJub3Rpb25hbF9taW5vcl91bml0cyI6NzAwMDAwMDAwLCJjb2xsYXRlcmFsX21pbm9yX3VuaXRzIjo0NjAwMDAwMH19QYjey44CAAA