{
  "tool_id": "art-512-check-mica-reserve-disclosure",
  "tool_version": "1.0.0",
  "display_name": "Check MiCA Reserve Disclosure",
  "mcp_name": "check_mica_reserve_disclosure",
  "mandate_type": "compliance_mandate",
  "wave": 79,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-512-check-mica-reserve-disclosure.html",
  "description": "Checks a token issuer's published reserve disclosure, the amount in circulation and the value and composition of the reserve, against the composition, concentration, segregation and publication-cadence terms the reader supplies. Deterministic and backward-looking: it reads what was published and compares it to declared rules, and contains no simulation of any kind. Coverage is the reserve total against tokens in circulation, with the surplus or shortfall. Composition tests each component against the caller's declared eligible asset classes and per-class concentration limits, listing every component that falls outside and keeping its amount inside the reserve total, because excluding it would flatter the coverage figure. Segregation tests the segregated proportion against the declared minimum, and lists every component whose custodian type the caller did not declare acceptable. Cadence names each period that ran longer than the declared interval with no publication, individually and with its dates, never as a count. HARD FENCE: the eligible asset classes, concentration limits, minimum segregated percentage, acceptable custodian types and disclosure cadence are every one of them a caller input, pinned in the artifact and shown on screen. This kernel ships no reporting template, no eligible-asset table and no issuer library, performs no lookups of any kind (zero-egress), and makes no claim about what the current rules are, so a rule change makes an old receipt dated rather than wrong. The one regime constant is the e-money-token minimum of 30 percent, applied only when the caller declared nothing, labelled at source in the receipt; for an asset-referenced token an absent minimum raises judgment_required naming the field rather than inventing a threshold. Every verdict is against the caller's declared rules: this is not a determination that the issuer complies, not legal advice, and not a submission. Where a named human attests the check, the dual-control certification surface art-503-build-dual-control-certification is reused and no second threshold evaluator is built. Distinct from rca-02-mica-reserve-stress, which is a Monte Carlo redemption stress asking whether the reserve survives a run, a forward-looking simulation this node neither imports nor edits, and from art-105-mica-token-service-scoper and tools/332-mica-casp-authorization-checker, neither of which reads a reserve disclosure. Out of scope: redemption stress simulation, authorisation and service scoping, white-paper conformance, template validation, any statement that an issuer is or is not compliant, and any coverage ratio about our own estate.",
  "input_schema_ref": "chaingraph/art-512-check-mica-reserve-disclosure.html#manifest",
  "deadline": null,
  "deadline_note": "No statutory filing deadline is encoded. The publication cadence is a caller input, because a bundled cadence is a standing duty that goes silently false when the terms change.",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:3123cd816d8e2879a6ea052f973621b149340b5cd6072232bf2666e1bbe9c333",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-01"
    }
  ],
  "compute_proof_ready": "ready",
  "export_capability": [
    "pdf",
    "xlsx"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "Fv7mPSCdmtLbIEHoXcGBGcEClaFOg6qS/ipqqI5fGF8ktaKDsGxFU0je2bQ9aCbm2wnzr1Htico8j3+jLDw0eQmmcyO7HWejR+ohWwRRfRztv21lmBgZF/dpNMX5TY4SHZbARmIcYQAlcI0DvOT5pSr3JejLvhH0gQdCNUtyUTwCYfH7C1TQVxpi2UYM2vABcGz5UNyw3Jw4WRqN5ngMzhOBiEJI1Wj7W4BuzmoiS/Qx+NLMFGFcV6s/+0UTrCAeJ7dXFh5Nc70G/lB3FHvgv5Jbo05T12C4p/zTWcs4MP4JF0u2X4rDc0bN33eIu7WzxHXomvI/IFbSc24cQtmY5g==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:3123cd816d8e2879a6ea052f973621b149340b5cd6072232bf2666e1bbe9c333",
      "output": {
        "as_of": "2026-06-30",
        "cadence": {
          "cadence_days_declared": 31,
          "disclosure_dates_ordered": [
            "2026-01-31",
            "2026-02-28",
            "2026-03-31",
            "2026-04-30",
            "2026-05-31",
            "2026-06-30"
          ],
          "invalid_disclosure_dates": [],
          "missed_periods": [],
          "window_end": "2026-06-30",
          "window_start": "2026-01-01"
        },
        "composition": {
          "class_totals": [
            {
              "amount": "205000000.00",
              "asset_class": "bank_deposit",
              "limit_pct": "60",
              "pct_of_reserve": "40.00"
            },
            {
              "amount": "200000000.00",
              "asset_class": "sovereign_bill",
              "limit_pct": "60",
              "pct_of_reserve": "39.02"
            },
            {
              "amount": "107500000.00",
              "asset_class": "reverse_repo",
              "limit_pct": "30",
              "pct_of_reserve": "20.98"
            }
          ],
          "concentration_breaches": [],
          "eligible_asset_classes_declared": [
            "bank_deposit",
            "sovereign_bill",
            "reverse_repo"
          ],
          "ineligible_components": [],
          "ineligible_total": "0.00"
        },
        "coverage": {
          "circulation_positive": true,
          "coverage_ratio": "1.0250",
          "covered": true,
          "eligible_coverage_ratio": "1.0250",
          "eligible_reserve_total": "512500000.00",
          "reserve_empty": false,
          "reserve_total": "512500000.00",
          "surplus_or_shortfall": "12500000.00",
          "tokens_in_circulation": "500000000.00"
        },
        "disclosure_ref": "RESERVE-DISCLOSURE-2026-06",
        "fence": "Eligible asset classes, concentration limits, the minimum segregated percentage, acceptable custodian types and the disclosure cadence are every one of them a caller input, transcribed from the terms the reader is holding the issuer to. This kernel ships no reporting template, no eligible-asset table and no issuer library, and performs no lookups of any kind (zero-egress by contract). disclosure_ref and rules_version are pinned so a later rule change makes an old receipt dated, not wrong.",
        "issuer_id": "ISSUER-DEMO-01",
        "judgment_required": null,
        "not_proven": [
          {
            "detail": "The eligible asset classes, concentration limits, minimum segregated percentage, acceptable custodian types and disclosure cadence are every one of them caller-supplied and asserted. This kernel ships no reporting template and no eligible-asset table, performs no lookups of any kind (zero-egress), and does not verify these rules against the regulation, a technical standard, or any supervisory expectation.",
            "item": "Rule accuracy"
          },
          {
            "detail": "The amount in circulation, the component amounts, the custodian types, the segregation markers and the publication dates are taken as given from the disclosure being checked. This kernel does not verify that the published document says what was transcribed from it, nor that the reserve exists.",
            "item": "Disclosure accuracy"
          },
          {
            "detail": "Component amounts are asserted at the values supplied. No independent valuation, haircut, or mark to market is performed, and no market data is read.",
            "item": "Valuation"
          },
          {
            "detail": "Every verdict here is against the CALLER's declared rules. This is not a determination that the issuer complies with MiCA or with anything else, not legal advice, and not a submission to any authority. A finding can equally originate from a rule this run had wrong.",
            "item": "Compliance"
          }
        ],
        "rationale": [
          "Reserve total of 512500000.00 checked against 500000000.00 of tokens in circulation.",
          "The reserve carries 3 declared components across 3 asset classes.",
          "Every component sits inside the declared eligible asset classes.",
          "No declared concentration limit is exceeded.",
          "Segregated proportion is 40.00% against a minimum of 30% (the e-money-token default, applied only because the caller declared nothing).",
          "Every component sits with a custodian type the caller declared acceptable.",
          "Every interval between publications is within the declared 31-day cadence.",
          "Every verdict above is against the rules supplied with this run. It is not a determination that the issuer complies, not legal advice, and not a submission."
        ],
        "rounding": {
          "decimal_places": 2,
          "mode": "half_up"
        },
        "rules_version": "reader-rules-1.0",
        "segregation": {
          "acceptable_custodian_types_declared": [
            "credit_institution",
            "investment_firm",
            "casp"
          ],
          "meets_declared_minimum": true,
          "min_segregated_pct_applied": "30",
          "min_segregated_pct_source": "default_emt_30",
          "segregated_amount": "205000000.00",
          "segregation_pct": "40.00",
          "undeclared_custodian_components": []
        },
        "sign_off": {
          "note": "Where a named human attests this check, the dual-control certification surface is the one to use. This kernel emits the receipt and evaluates no threshold of its own.",
          "surface": "art-503-build-dual-control-certification"
        },
        "token_type": "EMT"
      }
    }
  }
}
