{
  "generated_at": "2026-10-12T09:11:46+00:00",
  "scanner_version": "0.1.0",
  "server_count": 10,
  "servers": [
    {
      "server_id": "local:weather-poisoned",
      "display_name": "Weather (poisoned example)",
      "grade": "F",
      "score": 0,
      "tool_count": 4,
      "finding_count": 7,
      "scanned_ok": true,
      "detail": "api/server/local-weather-poisoned.json"
    },
    {
      "server_id": "local:docs-rugpull",
      "display_name": "Docs (rug-pull, caught)",
      "grade": "D",
      "score": 40,
      "tool_count": 1,
      "finding_count": 2,
      "scanned_ok": true,
      "detail": "api/server/local-docs-rugpull.json"
    },
    {
      "server_id": "local:notes-benign",
      "display_name": "Notes (clean example)",
      "grade": "A",
      "score": 100,
      "tool_count": 2,
      "finding_count": 0,
      "scanned_ok": true,
      "detail": "api/server/local-notes-benign.json"
    },
    {
      "server_id": "npm:@modelcontextprotocol/server-everything",
      "display_name": "Everything (reference server)",
      "grade": "A",
      "score": 100,
      "tool_count": 0,
      "finding_count": 0,
      "scanned_ok": false,
      "detail": "api/server/npm-modelcontextprotocol-server-everything.json"
    },
    {
      "server_id": "npm:@modelcontextprotocol/server-filesystem",
      "display_name": "Filesystem",
      "grade": "A",
      "score": 100,
      "tool_count": 0,
      "finding_count": 0,
      "scanned_ok": false,
      "detail": "api/server/npm-modelcontextprotocol-server-filesystem.json"
    },
    {
      "server_id": "npm:@modelcontextprotocol/server-memory",
      "display_name": "Memory",
      "grade": "A",
      "score": 100,
      "tool_count": 0,
      "finding_count": 0,
      "scanned_ok": false,
      "detail": "api/server/npm-modelcontextprotocol-server-memory.json"
    },
    {
      "server_id": "npm:@modelcontextprotocol/server-sequential-thinking",
      "display_name": "Sequential Thinking",
      "grade": "A",
      "score": 100,
      "tool_count": 0,
      "finding_count": 0,
      "scanned_ok": false,
      "detail": "api/server/npm-modelcontextprotocol-server-sequential-thinking.json"
    },
    {
      "server_id": "pypi:mcp-server-fetch",
      "display_name": "Fetch",
      "grade": "A",
      "score": 100,
      "tool_count": 1,
      "finding_count": 0,
      "scanned_ok": true,
      "detail": "api/server/pypi-mcp-server-fetch.json"
    },
    {
      "server_id": "pypi:mcp-server-git",
      "display_name": "Git",
      "grade": "A",
      "score": 100,
      "tool_count": 0,
      "finding_count": 0,
      "scanned_ok": false,
      "detail": "api/server/pypi-mcp-server-git.json"
    },
    {
      "server_id": "pypi:mcp-server-time",
      "display_name": "Time",
      "grade": "A",
      "score": 100,
      "tool_count": 2,
      "finding_count": 0,
      "scanned_ok": true,
      "detail": "api/server/pypi-mcp-server-time.json"
    }
  ]
}