{
  "format_version": "0.2.0",
  "report_id": "9854fa23-f2cf-468f-95b5-c1f3cd2485be",
  "generated_at": "2026-08-21T18:17:55.481Z",
  "subject": {
    "server_name": "io.github.ihor-sokoliuk/mcp-searxng",
    "artifact": {
      "ecosystem": "npm",
      "package": "mcp-searxng",
      "version": "2.0.0",
      "sha256": "069ab554b5b0a4f97ed8cc62500b0295bce83d2d2ea700853b2d67d02af6a8da",
      "download_url": "https://registry.npmjs.org/mcp-searxng/-/mcp-searxng-2.0.0.tgz",
      "registry_metadata_url": "https://registry.npmjs.org/mcp-searxng/2.0.0",
      "acquired_at": "2026-08-21T18:17:55.481Z",
      "registry_metadata_sha256": "745f6bafa95f3eb8977e0ce390ed19f608dfc63cf31304234a4a2108b5135e5d",
      "integrity_claim": "sha512-SB/ByKkN+B6wf3W/hNr+CMCaX6eyjJakEtBzbifqWx8pMLNCo5tj4s30FjuvyKEKdJZmQqmA12eX5ejoUyyf/g==",
      "integrity_verified": true
    }
  },
  "analysis": {
    "engine": {
      "name": "sentinel",
      "version": "0.2.0",
      "build_sha256": "76ecfa3e5785d89b34d6618b32c84c01f0e40666b3541871cc874aba61200160"
    },
    "protocol_profile": {
      "id": "mcp-2026-07-28",
      "specification_revision": "2026-07-28",
      "local_retrieval_date": "2026-08-01",
      "discovery_status": "not_run"
    },
    "authorization_profiles": [
      {
        "id": "none",
        "credential_present": false,
        "description": "No credentials were supplied."
      }
    ],
    "rule_pack": {
      "version": "0.1.0",
      "sha256": "302d85219dda34199bd2402fcc94ba34233152fe996a128e0b332ac3efef24b3"
    },
    "semantic_analysis": []
  },
  "observations": [
    {
      "id": "observation:package-metadata",
      "kind": "artifact_metadata",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "60417db7424891e45e70eff04fab04aeae1b60c0d443bf0b24064433b8fc711d",
          "artifact_path": "package/package.json",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "name": "mcp-searxng",
        "version": "2.0.0",
        "mcpName": "io.github.ihor-sokoliuk/mcp-searxng",
        "description": "MCP server for SearXNG integration",
        "bin": {
          "mcp-searxng": "dist/cli.js"
        },
        "scripts": {
          "build": "tsc && shx chmod +x dist/*.js",
          "watch": "tsc --watch",
          "test": "cross-env SEARXNG_URL=https://test-searx.example.com tsx __tests__/run-all.ts",
          "test:coverage": "cross-env SEARXNG_URL=https://test-searx.example.com c8 --reporter=text --include 'src/**' --check-coverage --lines 90 --branches 85 tsx __tests__/run-all.ts",
          "test:e2e": "node --env-file-if-exists=.env.e2e --import tsx __tests__/e2e/run-e2e.ts",
          "verify:packed-consumer": "node scripts/verify-packed-consumer.mjs",
          "bootstrap": "npm install && npm run build",
          "inspector": "DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector node dist/cli.js",
          "lint": "eslint src __tests__ scripts --max-warnings=0",
          "audit:deps": "npm audit --audit-level=moderate",
          "security": "npm run lint && npm run audit:deps",
          "postversion": "TAG=$(node scripts/update-version.js | tail -1) && git add src/version.ts .mcp/server.json && git commit --amend --no-edit && git tag -f $TAG"
        },
        "engines": {
          "node": ">=22"
        }
      }
    },
    {
      "id": "observation:file-inventory",
      "kind": "file",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "069ab554b5b0a4f97ed8cc62500b0295bce83d2d2ea700853b2d67d02af6a8da",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "entry_count": 59,
        "regular_file_bytes": 292846,
        "entries": [
          {
            "path": "package/dist/browser-solver-config.d.ts",
            "type": "file",
            "size": 574,
            "sha256": "bde1b124b10304d9586f424cea949d36ba9a48fbed0b798244158031727c8a41"
          },
          {
            "path": "package/dist/browser-solver-config.js",
            "type": "file",
            "size": 2488,
            "sha256": "0a67f13e9652c1c2735ebe427536e29f06b2f22c46de4d65248216dbc9234b15"
          },
          {
            "path": "package/dist/browser-solver.d.ts",
            "type": "file",
            "size": 2362,
            "sha256": "13fac9c147573f6326fffed7e913d28d98af83b45e72e7c7fce7d408ddabca0b"
          },
          {
            "path": "package/dist/browser-solver.js",
            "type": "file",
            "size": 14234,
            "sha256": "7ebaad21d856b8b8a7797ca09cac539fb3092ad3e51b4cee9faf94c2d71ed34c"
          },
          {
            "path": "package/dist/cache.d.ts",
            "type": "file",
            "size": 767,
            "sha256": "2863d9b4ec313f8086904f679319f670b3951d5f39a25879f0a3776d613893c6"
          },
          {
            "path": "package/dist/cache.js",
            "type": "file",
            "size": 3297,
            "sha256": "0f84e68572bf742f81bc1659907a7e1094a26b42c090f7430aa761d7b0e6d472"
          },
          {
            "path": "package/dist/cli.d.ts",
            "type": "file",
            "size": 31,
            "sha256": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012"
          },
          {
            "path": "package/dist/cli.js",
            "type": "file",
            "size": 1047,
            "sha256": "0cbb7df77253b65537df2bccec566c6e3f4043dfb83fdc862cfc337721cdc369"
          },
          {
            "path": "package/dist/diagnostic-output.d.ts",
            "type": "file",
            "size": 149,
            "sha256": "9cb943e2c777c1a004cf569bb04b1045785bfa1f1699100ec4f956d87f603997"
          },
          {
            "path": "package/dist/diagnostic-output.js",
            "type": "file",
            "size": 340,
            "sha256": "895e0b9c7ddb76171d38dedba924e4338852cb1a7d9e392abf1bc2337c0e39cf"
          },
          {
            "path": "package/dist/diagnostic-sanitizer.d.ts",
            "type": "file",
            "size": 371,
            "sha256": "8a3de593d4602afd6306fe1531d725be1319ebf9e7c0c19799b24aebdce7e9d8"
          },
          {
            "path": "package/dist/diagnostic-sanitizer.js",
            "type": "file",
            "size": 7039,
            "sha256": "d708dfa2149f9690657d313c724e4880f2d9da1d8e5d1f7b1c4b67464932a912"
          },
          {
            "path": "package/dist/env-int.d.ts",
            "type": "file",
            "size": 726,
            "sha256": "390a29719087c568fadae3ce95cea38ab8cd79941ed662add3c703be912232ab"
          },
          {
            "path": "package/dist/env-int.js",
            "type": "file",
            "size": 1360,
            "sha256": "fc28878f3316328bfc6683e953cc2fd77b942c581f13a185263c4818d1a546e1"
          },
          {
            "path": "package/dist/error-handler.d.ts",
            "type": "file",
            "size": 1996,
            "sha256": "d45fddfd23279a24d9b116bcc40bca82b4b3216b9e95eae77fc340a911f2da9e"
          },
          {
            "path": "package/dist/error-handler.js",
            "type": "file",
            "size": 7835,
            "sha256": "9cf4bea9f25c6000e045cc39bb5db5864e78d154c628fc00e6b36c4ae09218e3"
          },
          {
            "path": "package/dist/http-security.d.ts",
            "type": "file",
            "size": 736,
            "sha256": "5c89c68dfe000eeb4366e9d96fbb3a0cc43bd2ffbe34c5cefb792d3a96de5930"
          },
          {
            "path": "package/dist/http-security.js",
            "type": "file",
            "size": 3936,
            "sha256": "1b3d979b5e26bc1b1eda2ba727a156928584a80d574b8bea97062725fb174fea"
          },
          {
            "path": "package/dist/http-server.d.ts",
            "type": "file",
            "size": 1960,
            "sha256": "c9ce23a8d0ee2a1aa23568a5ff21dc1fcf9f92e9e1186bd77fea678ecc774191"
          },
          {
            "path": "package/dist/http-server.js",
            "type": "file",
            "size": 28271,
            "sha256": "a50355fbb1b6fc538cd31b523d33705070a2f4fc91588dbe8253f6213d51d839"
          },
          {
            "path": "package/dist/index.d.ts",
            "type": "file",
            "size": 1328,
            "sha256": "f2b48992a9035b25ab0f4fa4e7e111c61497d17c5b600283a5317bff5bd29b4d"
          },
          {
            "path": "package/dist/index.js",
            "type": "file",
            "size": 16311,
            "sha256": "b91caa499d17862a58e13b45729dd08561a082da8a5cf7dec703bae0e16253fc"
          },
          {
            "path": "package/dist/instance-info.d.ts",
            "type": "file",
            "size": 520,
            "sha256": "78f9a9f6b21c4832c7bee48bef91ee6e0bbb37ef5ce686e6af2767d2870cb28f"
          },
          {
            "path": "package/dist/instance-info.js",
            "type": "file",
            "size": 11465,
            "sha256": "99ab6a6a615c60b3e76128d8b64ca04640c2416ab72cd95cc8989cf1b381eab0"
          },
          {
            "path": "package/dist/logging.d.ts",
            "type": "file",
            "size": 735,
            "sha256": "9d8f916be4ac3d7f2f9b146859b7160db4d933a87342da99c1ec21740e98e6c9"
          },
          {
            "path": "package/dist/logging.js",
            "type": "file",
            "size": 3132,
            "sha256": "c826ce51f95d0cb30c10dd33149a9f70ca4ffef05bede6549650e2a53fcad12d"
          },
          {
            "path": "package/dist/pdf-network-guard.d.ts",
            "type": "file",
            "size": 147,
            "sha256": "911c08cb4cacfff915fa05648aaacd8c03169391a9d5f5b1c116f6c0a0807bc5"
          },
          {
            "path": "package/dist/pdf-network-guard.js",
            "type": "file",
            "size": 1569,
            "sha256": "e900a3d31b91c9bdca0f5404b54e2cf9b5ed89f84a0ff579283be58636e69b02"
          },
          {
            "path": "package/dist/pdf-reader.d.ts",
            "type": "file",
            "size": 1254,
            "sha256": "b3462bcf99a20f0a38307bb63139d57a02d3498c64417716f01af539310bcf4d"
          },
          {
            "path": "package/dist/pdf-reader.js",
            "type": "file",
            "size": 5096,
            "sha256": "a81c8aaed8d965c70a62fcfc4879cdb2c127bdac96c92899432edb6f1935e232"
          },
          {
            "path": "package/dist/pdf-worker.d.ts",
            "type": "file",
            "size": 960,
            "sha256": "91e34e9a3e3acb30cb01277bd5312aa9034a4b7f44b553cd755cd5ba1230a36f"
          },
          {
            "path": "package/dist/pdf-worker.js",
            "type": "file",
            "size": 5126,
            "sha256": "bdb1eb8f0a3d2a75a8918c9e997e813ad0eb1f1f0a862f2679c47759febf7a69"
          },
          {
            "path": "package/dist/proxy.d.ts",
            "type": "file",
            "size": 4528,
            "sha256": "3412a3abd9e6a3f3908ee7fc7acc57150b615144118610573b88ab389b2f5401"
          },
          {
            "path": "package/dist/proxy.js",
            "type": "file",
            "size": 13110,
            "sha256": "bbcfd76dc80c7fbf5561d3d503c53111c41a3e8a3e0cbaab75fd86848a907caa"
          },
          {
            "path": "package/dist/resources.d.ts",
            "type": "file",
            "size": 513,
            "sha256": "c5927b58f565b795c26eaa87871606fa1fc5c7009cb29aaab0bc042242948fbc"
          },
          {
            "path": "package/dist/resources.js",
            "type": "file",
            "size": 11276,
            "sha256": "b90530b714f0dafca9bf136cf525c53043e6590c365f372d1049e8945388db26"
          },
          {
            "path": "package/dist/search-cache.d.ts",
            "type": "file",
            "size": 626,
            "sha256": "c81a5867324d24d7af6fe78362e0e9f56530547111ffd57cefea4ab3888d59a1"
          },
          {
            "path": "package/dist/search-cache.js",
            "type": "file",
            "size": 3206,
            "sha256": "147f1c7625fd3341f63ace7bb132f6cc91ea0e7dd6fe61bd8632023eb3708843"
          },
          {
            "path": "package/dist/search.d.ts",
            "type": "file",
            "size": 685,
            "sha256": "ca668cc5c58b70bf78acbce07f469f21fde347a9b4e5c8e6d1c7695c56dd55f1"
          },
          {
            "path": "package/dist/search.js",
            "type": "file",
            "size": 30719,
            "sha256": "7d6c4dae4c01c7d4e2f3639bc90689bc736807a8d4aa9154cbba599e0b0702f3"
          },
          {
            "path": "package/dist/searxng-instances.d.ts",
            "type": "file",
            "size": 1031,
            "sha256": "a23e563c77f3955360d04d45e507047ddd7bed35906753776e0d9a10d8f3dad0"
          },
          {
            "path": "package/dist/searxng-instances.js",
            "type": "file",
            "size": 4242,
            "sha256": "6610cf1f21cbee8ce722509d7d11f3f9a6b0454cbe2dac19ba9d8957044f951f"
          },
          {
            "path": "package/dist/searxng-response.d.ts",
            "type": "file",
            "size": 902,
            "sha256": "f0f9b4e0dcf60aff32dd9bda5252454d2b0f90e7b84dddba059ea827c1f1a097"
          },
          {
            "path": "package/dist/searxng-response.js",
            "type": "file",
            "size": 6371,
            "sha256": "09aece956826110956442477df4153d106511e6f03160c2969a67562a713b646"
          },
          {
            "path": "package/dist/suggestions.d.ts",
            "type": "file",
            "size": 183,
            "sha256": "1cd3994d9415c86de61882e0eaf6f0268f83d7e1cdddcb87c6944a0e4491985a"
          },
          {
            "path": "package/dist/suggestions.js",
            "type": "file",
            "size": 1620,
            "sha256": "2c835e3997105fd1213b1f16816b7c992e677cb628846e8da31d622bdfa0f39b"
          },
          {
            "path": "package/dist/tls-config.d.ts",
            "type": "file",
            "size": 2058,
            "sha256": "355e80c0b19de7941008a71eef98c669c724601837606324dddc4656ce79fd43"
          },
          {
            "path": "package/dist/tls-config.js",
            "type": "file",
            "size": 3360,
            "sha256": "dcfe1eb5225e7ec23b1f4298371f89449c93fdee8c37faa1f915fc24c7e82a82"
          },
          {
            "path": "package/dist/types.d.ts",
            "type": "file",
            "size": 1891,
            "sha256": "e41d963e0956a6f36f294dfade948f33c2c55320688bf01ffd45163171e837e4"
          },
          {
            "path": "package/dist/types.js",
            "type": "file",
            "size": 13931,
            "sha256": "dc6ff2e2de6f3cc20037cd1fd5077ef50cff3c698d43b508535b34c7962b96ba"
          },
          {
            "path": "package/dist/url-reader.d.ts",
            "type": "file",
            "size": 698,
            "sha256": "53285939afc749bef87881bf5505fd2baa1b3c55ae70a0cb15007a198f767f71"
          },
          {
            "path": "package/dist/url-reader.js",
            "type": "file",
            "size": 29432,
            "sha256": "cfea10a1e21500c4afacf99053adac9a35580b3bab5fde4a679757ff48b57a2d"
          },
          {
            "path": "package/dist/url-security.d.ts",
            "type": "file",
            "size": 586,
            "sha256": "c9d00aeb62d889aa382a12879dacb8e2d2c9286773485a288d83e9fdd64097a0"
          },
          {
            "path": "package/dist/url-security.js",
            "type": "file",
            "size": 4238,
            "sha256": "ee345886f0c8823a5ff502f10b73a268553982a9eae544d48984ec539cd81de1"
          },
          {
            "path": "package/dist/version.d.ts",
            "type": "file",
            "size": 47,
            "sha256": "927465ad87bb8aa095e6f3ca59e6afaf2c826bd2ebab4b1478e05b3492e00319"
          },
          {
            "path": "package/dist/version.js",
            "type": "file",
            "size": 39,
            "sha256": "2e0fb3751c3e83ea09333d0a6347be5e17d0dc238f73967454a0d038a6fc9140"
          },
          {
            "path": "package/LICENSE",
            "type": "file",
            "size": 1059,
            "sha256": "d5d54589b2be70312c163de0716cc3da4109bf3ed05c1e4d4d5b633025312e5f"
          },
          {
            "path": "package/package.json",
            "type": "file",
            "size": 3045,
            "sha256": "60417db7424891e45e70eff04fab04aeae1b60c0d443bf0b24064433b8fc711d"
          },
          {
            "path": "package/README.md",
            "type": "file",
            "size": 26288,
            "sha256": "79e694bfb07e744b41d01025c2e45d1ab2ce46a01c9d21e7e4c222e26ac5b3b6"
          }
        ]
      }
    },
    {
      "id": "observation:registry-metadata",
      "kind": "artifact_metadata",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "745f6bafa95f3eb8977e0ce390ed19f608dfc63cf31304234a4a2108b5135e5d",
          "capture_kind": "registry_metadata"
        }
      ],
      "data": {
        "metadata_url": "https://registry.npmjs.org/mcp-searxng/2.0.0",
        "requested_package": "mcp-searxng",
        "requested_version": "2.0.0",
        "tarball_url": "https://registry.npmjs.org/mcp-searxng/-/mcp-searxng-2.0.0.tgz",
        "integrity_claim": "sha512-SB/ByKkN+B6wf3W/hNr+CMCaX6eyjJakEtBzbifqWx8pMLNCo5tj4s30FjuvyKEKdJZmQqmA12eX5ejoUyyf/g==",
        "integrity_verified": true
      }
    },
    {
      "id": "observation:runtime-dependencies",
      "kind": "dependency",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "60417db7424891e45e70eff04fab04aeae1b60c0d443bf0b24064433b8fc711d",
          "artifact_path": "package/package.json",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "dependencies": {
          "@modelcontextprotocol/core": "2.0.0",
          "@modelcontextprotocol/node": "2.0.0",
          "@modelcontextprotocol/server": "2.0.0",
          "@types/cors": "^2.8.19",
          "@types/express": "^5.0.6",
          "cors": "^2.8.6",
          "express": "^5.2.1",
          "express-rate-limit": "^8.5.2",
          "node-html-markdown": "^2.0.0",
          "node-html-parser": "^6.1.13",
          "undici": "7.29.0",
          "unpdf": "1.8.1",
          "zod": "4.2.0"
        }
      }
    },
    {
      "id": "observation:filesystem-api-8f1f2f6844d9ec3c",
      "kind": "code_indicator",
      "coverage": "inferred",
      "evidence": [
        {
          "sha256": "dcfe1eb5225e7ec23b1f4298371f89449c93fdee8c37faa1f915fc24c7e82a82",
          "artifact_path": "package/dist/tls-config.js",
          "capture_kind": "artifact_file",
          "byte_range": [
            1998,
            2007
          ]
        }
      ],
      "data": {
        "indicator": "filesystem-api",
        "description": "Source references a filesystem API."
      }
    },
    {
      "id": "observation:static-tool-inventory",
      "kind": "protocol_inventory",
      "coverage": "inferred",
      "evidence": [
        {
          "sha256": "069ab554b5b0a4f97ed8cc62500b0295bce83d2d2ea700853b2d67d02af6a8da",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "extraction": "static_source_analysis",
        "complete": false,
        "incompleteness": [
          "registration_name_not_static",
          "tools_inferred_from_definitions_only"
        ],
        "scanned_files": [
          "package/dist/browser-solver-config.js",
          "package/dist/browser-solver.js",
          "package/dist/cache.js",
          "package/dist/cli.js",
          "package/dist/diagnostic-output.js",
          "package/dist/diagnostic-sanitizer.js",
          "package/dist/env-int.js",
          "package/dist/error-handler.js",
          "package/dist/http-security.js",
          "package/dist/http-server.js",
          "package/dist/index.js",
          "package/dist/instance-info.js",
          "package/dist/logging.js",
          "package/dist/pdf-network-guard.js",
          "package/dist/pdf-reader.js",
          "package/dist/pdf-worker.js",
          "package/dist/proxy.js",
          "package/dist/resources.js",
          "package/dist/search-cache.js",
          "package/dist/search.js",
          "package/dist/searxng-instances.js",
          "package/dist/searxng-response.js",
          "package/dist/suggestions.js",
          "package/dist/tls-config.js",
          "package/dist/types.js",
          "package/dist/url-reader.js",
          "package/dist/url-security.js",
          "package/dist/version.js"
        ],
        "tools": [
          {
            "name": "searxng_instance_info",
            "discovery": "definition",
            "artifact_path": "package/dist/types.js",
            "byte_range": [
              8675,
              9842
            ],
            "description_sha256": "64116507a8e3bb9d26232f6bb9e0418776907ee06549c43031380450aef85823",
            "description_repr": "string_literal",
            "input_schema_sha256": "91ab10442738130c4924f565f62ac00fd86a743ff6e85e3fb8109f5644c4c1c1",
            "input_schema_repr": "json_literal",
            "input_schema_properties": [
              "category",
              "includeDisabled",
              "includeEngines",
              "refresh"
            ]
          },
          {
            "name": "searxng_search_suggestions",
            "discovery": "definition",
            "artifact_path": "package/dist/types.js",
            "byte_range": [
              7878,
              8639
            ],
            "description_sha256": "593f078835179ee8861f1f44c80248ac10ab213ac101c5ca774db07ba5df3e5c",
            "description_repr": "source_text",
            "input_schema_sha256": "c0fdb85a216c247caf4103fbed0601c55d01e80a9ce064efb0c568044056276e",
            "input_schema_repr": "json_literal",
            "input_schema_properties": [
              "language",
              "query"
            ]
          },
          {
            "name": "searxng_web_search",
            "discovery": "definition",
            "artifact_path": "package/dist/types.js",
            "byte_range": [
              3502,
              7844
            ],
            "description_sha256": "6832c969fe4bcd0f578d1d3fabe76fdd50170d7e453e91ab95b946a80d202b75",
            "description_repr": "source_text",
            "input_schema_sha256": "f37fa2d2532d64517350a61ffd01da6a1024f53f96a4efec94de612ba95a2c02",
            "input_schema_repr": "json_literal",
            "input_schema_properties": [
              "categories",
              "engines",
              "language",
              "min_score",
              "num_results",
              "pageno",
              "query",
              "response_format",
              "result_detail",
              "safesearch",
              "time_range"
            ]
          },
          {
            "name": "web_url_read",
            "discovery": "definition",
            "artifact_path": "package/dist/types.js",
            "byte_range": [
              10711,
              11346
            ],
            "description_sha256": "dbe1dc930078a53a0d38af8b754b392e77332cb1f67d27a9648ad2f83fd59a40",
            "description_repr": "string_literal",
            "input_schema_sha256": "51f6737e92275a887a03b92c0fead66420eb77162fd23b58bdd670e0e0aa8216",
            "input_schema_repr": "json_literal",
            "input_schema_properties": [
              "url"
            ]
          }
        ]
      }
    }
  ],
  "findings": [],
  "limitations": [
    {
      "code": "protocol_discovery_not_run",
      "summary": "M1 performs static artifact inspection only; no MCP protocol session was opened."
    },
    {
      "code": "tool_calls_not_performed",
      "summary": "No tools were invoked."
    },
    {
      "code": "semantic_analysis_not_run",
      "summary": "No semantic model analysis was run."
    },
    {
      "code": "static_tool_extraction_incomplete",
      "summary": "The declared tool surface could not be fully resolved from source (registration_name_not_static, tools_inferred_from_definitions_only). Treat the inventory as a lower bound, not a complete list."
    }
  ]
}