{
  "slug": "ui5",
  "tool_id": "npm/@ui5/mcp-server",
  "verdict_url": "/verdict/ui5",
  "verdict_content_hash": "sha256:e24d88f699f081991b2540056f081db54a80707781c4055ff4452f5e08278d3b",
  "version": "0.2.12",
  "commit": "7fe1c30193a33211fae0d008fc0a0ae6a2535ef7",
  "dist_shasum": "e8eb7ef63f084a9aaf02948b28964eade36c9c11",
  "scanned_at": "2026-06-14T00:00:00Z",
  "capture_self_test": "verified — a beacon decoy was emitted from the tool's network context; its presence in the intercept means a 'no egress' result would have been trustworthy.",
  "method": "Installed and run in an isolated container; fed traceable decoy data; all outbound traffic intercepted (TLS broken via own CA, iptables transparent redirect). Endpoints, resolved geo/jurisdiction and frequency are observed facts. Capture self-test passed.",
  "request_count": 6,
  "captured_requests": [
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/@ui5/cli",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    },
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/typescript",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    },
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/typescript-eslint",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    },
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/ui5-middleware-livereload",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    },
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/ui5-tooling-transpile",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    },
    {
      "method": "GET",
      "scheme": "https",
      "host": "registry.npmjs.org",
      "path": "/@ui5/ts-interface-generator",
      "headers": {
        "Host": "registry.npmjs.org",
        "Connection": "keep-alive"
      },
      "body_redacted": "",
      "blocked": true,
      "tls_inspected": true
    }
  ],
  "reproduce": {
    "scanner": "canary-sandbox (open methodology; Docker backend)",
    "command": "python -m canary.cli scan <target> --backend docker   # target: npm @ui5/mcp-server@0.2.12",
    "note": "Re-run it yourself: the scanner installs the pinned version, drives the tool over MCP, and intercepts all egress."
  },
  "note": "Raw captured outbound requests from one sandbox run (identifiers/keys redacted). This is the underlying observation behind the verdict — re-run the scan to verify.",
  "verification": "verdict_content_hash = sha256 over the canonical verdict JSON; dist_shasum = the npm tarball checksum of the pinned version. Signed artifacts + an append-only immutable log are on the roadmap (toward independent verifiability).",
  "verdict_signature": "ed25519:XYTBa1PA7iQDEdvIC5OAeg1CE2Ogz0o9M/oQsnQ2iPBpk8jciZCT2Dccxi6G+tzUA8yEA+lAkqSASjn/hSgYCA=="
}