{
      "tool_id": "art-216-trid-tolerance-cure",
      "tool_version": "1.0.0",
      "display_name": "TRID Fee Tolerance and Cure",
      "mcp_name": "compute_trid_tolerance_cure",
      "mandate_type": "compliance_mandate",
      "wave": 37,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-216-trid-tolerance-cure.html",
      "description": "TRID fee tolerance analysis and cure calculation per Reg Z §1026.19(e)(3). Classifies each closing fee into zero-tolerance, ten-percent cumulative, or no-tolerance-limit bucket. Computes 10% bucket aggregate overage, identifies violations, and returns the cure amount required to make the consumer whole under TRID.",
      "input_schema_ref": "chaingraph/art-216-trid-tolerance-cure.html#manifest",
      "consumes": [],
      "feeds": [],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:9be448c7f2f02ca2d2b223550734fe431b0dacf6d93db36ccae0cb6963e83cb3","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-04"}],
      "export_capability": [
        "json"
      ],
      "compute_proof_ready": "ready",
      "compute_proof": {
        "type": "ZkVmReceipt",
        "system": "risc0",
        "receiptFormat": "groth16-bn254",
        "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
        "seal": "A4PNXnPJlc5mxHOq1PX7BCXUB8TwXL1sja/IaLdwTSwd3OO5V2OuGZFeaDmqPIsMivSRwOehr0T59wRPzQPOFw/6BwJul+TlOpd66bc3+iKGIL7+YFK9DA8arSw0FdO8CCN2wl/ZXXCU1SIZ2D5aeGwTCiXmHyMtoJAuwEIHsJMDbKKnkxiU4kLwMmDt+sVOcie4BwO9RLnFjVPX3x3LCi3ZD1aTVWj/TQlYyfzX9HjvR2036Hqnk0d3QIsG3DT4KZZQci0AoC0KY9hJL2axaH4dAQNUCxCYpHKx168esJoaaZUKfSEkxVY9LlxTJfUnCXsdG9mztCJYcz7OdZIn0Q==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:9be448c7f2f02ca2d2b223550734fe431b0dacf6d93db36ccae0cb6963e83cb3",
          "output": {
            "cure_amount": 0,
            "cure_required": false,
            "fee_analysis": [
              {
                "bucket": "zero_tolerance",
                "cd_amount": 1500,
                "increase": 0,
                "le_amount": 1500,
                "name": "origination_fee",
                "status": "ok",
                "violation": false
              },
              {
                "bucket": "ten_pct_cumulative",
                "cd_amount": 640,
                "increase": 40,
                "le_amount": 600,
                "name": "appraisal",
                "status": "in_ten_pct_bucket",
                "violation": false
              },
              {
                "bucket": "ten_pct_cumulative",
                "cd_amount": 1250,
                "increase": 50,
                "le_amount": 1200,
                "name": "title_service",
                "status": "in_ten_pct_bucket",
                "violation": false
              },
              {
                "bucket": "no_tolerance_limit",
                "cd_amount": 1100,
                "increase": 200,
                "le_amount": 900,
                "name": "hazard_insurance",
                "status": "no_limit",
                "violation": false
              }
            ],
            "note": "Changed-circumstance fees are excluded from comparison. Bucket assignment is the caller's responsibility per regulatory classification rules.",
            "regulatory_basis": "Reg Z §1026.19(e)(3), TRID fee tolerance rules (Loan Estimate to Closing Disclosure)",
            "ten_pct_bucket_increase": 90,
            "ten_pct_bucket_le_sum": 1800,
            "ten_pct_excess": 0,
            "ten_pct_threshold": 180,
            "ten_pct_violation": false,
            "total_violations": 0,
            "violations": [],
            "zero_tolerance_violations": 0
          }
        }
      }
    }
