{
  "tool_id": "art-393-x402-v2-migration-linter",
  "tool_version": "1.0.0",
  "display_name": "x402 v2 Wire-Format Migration Linter",
  "mcp_name": "lint_x402_v2_migration",
  "mandate_type": "compliance_control",
  "wave": 66,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-393-x402-v2-migration-linter.html",
  "description": "Lints a supplied x402 header set / 402 response body against the Protocol Version 2 wire format: flags deprecated v1 headers (X-PAYMENT, X-PAYMENT-RESPONSE) and their v2 replacements (PAYMENT-SIGNATURE, PAYMENT-RESPONSE), flags v1 body-based PaymentRequirements delivery (v2 moves requirements into the PAYMENT-REQUIRED header as a client-selectable array), and checks the network id for CAIP-2 format. Declares protocol_version so a future wire bump is a data re-pin. Pinned to coinbase/x402 specs/x402-specification-v2.md (2025-12-09).",
  "input_schema_ref": "chaingraph/art-393-x402-v2-migration-linter.html#manifest",
  "consumes": [
    "art-26-x402-payload-decoder-flow-simulator"
  ],
  "feeds": [
    "art-61-x402-batch-settlement-reconciler",
    "art-394-x402-deferred-handshake-validator"
  ],
  "status": "live",
  "conformance_fixtures": false,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:fdb16b08532bdd3b1513e88aa97cb133f64c2ea0d04d8b0556107a2d0e95caac","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-10"}],
  "export_capability": [
    "json",
    "csv",
    "pdf"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "EVrow40A4Yv/FVCr+ANQdRV04JiXprg0Kh0JIIwqCw4aMW7jmrKpnkqyPy9HOwvwA8jxJPqLE+bJb49k3Dv7GhmNahbCo117kV07uMbZRshsuG7lwSMlFravsa61hXybDzrTCC9nnA9+fpryKki/Btv8B6BENWDbGv3ZaD1kRwEVLcW2EKnn0rYuVqJq+djaqJM0qAv96WfswYzDfPc6KxUTTc7m6bEVSXuPDBRN4ajHa+mZN6lAWcLyBOpb7xBbFLx6Ay0xqrFdZjI3vakO63vOhpe5o4QSN5ksxV0ccbkgVmV+dG2/keAaNE/+AuVXC6VTGuRk3qrR3wacSL5TQg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:fdb16b08532bdd3b1513e88aa97cb133f64c2ea0d04d8b0556107a2d0e95caac",
      "output": {
        "declared_protocol_version": null,
        "deprecated_headers_found": [],
        "errors": 1,
        "findings": [
          {
            "level": "error",
            "msg": "No x402 headers or body supplied — nothing to lint."
          }
        ],
        "inferred_wire_version": 1,
        "passes": 0,
        "protocol_version": 2,
        "score": 85,
        "spec_note": "Pinned to x402 Protocol Version 2 (coinbase/x402 specs/x402-specification-v2.md, 2025-12-09). Header/body deltas checked here only; scheme and asset registries are plugins and are not hard-coded — verify against the current x402 scheme registry before relying on a scheme/network pass.",
        "v2_headers_found": [],
        "warnings": 0
      }
    }
  }
}
