{
  "tool_id": "art-609-jwks-pinned-directory-check",
  "tool_version": "1.0.0",
  "display_name": "JWKS Pinned-Directory Check",
  "mcp_name": "check_jwks_pinned_directory",
  "mandate_type": "compliance_control",
  "wave": 100,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-609-jwks-pinned-directory-check.html",
  "description": "Confirm a caller-supplied JWKS directory document matches a caller-pinned SHA-256 digest (sha256(canonicalize(directory_jwks)) === pinned_digest) before art-130 trusts its shape. Zero network, zero key hosting -- both the document and the digest are caller-supplied. Chains before art-130 in visa-tap-agent-verification.",
  "input_schema_ref": "chaingraph/art-609-jwks-pinned-directory-check.html#manifest",
  "consumes": [
    "art-129-webbotauth-signature-verifier"
  ],
  "feeds": [
    "art-130-signature-directory-validator"
  ],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:c2d3b27062a33c356a19c8e65db737fe59d34ad93c8ed44ecde8e960cd22813b",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-13"
    }
  ],
  "export_capability": [
    "json",
    "vc"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "FB7tUjzWHtJSLORF4DH6eae4ruIGtcLmU3JfhDeTB6ANvhikkTgJUYfFd4bEr1q+NmBgh8ecc2FLC63UFritsg8AasvzzOzi8nCNlUa9Jl3eYWM9t3y/j3F+qMyUJskHDQUmnrzKEZjBWz7N05rdYKG6vmuKWU+nk23ZaekL0sUcj3/GSjkGARsNGi5FGQHOaRbsnnf/VeRlEqEiOogfIwnvJ2ziIKLYU44XMaUgxfzxyY+Z4QT3Kmx5AyIKVp6oJOvlcZpHr0R37cR9N3YqCVvyg5sW6m3dEvWt19704aUhT6BkZ9ibSTWveXJWCHWymgV/P+HNTyZ5edx1shAU+g==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:c2d3b27062a33c356a19c8e65db737fe59d34ad93c8ed44ecde8e960cd22813b",
      "output": {
        "computed_digest": "45d28be3698cb02c2a658ecb15c292076254ca24cd797bc75a39dacd244a028d",
        "digest_match": true,
        "key_count": 1,
        "pinned_digest": "45d28be3698cb02c2a658ecb15c292076254ca24cd797bc75a39dacd244a028d",
        "pinned_digest_well_formed": true
      }
    }
  }
}
