{
  "tool_id": "art-404-check-retail-installment-disclosures",
  "tool_version": "1.0.0",
  "display_name": "Retail Installment Contract TILA Disclosure Checker",
  "mcp_name": "check_retail_installment_disclosures",
  "mandate_type": "compliance_mandate",
  "wave": 60,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-404-check-retail-installment-disclosures.html",
  "description": "Ties declared retail-installment-contract Amount Financed, Finance Charge, and Total of Payments (12 CFR 1026.18) against a REUSED amortization schedule -- compose by feeding build_amortization_schedule's (art-332) output_payload straight in, or by reference via its totals and schedule_digest. Does not amortize itself. Also records a dealer-participation/markup declaration as an asserted, receipt-bound fair-lending adjacency note -- no discrimination determination is computed.",
  "input_schema_ref": "chaingraph/art-404-check-retail-installment-disclosures.html#manifest",
  "consumes": [
    "art-332-build-amortization-schedule",
    "art-324-tvm-npv"
  ],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:06ea130127d2c462fd7cf1f689399a8c38d577cfe49220ea12f30a71eacaf87e",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-07-10"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "EdPP9aLGjvwOOmn1vSUhPmz5ueVvb1HBMhrWyRiAQzglieapbx9H5cnMSwF7ABbriVoar6YKgV/NDln7TY2IOgJUaDPDT/q6CYAi+wdfp2FG9QCW01vPHoYDOZqPRQydKuE+mxTaN6/YyOyv0E1awF+JU9Aoc4SJzqwdBQ1r3gQMyJpqfNM23zp1F9OeNeD306ydbmbFR/Vw6SLxSZDaNxmDwiDsurTz/b31wiY9QQLdk4Bo8CFg9eTztiPkAk0dBy+xkbjqEBJ0Xvn29yqSI97cusWxKKAWTN/uRyvtqvUXINRiZ+VTrMMYk04OaIdN856e2/FZ4eqJNyAKEgL+WQ==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:06ea130127d2c462fd7cf1f689399a8c38d577cfe49220ea12f30a71eacaf87e",
      "output": {
        "amortization_provenance": {
          "num_payments": 60,
          "provenance_ok": true,
          "schedule_digest": "sha256:cd726c8717cdc5b1dde830101a5a7fb29f10840048b8cb85d5d834837c493f3d",
          "source_tool_id": "art-332-build-amortization-schedule",
          "total_interest": 3479.43,
          "total_principal": 20000
        },
        "amount_financed": 20000,
        "compliant": true,
        "dealer_participation": {
          "dealer_reserve_disclosed": true,
          "declaration_note": "Dealer participation disclosed per contract Sec 4.",
          "disambiguation": "This dealer-participation record is ASSERTED and receipt-bound only -- a fair-lending ADJACENCY note (dealer markup/reserve practices are a known ECOA/Reg B disparate-impact risk area), NOT a discrimination determination. No disparate-impact or disparate-treatment analysis is computed here.",
          "markup_pct": 1.5
        },
        "disambiguation": "check_retail_installment_disclosures ties the declared cash-price/downpayment/prepaid-finance-charge inputs against a REUSED amortization schedule (art-332, and where TVM-derived, art-324..331) -- it does not compute or verify the amortization itself, and a wrong schedule_digest/totals yields a faithfully wrong tie-out.",
        "finance_charge": 3479.43,
        "regulatory_basis": "12 CFR 1026.18(b)/(d)/(h) (Reg Z retail-installment TILA disclosures: amount financed, finance charge, total of payments) and 1026.18(d)(1)(i) (finance-charge tolerance).",
        "tie_outs": [
          {
            "computed": 20000,
            "diff_cents": 0,
            "disclosed": 20000,
            "label": "amount_financed",
            "within_tolerance": true
          },
          {
            "computed": 3479.43,
            "diff_cents": 0,
            "disclosed": 3479.43,
            "label": "finance_charge",
            "within_tolerance": true
          },
          {
            "computed": 23479.43,
            "diff_cents": 0,
            "disclosed": 23479.43,
            "label": "total_of_payments",
            "within_tolerance": true
          }
        ],
        "tolerance_cents": 500,
        "total_of_payments": 23479.43
      }
    }
  }
}
