During a bank-statement parallel run a treasury receives the same period twice: once as a Swift MT9xx message it maps itself, and once as the bank's native camt.053. This pack turns that pair into evidence. Stage 1 maps the MT leg and reports its own fidelity. Stage 2 classifies the native camt.053 leg and checks its balance equation. Stage 3 takes declared record counts and control totals for both legs and checks whether they agree, within a tolerance the caller declares rather than one this pack picks. Both legs are supplied by the caller: the pack opens no bank connection and retrieves no statement, so what it evidences is agreement between two declared legs, never that either leg is correct.
map_mt9xx_to_camt{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "map_mt9xx_to_camt",
"arguments": {
"message_text": "{1:F01BANKDEFFAXXX0000000000}{2:I940...}",
"declared_mt_type": "940",
"target": "camt.053"
}
},
"id": 1
}
parse_camt053_reconciliation{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "parse_camt053_reconciliation",
"arguments": {
"statement_id": "STMT-2026-08-07-001",
"opening_balance": 100000.00,
"closing_balance": 103500.00,
"entries": [
{"amount": 3500.00, "credit_debit": "CRDT", "bank_transaction_code": "PMNT/RCDT/ESCT"}
]
}
},
"id": 2
}
verify_migration_completeness{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "verify_migration_completeness",
"arguments": {
"partitions": [
{
"partition_id": "2026-08-07/DE89370400440532013000",
"source_record_count": 412,
"target_record_count": 412,
"source_control_total": 103500.00,
"target_control_total": 103500.00
}
],
"value_tolerance": 0.00
}
},
"id": 3
}
CLEAN, and Stage 3 reports MIGR_COMPLETE. The two declared legs agree on both count and value at the declared tolerance.
MIGR_COUNT_VARIANCE, MIGR_VALUE_VARIANCE or MIGR_PARTITION_INCONSISTENT, or either leg fails its own balance equation: Stage 1 balance check failing, or Stage 2 reporting FAILED_BALANCE. A real disagreement was measured, and the variance figures say where.
MIGR_INPUTS_REJECTED, MIGR_SAMPLED_ONLY or MIGR_UNDECLARED_TRANSFORM, or Stage 1 reports UNMAPPABLE tags or data loss, or Stage 2 reports LOW_MATCH_RATE. The run does not support either of the other two verdicts. This is a result, not a failure of the pack, and it is the state most often reached first in a real parallel run.
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: Parallel run week: does the migrated camt.053 statement reconcile against our ledger closing balance, or is there a variance to chase?
Run the AINumbers MCP tool `run_chain` with {"chain":"camt053-parallel-run-recon-pack"} and read `art-258-parse-camt053-reconciliation.reconciliation_status`.
Re-run with `inputs` for `art-258-parse-camt053-reconciliation`, reusing the values that result echoed, with `closing_balance` set to 10600. 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/camt053-parallel-run-recon-pack.html