{
  "generated_at": "2026-09-14T19:33:56.370Z",
  "scanner_version": "0.1.0",
  "counts": {
    "scanned": 9,
    "published": 2,
    "under_review": 7
  },
  "entries": [
    {
      "server": "deepwiki",
      "endpoint": "https://mcp.deepwiki.com/mcp",
      "grade": "A",
      "score": 0,
      "status": "published",
      "confirmed": true,
      "last_scanned": "2026-09-08T11:48:02.179Z",
      "scanner_version": "0.1.0",
      "ruleset_hash": "sha256:d26757507f22c9f8c437d7428a5ed19a46c3783c46f9ceb158b58a053eab1397",
      "manifest_hash": "sha256:798d07d1e3acabd004a1a9741e88d6be533da524fed201f3c8b8e56b18c0379b",
      "protocol_version": "2025-11-25",
      "layers": {
        "deterministic": true,
        "structural": true,
        "classifier": [
          {
            "provider": "anthropic",
            "model": "claude-opus-5",
            "calls": 694,
            "candidates": 694,
            "complete": true,
            "findings": 0,
            "seconds": 632.4
          }
        ]
      },
      "coverage": {
        "probed": 3,
        "considered": 3,
        "percent": 100
      },
      "requests": 10,
      "reproduction": "mcp-audit scan-file data/snapshots/deepwiki/2026-09-08T11-37-25Z/manifest.json",
      "findings": [],
      "warnings": [
        "[claude-opus-5] Classifier split 6 target(s) longer than 6000 characters into overlapping windows, costing 666 extra call(s). All of the text was examined; a match in any window is reported against the target.",
        "[claude-opus-5] Classifier skipped 4 target(s) shorter than 40 characters, which is below the length any of its rules could match. The deterministic layers still read them."
      ],
      "right_of_reply": {
        "notice_sent_at": null,
        "respond_by": null,
        "override": null,
        "response_received_at": null,
        "outreach": []
      }
    },
    {
      "server": "linear",
      "endpoint": "https://mcp.linear.app/mcp",
      "grade": "A",
      "score": 0,
      "status": "published",
      "confirmed": true,
      "last_scanned": "2026-09-08T03:30:35.964Z",
      "scanner_version": "0.1.0",
      "ruleset_hash": "sha256:d26757507f22c9f8c437d7428a5ed19a46c3783c46f9ceb158b58a053eab1397",
      "manifest_hash": "sha256:6fbd74a399ba7739ee20ec995b54cca998f1b90066d7ebc37c59e365438e091c",
      "protocol_version": "2025-11-25",
      "layers": {
        "deterministic": true,
        "structural": true,
        "classifier": [
          {
            "provider": "anthropic",
            "model": "claude-opus-5",
            "calls": 315,
            "candidates": 315,
            "complete": true,
            "findings": 0,
            "seconds": 312.1
          }
        ]
      },
      "coverage": {
        "probed": 12,
        "considered": 65,
        "percent": 18
      },
      "requests": 43,
      "reproduction": "mcp-audit scan-file data/snapshots/linear/2026-09-08T03-25-15Z/manifest.json",
      "findings": [],
      "warnings": [
        "prompts/list failed after 0 page(s): Method not found",
        "resources/list failed after 0 page(s): Method not found",
        "resources/templates/list failed after 0 page(s): Method not found",
        "34 tools passed the safety classifier; probing the first 12 (raise with --max-probes). Unprobed tools are listed in dynamic.considered.",
        "NON-DETERMINISTIC: two identical calls to \"get_attachment\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "NON-DETERMINISTIC: two identical calls to \"get_agent_skill\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "NON-DETERMINISTIC: two identical calls to \"list_cycles\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "NON-DETERMINISTIC: two identical calls to \"get_document\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "NON-DETERMINISTIC: two identical calls to \"get_issue\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "NON-DETERMINISTIC: two identical calls to \"get_issue_status\" returned different text. Content that changes between identical requests is a signal worth reading the snapshots for.",
        "[claude-opus-5] Classifier skipped 583 target(s) shorter than 40 characters, which is below the length any of its rules could match. The deterministic layers still read them."
      ],
      "right_of_reply": {
        "notice_sent_at": null,
        "respond_by": null,
        "override": null,
        "response_received_at": null,
        "outreach": []
      }
    }
  ]
}
