{
      "tool_id": "art-215-reg-z-appendix-j-apr",
      "tool_version": "1.1.0",
      "display_name": "Reg Z Appendix J APR Solver",
      "mcp_name": "compute_reg_z_appendix_j_apr",
      "mandate_type": "compliance_mandate",
      "wave": 37,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-215-reg-z-appendix-j-apr.html",
      "description": "Reg Z Appendix J actuarial APR solver. Bracketed bisection on the general actuarial equation (12 CFR 1026 Appendix J), with the odd-days fraction priced at simple interest per (b)(6) and only full unit-periods compounded. Handles regular and irregular payment schedules with an odd-days fractional first period, and reports a rate only when a sign-change bracket was established. Pure ECMA-262 arithmetic, no floating-point built-ins beyond basic operations. APR accuracy, TRID disclosure, and QM spread test input.",
      "input_schema_ref": "chaingraph/art-215-reg-z-appendix-j-apr.html#manifest",
      "consumes": [
        "art-332-build-amortization-schedule"
      ],
      "feeds": [
        "art-217-trid-apr-accuracy"
      ],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:23d06ce0530f333676cee2d8435ec0f6622170fc8040d471151cd64a01025225","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": "MBd6BxEyTGeDZRNZ/aKFreZ229BNzILoim18As7EcnwAxnogxWxD9SD944ISqPIs2iF0Lwm7aKmtcb9ejDihRA1dkahKzFIa3PB8G93f5aqXZLEAP6UIRIusirq+D/AyAWm1aTnzG+eiXl28wVBfGzqzsx8cD76vDEf+Tmij8ZQfmacS0DYo8d1mK4slgQ+54204adoO+RLLehu+WJ+IYwFsS6d7fg4fd/gtdKQvN18tKI70ROYt0v0GvAaGc881FSRKXgqd530txm3CnORfYcdGMUfvbe1fJWnOQZiaCd0BG+EDt1J4hr3+jRdsZ+GRAfIsYJeKaMKzfqBuKT1lig==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:23d06ce0530f333676cee2d8435ec0f6622170fc8040d471151cd64a01025225",
          "output": {
            "advance_total": 6000,
            "apr_pct": 11.9961,
            "bracketed": true,
            "converged": true,
            "finance_charge": 778.32,
            "iterations": 24,
            "note": "APR solved by bracketed bisection on the Appendix J (b)(8) general equation. The odd-days fraction is priced at simple interest, (1 + f*i), per (b)(6); only the integer count of full unit-periods is compounded. A rate is reported only when a sign-change bracket was established; otherwise apr_pct is null and APR_NOT_BRACKETED or APR_DID_NOT_CONVERGE is raised. Input APOR separately for QM spread test.",
            "num_payments": 24,
            "payment_total": 6778.32,
            "periodic_rate": 0.009997,
            "periods_per_year": 12,
            "regulatory_basis": "Reg Z Appendix J, 12 CFR 1026 Appendix J (general actuarial equation)"
          }
        }
      }
    }
