{
  "tool_id": "art-499-check-safeguarding-reconciliation",
  "tool_version": "1.0.0",
  "display_name": "CASS 15 Safeguarding Reconciliation Check",
  "mcp_name": "check_safeguarding_reconciliation",
  "mandate_type": "compliance_mandate",
  "wave": 78,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-499-check-safeguarding-reconciliation.html",
  "description": "Compares a UK payment or e-money firm's safeguarding requirement (CASS 15.8.29G) against the components of its safeguarding resource (CASS 15.8.26R) for one caller-declared as-of date, and classifies the arithmetic outcome as reconciled, shortfall, or excess against a caller-declared tolerance. Resource components carry the four component types CASS 15.8.26R enumerates: relevant funds bank account, segregated but not yet placed, relevant assets, and insurance or guarantee. Money is handled as integer minor units throughout with 2dp display, an empty or zero figure set resolves to a defined verdict, and any value that is not a usable integer amount is named in rejected_inputs rather than silently dropped. Single-run and stateless: the firm performs its reconciliation no less than once each reconciliation day because CASS 15.8.19R requires it of the firm, and this tool operates nothing, stores nothing, and retains nothing. A shortfall verdict is an arithmetic finding about the figures supplied, never a determination that the firm has breached CASS 15.",
  "input_schema_ref": "chaingraph/art-499-check-safeguarding-reconciliation.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:ee7c278f77ba168b6c221d6a703d01ad0390c884fd1551198e71f423d3fe4554",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-07-31"
    }
  ],
  "compute_proof_ready": "ready",
  "export_capability": [
    "json"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "ElGvD6DRXxFAbxnPVCyUvzz1QHYSk+Nz4I98FtzNOYYNCY3Q6pNPWEwXzI6abNBr/PiWJfVzJjTA2OBeCEq1piB6oash6krkl+8AyAZjuk+XLslz732fGorb79JNxTkWJsErjTx7ZMQ6skqion0fYvA2RxuDaIh5AejQUyE8MR4hlyJp/VU3CGoTKT3pPIVLS0XaiaR2vtLhDuy9PifKzBiofcSbrX7xE/8WwMKNDvPeLYDt/8LGTeyztDlFmEYnC2tTmwW4BusyHmhN+dQoW3JZZxr4IVzI4bd2NvAsoGgLPcMdHfGn2CTHOhtKehmXoM/+7klzKuhYXtOlknKOBg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:ee7c278f77ba168b6c221d6a703d01ad0390c884fd1551198e71f423d3fe4554",
      "output": {
        "as_of_date": "2026-07-29",
        "citations": {
          "discrepancy_treatment": {
            "id": "CASS 15.8.50R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "external_frequency": {
            "id": "CASS 15.8.42R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "external_reconciliation": {
            "id": "CASS 15.8.47R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "internal_frequency": {
            "id": "CASS 15.8.19R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "internal_reconciliation": {
            "id": "CASS 15.8.10R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "safeguarding_requirement": {
            "id": "CASS 15.8.29G",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          },
          "safeguarding_resource": {
            "id": "CASS 15.8.26R",
            "in_force_from": "2026-05-07",
            "mapped_at": "2026-07-30",
            "mapped_by": "AINumbers CASS15-K-1",
            "scheme": "fca-handbook",
            "uri": "https://handbook.fca.org.uk/handbook/cass15/cass15s8"
          }
        },
        "component_count": 4,
        "components": [
          {
            "account_ref": "ACC-REF-A1",
            "amount_display": "410000.00",
            "amount_minor_units": 41000000,
            "component_type": "relevant_funds_bank_account",
            "counted_toward_resource": true,
            "excluded_amount_minor_units": 0
          },
          {
            "account_ref": "ACC-REF-B2",
            "amount_display": "22500.00",
            "amount_minor_units": 2250000,
            "component_type": "segregated_not_yet_placed",
            "counted_toward_resource": true,
            "excluded_amount_minor_units": 0
          },
          {
            "account_ref": "ACC-REF-C3",
            "amount_display": "30000.00",
            "amount_minor_units": 3000000,
            "component_type": "relevant_assets",
            "counted_toward_resource": true,
            "excluded_amount_minor_units": 0
          },
          {
            "account_ref": "ACC-REF-D4",
            "amount_display": "20000.00",
            "amount_minor_units": 2000000,
            "component_type": "insurance_or_guarantee",
            "counted_toward_resource": true,
            "excluded_amount_minor_units": 0
          }
        ],
        "currency": "GBP",
        "difference_direction": "level",
        "difference_display": "0.00",
        "difference_minor_units": 0,
        "minor_unit_exponent": 2,
        "note": "Deterministic UK CASS 15 safeguarding reconciliation check over a caller-supplied figure set for one declared as-of date. Single-run and stateless: this tool holds no records, runs on no schedule, and retains nothing. The verdict is an arithmetic comparison of the supplied safeguarding resource against the supplied safeguarding requirement. It is not a determination that the firm has or has not complied with CASS 15, it is not a regulatory filing, and it is not legal advice.",
        "rationale": [
          "Safeguarding requirement supplied as 482500.00 GBP (CASS 15.8.29G).",
          "Safeguarding resource summed to 482500.00 GBP across 4 supplied components (CASS 15.8.26R).",
          "Difference (resource minus requirement) is 0.00 GBP; declared tolerance is 1.00 GBP.",
          "Evaluated as a internal safeguarding reconciliation (CASS 15.8.10R), which the firm performs no less than once each reconciliation day (CASS 15.8.19R).",
          "On these figures the resource and the requirement agree within the declared tolerance. This is an arithmetic finding about the figures supplied here, not an opinion on the completeness or accuracy of the underlying records."
        ],
        "reconciliation_type": "internal",
        "rejected_inputs": [],
        "ruleset": {
          "field_set_version": "1.0.0",
          "in_force_from": "2026-05-07",
          "ruleset_id": "FCA-CASS15-PS25-12",
          "ruleset_label": "FCA CASS 15 safeguarding rules, as made by PS25/12",
          "sourced_from": "handbook.fca.org.uk",
          "sourced_on": "2026-07-30"
        },
        "safeguarding_requirement_display": "482500.00",
        "safeguarding_requirement_minor_units": 48250000,
        "safeguarding_resource_display": "482500.00",
        "safeguarding_resource_minor_units": 48250000,
        "subtotals_by_component_type": [
          {
            "amount_display": "410000.00",
            "amount_minor_units": 41000000,
            "component_type": "relevant_funds_bank_account"
          },
          {
            "amount_display": "22500.00",
            "amount_minor_units": 2250000,
            "component_type": "segregated_not_yet_placed"
          },
          {
            "amount_display": "30000.00",
            "amount_minor_units": 3000000,
            "component_type": "relevant_assets"
          },
          {
            "amount_display": "20000.00",
            "amount_minor_units": 2000000,
            "component_type": "insurance_or_guarantee"
          }
        ],
        "tolerance_display": "1.00",
        "tolerance_minor_units": 100,
        "verdict": "reconciled",
        "within_tolerance": true
      }
    }
  }
}
