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.