{
  "format_version": "0.2.0",
  "report_id": "95662a47-93e5-47a6-aeef-feeef33aae8e",
  "generated_at": "2026-08-09T18:17:52.841Z",
  "subject": {
    "server_name": "io.github.ihor-sokoliuk/mcp-searxng",
    "artifact": {
      "ecosystem": "npm",
      "package": "mcp-searxng",
      "version": "1.14.1",
      "sha256": "8b2fd103905061376e23c5c566cfa83e2e92a7fa1226ec829051bea3eca36d87",
      "download_url": "https://registry.npmjs.org/mcp-searxng/-/mcp-searxng-1.14.1.tgz",
      "registry_metadata_url": "https://registry.npmjs.org/mcp-searxng/1.14.1",
      "acquired_at": "2026-08-09T18:17:52.841Z",
      "registry_metadata_sha256": "d6d5873ef21a8ebe5422f77f20b4e70b714717d96c289144feeb322dc6cd85a4",
      "integrity_claim": "sha512-lSwdmdoUz3i+hJ0ZQecOSMAI2bA46vYHkpvkKdV5n4P1uA62n2NINKfYmAkO3T8hEcM9Ux3G0kQjmS2ekn3Zcg==",
      "integrity_verified": true
    }
  },
  "analysis": {
    "engine": {
      "name": "sentinel",
      "version": "0.2.0",
      "build_sha256": "035867556006016143616283693ccfb76acfbfbca4b02bca71d729b7b1fbe2cf"
    },
    "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": "4022b8117d0c0c11a2c60db8ab4fff5121ae38a126583f83c064866339eb83fe",
          "artifact_path": "package/package.json",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "name": "mcp-searxng",
        "version": "1.14.1",
        "mcpName": "io.github.ihor-sokoliuk/mcp-searxng",
        "description": "MCP server for SearXNG integration",
        "main": "dist/index.js",
        "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": ">=20"
        }
      }
    },
    {
      "id": "observation:file-inventory",
      "kind": "file",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "8b2fd103905061376e23c5c566cfa83e2e92a7fa1226ec829051bea3eca36d87",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "entry_count": 57,
        "regular_file_bytes": 262247,
        "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": 2373,
            "sha256": "06c7045b2e0a17e0613d852ca34247c1a2527048cc13004ff65d5cba0d2429e5"
          },
          {
            "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": 393,
            "sha256": "68cd04df76ce4ab5d29024d6aea48b615e902b3bed1d9c4acf86a9d73d2e622e"
          },
          {
            "path": "package/dist/env-int.js",
            "type": "file",
            "size": 789,
            "sha256": "8adbb1a3dd4032ff3787431718fba12e75aa62e5315c4791eeb5b63aba796d3f"
          },
          {
            "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": 3296,
            "sha256": "abdbab90c977902fffdd92cd21469c443bc1b456624ede743ad7da3acb870692"
          },
          {
            "path": "package/dist/http-server.d.ts",
            "type": "file",
            "size": 1508,
            "sha256": "3d3a4ba21cb11de1a36909fb34703f68f6ff64aea47b53cbe63fdad069161a89"
          },
          {
            "path": "package/dist/http-server.js",
            "type": "file",
            "size": 22473,
            "sha256": "52ceb7ff3b631a8e9ddb5bebe3c5cba7bc0b5569d256f4e85bac3746e5e06c79"
          },
          {
            "path": "package/dist/index.d.ts",
            "type": "file",
            "size": 521,
            "sha256": "510b5d4db8b2a72e760358cba6b807ee49d1a7657648b134f4df2266893a9783"
          },
          {
            "path": "package/dist/index.js",
            "type": "file",
            "size": 14029,
            "sha256": "3dc4c2548d1c009ad050bcf9621debdb295a9dd938af9a6b8ce7a49ad7a62149"
          },
          {
            "path": "package/dist/instance-info.d.ts",
            "type": "file",
            "size": 531,
            "sha256": "2a7cc604a32218e6f36c86c35e1e14b71a963901db20914ed3ff5bbdc78daf55"
          },
          {
            "path": "package/dist/instance-info.js",
            "type": "file",
            "size": 10954,
            "sha256": "cf5213dd0871606e5a252731282f95160d98f1548ef4e177141422a06de2ed73"
          },
          {
            "path": "package/dist/logging.d.ts",
            "type": "file",
            "size": 562,
            "sha256": "58e9e8185dc6da766bc8886259a48cdecc467d54bc36c4b55735cb143196fb0f"
          },
          {
            "path": "package/dist/logging.js",
            "type": "file",
            "size": 1757,
            "sha256": "a55a2fabad51ed1d1b8d801b2723138b9a22a92abd6bbcfbf46d79418dd81178"
          },
          {
            "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": 387,
            "sha256": "afa35903077122a857818c0a105d99785b32ef7ad37989964d8de6855c4e8efe"
          },
          {
            "path": "package/dist/pdf-worker.js",
            "type": "file",
            "size": 4863,
            "sha256": "eca044121df92fe57b9712931d5e79342020761cb1227d3188e2aa86987444ca"
          },
          {
            "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": 524,
            "sha256": "b62a513db3a5b312cb0ee01f480a390bfe5474c64e908700431650b8496f5614"
          },
          {
            "path": "package/dist/resources.js",
            "type": "file",
            "size": 10268,
            "sha256": "2907e99a2914b84e0b87f375bfef15d7429789f7e6669952d8f83f7b11eea87c"
          },
          {
            "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": 589,
            "sha256": "a39086137ce015e6cf57a5cd37784907345a31f809d2c895a39c35f018b5b5a8"
          },
          {
            "path": "package/dist/search.js",
            "type": "file",
            "size": 26618,
            "sha256": "19a7a3ec25da7fd586a2834bcccc780eda49c1fd1678eceeb265ea1d577838e6"
          },
          {
            "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/suggestions.d.ts",
            "type": "file",
            "size": 194,
            "sha256": "c05fd38b2867375db5ebb77193bc87e23d974439d45c53d31d679b0e6128c23f"
          },
          {
            "path": "package/dist/suggestions.js",
            "type": "file",
            "size": 1250,
            "sha256": "a81f7c667a07cb3f0cd64418d6669cada6b62e16938b59169d3b3879437fb5d4"
          },
          {
            "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": 1811,
            "sha256": "37d32acf4cda03f76681a2a96724d009286e319fcdc6c223c9f478a2f936edc2"
          },
          {
            "path": "package/dist/types.js",
            "type": "file",
            "size": 13331,
            "sha256": "ec6c4a6660c0cd539276b14e36fc39f008311e09908f64250ad7c03992954e81"
          },
          {
            "path": "package/dist/url-reader.d.ts",
            "type": "file",
            "size": 709,
            "sha256": "2d79d9aa133afb8cfaa42ca08226d98371e9ac7c0417eb871424a11517c3498e"
          },
          {
            "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": 48,
            "sha256": "d119fcf4b91e7a8e8c66538966d6330fd7ebda402c8c7ca6032c65e43af31a8b"
          },
          {
            "path": "package/dist/version.js",
            "type": "file",
            "size": 40,
            "sha256": "13ded24a5c2385a8e0ddb930fff055f08e7b1a862e4c4d0aa2ee188f9d80a1e3"
          },
          {
            "path": "package/LICENSE",
            "type": "file",
            "size": 1059,
            "sha256": "d5d54589b2be70312c163de0716cc3da4109bf3ed05c1e4d4d5b633025312e5f"
          },
          {
            "path": "package/package.json",
            "type": "file",
            "size": 2886,
            "sha256": "4022b8117d0c0c11a2c60db8ab4fff5121ae38a126583f83c064866339eb83fe"
          },
          {
            "path": "package/README.md",
            "type": "file",
            "size": 23097,
            "sha256": "9da10d275cefc941ec51b4942955db8fa13c553b19cfaf0847d1382e889a6c5a"
          }
        ]
      }
    },
    {
      "id": "observation:registry-metadata",
      "kind": "artifact_metadata",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "d6d5873ef21a8ebe5422f77f20b4e70b714717d96c289144feeb322dc6cd85a4",
          "capture_kind": "registry_metadata"
        }
      ],
      "data": {
        "metadata_url": "https://registry.npmjs.org/mcp-searxng/1.14.1",
        "requested_package": "mcp-searxng",
        "requested_version": "1.14.1",
        "tarball_url": "https://registry.npmjs.org/mcp-searxng/-/mcp-searxng-1.14.1.tgz",
        "integrity_claim": "sha512-lSwdmdoUz3i+hJ0ZQecOSMAI2bA46vYHkpvkKdV5n4P1uA62n2NINKfYmAkO3T8hEcM9Ux3G0kQjmS2ekn3Zcg==",
        "integrity_verified": true
      }
    },
    {
      "id": "observation:runtime-dependencies",
      "kind": "dependency",
      "coverage": "declared",
      "evidence": [
        {
          "sha256": "4022b8117d0c0c11a2c60db8ab4fff5121ae38a126583f83c064866339eb83fe",
          "artifact_path": "package/package.json",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "dependencies": {
          "@modelcontextprotocol/sdk": "1.30.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.7.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": "8b2fd103905061376e23c5c566cfa83e2e92a7fa1226ec829051bea3eca36d87",
          "capture_kind": "artifact_file"
        }
      ],
      "data": {
        "extraction": "static_source_analysis",
        "complete": false,
        "incompleteness": [
          "list_tools_entry_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/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": [
              8075,
              9242
            ],
            "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": [
              7278,
              8039
            ],
            "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": [
              3256,
              7244
            ],
            "description_sha256": "6832c969fe4bcd0f578d1d3fabe76fdd50170d7e453e91ab95b946a80d202b75",
            "description_repr": "source_text",
            "input_schema_sha256": "066ee5cf0a2951e8f2e89a1b689640081809d99a3bd983ad69e313162888b509",
            "input_schema_repr": "json_literal",
            "input_schema_properties": [
              "categories",
              "engines",
              "language",
              "min_score",
              "num_results",
              "pageno",
              "query",
              "response_format",
              "safesearch",
              "time_range"
            ]
          },
          {
            "name": "web_url_read",
            "discovery": "definition",
            "artifact_path": "package/dist/types.js",
            "byte_range": [
              10111,
              10746
            ],
            "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 (list_tools_entry_not_static, tools_inferred_from_definitions_only). Treat the inventory as a lower bound, not a complete list."
    }
  ]
}