{
  "run_id": "coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792808400828045581",
  "date": "2026-10-24T02:30:13.976380+00:00",
  "repo": "coinpaprika/dexpaprika-mcp",
  "kind": "mcp",
  "source": "https://github.com/coinpaprika/dexpaprika-mcp",
  "commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 571.6396113510709,
  "total_s": 613.1483151912689,
  "steps": [
    "cd <guest-path> && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md 2>/dev/null | head -200",
    "cd <guest-path> && sed -n 200,400p README.md; echo ----; cat package.json; ls src test .coldpass .github/*; node -v; npm -v; cat .coldpass/* 2>/dev/null | head -50",
    "cd <guest-path> && cat .github/workflows/ci.yml; cat Dockerfile; sudo -n true && echo SUDO_OK; cat /etc/os-release | head -2; env | grep -i proxy",
    "sudo apt-get update -qq && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq nodejs npm >/tmp/apt.log 2>&1; echo rc=$?; node -v; npm -v",
    "cd <guest-path> && export NODE_USE_ENV_PROXY=1 && npm ci 2>&1 | tail -15; echo rc=${PIPESTATUS[0]}; npm run build 2>&1 | tail -5; npm run test:unit 2>&1 | tail -12",
    "cd <guest-path> && node .github/smoke.mjs 2>&1 | tail -15; echo rc=$?; grep -n \"registerTool\\|server.tool(\" src/index.js | head -30",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport { Client } from '<guest-path>';\nimport { StdioClientTransport } from '<guest-path>';\nconst [tool, args] = [process.argv[2], JSON.parse(process.argv[3] || '{}')];\nconst t = new StdioClientTransport({ command: 'node', args: ['dist/bin.js'], cwd: '<guest-path>' });\nconst c = new Client({ name: 't', version: '1' });\nawait c.connect(t);\nconst r = await c.callTool({ name: tool, arguments: args });\nconsole.log(JSON.stringify(r).slice(0, 1500));\nawait c.close();\nEOF\ncd <guest-path> && timeout 60 node <guest-path> getNetworks '{}' 2>&1 | head -c 1600; echo; echo rc=$?",
    "cd <guest-path> && grep -n \"rationale\" src/index.js | head -20; grep -n \"getNetworks\" -A12 src/index.js | head -40",
    "cd <guest-path> && timeout 90 node <guest-path> getNetworks '{\"rationale\":\"Checking supported chains for the DexPaprika MCP README probe.\"}' 2>&1 | head -c 1200; echo",
    "cd <guest-path> && grep -n \"setInterval\\|cron\\|--once\\|--now\\|webhook\\|setTimeout\" src/*.js | head; echo ---; head -40 src/test.js; echo ---; cat src/bin.js | head -30",
    "cd <guest-path> && export NODE_USE_ENV_PROXY=1; timeout 240 npm run test:mcp > <guest-path> 2>&1; echo rc_mcp=$?; tail -15 <guest-path>; timeout 240 npm run test:api > <guest-path> 2>&1; echo rc_api=$?; tail -15 <guest-path>",
    "cd <guest-path> && mkdir -p .coldpass/report_parent && rmdir .coldpass/report_parent; cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"node\",\"dist/bin.js\"],\"cwd\":\"<guest-path>\",\"tool\":\"getNetworks\",\"arguments\":{\"rationale\":\"Checking which chains are supported for the DexPaprika MCP README probe.\"},\"expected_text\":\"Arbitrum\"}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Stdio MCP server starts with no key and serves live network data\",\"source\":\"This is a stdio server: it speaks MCP over stdin and stdout and binds no port.\",\"input\":\"getNetworks with a rationale\",\"expected\":\"Returns the list of networks including Arbitrum\",\"probe_kind\":\"mcp\",\"argv\":[\"node\",\"dist/bin.js\"],\"tool\":\"getNetworks\",\"arguments\":{\"rationale\":\"Checking which chains are supported for the DexPaprika MCP README probe.\"},\"expected_text\":\"Arbitrum\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"getNetworks lists supported blockchain networks\",\"source\":\"List every supported blockchain network (36)\",\"input\":\"getNetworks with a rationale\",\"expected\":\"Network list includes Arbitrum with its slug\",\"probe_kind\":\"mcp\",\"argv\":[\"node\",\"dist/bin.js\"],\"tool\":\"getNetworks\",\"arguments\":{\"rationale\":\"Confirming Arbitrum is a supported chain for the README claim check.\"},\"expected_text\":\"Arbitrum\",\"cwd\":\"<guest-path>\"}\n]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[\n{\"kind\":\"example\",\"claim\":\"Build the server to dist/ for the documented entry point\",\"source\":\"README.md Development section\",\"input\":\"npm run build\",\"expected\":\"Build copies src into dist and exits 0\",\"argv\":[\"npm\",\"run\",\"build\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"> dexpaprika-mcp@2.9.2 build\"},\n{\"kind\":\"example\",\"claim\":\"Run the offline unit test suite\",\"source\":\".github/workflows/ci.yml Unit and wire tests step\",\"input\":\"npm run test:unit\",\"expected\":\"All 76 tests pass\",\"argv\":[\"npm\",\"run\",\"test:unit\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"# fail 0\"},\n{\"kind\":\"example\",\"claim\":\"Run the README test command\",\"source\":\"README.md Development section (npm test)\",\"reason\":\"npm test runs src/test.js, which spawns a stdio server and keeps running until Ctrl+C, so it is not a finite example; the finite equivalents npm run test:unit and npm run test:mcp were run instead.\",\"deferred\":true}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Entry points inspected (src/bin.js, src/index.js, src/test.js, package.json scripts, README). No cron, scheduler, loop, webhook, --once or --now trigger exists; the server is a stdio MCP server that handles one request per tool call, and the only timers are startup waits in test scripts.\",\"checks\":[]}\nEOF\nfor f in .coldpass/*.json; do python3 -I -m json.tool \"$f\" >/dev/null && echo \"ok $f\"; done",
    "cd <guest-path> && ls <guest-path> 2>&1; ls /inputs 2>&1; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo rc=${PIPESTATUS[0]}",
    "pgrep -af \"dist/bin.js|index.js\" || echo \"no servers running\"; cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'\n{\n  \"outcome\": \"working\",\n  \"fault_owner\": null,\n  \"operation\": \"Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key\",\n  \"operation_scope\": \"Linux Ubuntu 24.04 guest, Node 18.19.1 (from apt, in the CI matrix of 18/20/22), npm 9.2.0, no API key, live internet access to DexPaprika APIs. Checked: npm ci, npm run build, npm run test:unit (76 pass), npm run test:mcp, npm run test:api, node .github/smoke.mjs, and an MCP tools/call to getNetworks. Not checked: Node 20/22, the hosted server, the API-key tier, the OHLCV tools that need a paid plan.\",\n  \"steps\": [\n    \"sudo apt-get install -y nodejs npm (Node v18.19.1, npm 9.2.0)\",\n    \"npm ci\",\n    \"npm run build\",\n    \"npm run test:unit\",\n    \"npm run test:mcp\",\n    \"npm run test:api\",\n    \"node .github/smoke.mjs (CI MCP smoke: initialize + tools/list, 20 tools, SMOKE OK)\",\n    \"node dist/bin.js (stdio MCP server, started by the probe), then tools/call getNetworks with a rationale argument\"\n  ],\n  \"deviations\": [\n    \"The README does not state a Node version and has no Node installer; Node 18 from Ubuntu apt was installed because it is in the CI matrix. Node 20 and 22 were not tested.\",\n    \"The README's global install (npm install -g dexpaprika-mcp) was not used. The probe runs the locally built entry point with node dist/bin.js, the same command the Dockerfile uses, so the checkout is what was tested.\",\n    \"npm ci reported 3 vulnerabilities (1 moderate, 2 high) from its dependency tree. Not fixed, since that would change the pinned lockfile.\",\n    \"npm test (README Development section) was not run as an example. It spawns a stdio server and keeps running until Ctrl+C, so it is not finite. npm run test:unit and npm run test:mcp were run instead.\",\n    \"The workspace snapshot was not a git repository, so the git init/fetch/reset steps were not needed: no README command uses git metadata. The pinned commit was not re-verified against GitHub.\",\n    \"getNetworks requires a 20-500 character rationale argument. The first call without it returned a validation error, which is expected behaviour and was fixed by adding the argument.\",\n    \"Cycles: none. The server is request-driven stdio, with no scheduler, loop, webhook, --once or --now.\"\n  ],\n  \"stuck_step\": null,\n  \"main_blocker\": null,\n  \"plain_failure\": null,\n  \"suggested_fix\": \"None needed for the tested path. Optional: run npm audit and update vulnerable dependencies; test on Node 20 and 22 as CI does.\"\n}\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo report ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])\""
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key",
  "suggested_fix": null,
  "tokens_in": 335277,
  "tokens_out": 11048,
  "cost_usd": 0.01847257,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "node",
          "dist/bin.js"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "dexpaprika",
          "version": "2.9.2"
        },
        "tools": [
          "getKeyStatus",
          "getNetworks",
          "getCapabilities",
          "getNetworkDexes",
          "getNetworkPools",
          "getDexPools",
          "getNetworkPoolsFilter",
          "getPoolDetails",
          "getPoolOHLCV",
          "getPoolIndicator",
          "getPoolTransactions",
          "getTokenDetails",
          "getTokenPools",
          "getTokenOHLCV",
          "getTokenIndicator",
          "getTokenMultiPrices",
          "filterNetworkTokens",
          "getTopTokens",
          "search",
          "getStats"
        ],
        "tool_schema_bytes": 75999,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "[\n  {\n    \"display_name\": \"Arbitrum\",\n    \"id\": \"arbitrum\",\n    \"volume_usd_24h\": 126249401.24183105,\n    \"txns_24h\": 203592,\n    \"pools_count\": 1438\n  },\n  {\n    \"display_name\": \"Tron\",\n    \"id\": \"tron\",\n    \"volume_usd_24h\": 49719888.99982331,\n    \"txns_24h\": 7033,\n    \"pools_count\": 47\n  },\n  {\n    \"display_name\": \"Ronin\",\n    \"id\": \"ronin\",\n    \"volume_usd_24h\": 237618.47773341642,\n    \"txns_24h\": 18518,\n    \"pools_count\": 313\n  },\n  {\n    \"display_name\": \"Sei\",\n    \"id\": \"sei\",\n    \"volume_usd_24h\": 9087198.375680141,\n    \"txns_24h\": 14113,\n    \"pools_count\": 20\n  },\n  {\n    \"display_name\": \"Mantle\",\n    \"id\": \"mantle\",\n    \"volume_usd_24h\": 681807.0640215141,\n    \"txns_24h\": 2777,\n    \"pools_count\": 58\n  },\n  {\n    \"display_name\": \"MegaETH\",\n    \"id\": \"megaeth\",\n    \"volume_usd_24h\": 377524.6597805146,\n    \"txns_24h\": 5562,\n    \"pools_count\": 35\n  },\n  {\n    \"display_name\": \"Tempo\",\n    \"id\": \"tempo\",\n    \"volume_usd_24h\": 1600591.7293810986,\n    \"txns_24h\": 753,\n    \"pools_count\": 18\n  },\n  {\n    \"display_name\": \"Blast\",\n    \"id\": \"blast\",\n    \"volume_usd_24h\": 28986.75967751663,\n    \"txns_24h\": 1150,\n    \"pools_count\": 61\n  },\n  {\n    \"display_name\": \"Linea\",\n    \"id\": \"linea\",\n    \"volume_usd_24h\": 273418.098923812,\n    \"txns_24h\": 2148,\n    \"pools_count\": 114\n  },\n  {\n    \"display_name\": \"Ton\",\n    \"id\": \"ton\",\n    \"volume_usd_24h\": 346284.6808759008,\n    \"txns_24h\": 5236,\n    \"pools_count\": 269\n  },\n  {\n    \"display_name\": \"BOB Network\",\n    \"id\": \"bob_network\",\n    \"volume_usd_24h\": 169.39277890765257,\n    \"txns_24h\": 16,\n    \"pools_count\": 6\n  },\n  {\n    \"display_name\": \"Flow EVM\",\n    \"id\": \"flow_evm\",\n    \"volume_usd_24h\": 222518.54111703017,\n    \"txns_24h\": 3009,\n    \"pools_count\": 42\n  },\n  {\n    \"display_name\": \"Avalanche\",\n    \"id\": \"avalanche\",\n    \"volume_usd_24h\": 50717677.989751786,\n    \"txns_24h\": 66306,\n    \"pools_count\": 738\n  },\n  {\n    \"display_name\": \"Aptos\",\n    \"id\": \"aptos\",\n    \"volume_usd_24h\": 584114.8981658677,\n    \"txns_24h\": 39592,\n    \"pools_count\": 238\n  },\n  {\n    \"display_name\": \"Unichain\",\n    \"id\": \"unichain\",\n    \"volume_usd_24h\": 6697954.338668845,\n    \"txns_24h\": 30942,\n    \"pools_count\": 158\n  },\n  {\n    \"display_name\": \"Sui\",\n    \"id\": \"sui\",\n    \"volume_usd_24h\": 13687304.150215652,\n    \"txns_24h\": 284973,\n    \"pools_count\": 858\n  },\n  {\n    \"display_name\": \"ZkSync\",\n    \"id\": \"zksync\",\n    \"volume_usd_24h\": 109893.11646172438,\n    \"txns_24h\": 980,\n    \"pools_count\": 81\n  },\n  {\n    \"display_name\": \"HyperEVM\",\n    \"id\": \"hyperevm\",\n    \"volume_usd_24h\": 57011584.51734452,\n    \"txns_24h\": 86909,\n    \"pools_count\": 464\n  },\n  {\n    \"display_name\": \"Plasma\",\n    \"id\": \"plasma\",\n    \"volume_usd_24h\": 4037898.107026789,\n    \"txns_24h\": 31937,\n    \"pools_count\": 39\n  },\n  {\n    \"display_name\": \"Monad\",\n    \"id\": \"monad\",\n    \"volume_usd_24h\": 20028491.573270075,\n    \"txns_24h\": 81205,\n    \"pools_count\": 292\n  },\n  {\n    \"display_name\": \"Ethereum\",\n    \"id\": \"ethereum\",\n    \"volume_usd_24h\": 1386042466.847537,\n    \"txns_24h\": 319101,\n    \"pools_count\": 9930\n  },\n  {\n    \"display_name\": \"Base\",\n    \"id\": \"base\",\n    \"volume_usd_24h\": 619767709.5205319,\n    \"txns_24h\": 2153500,\n    \"pools_count\": 14970\n  },\n  {\n    \"display_name\": \"Polygon\",\n    \"id\": \"polygon\",\n    \"volume_usd_24h\": 32573227.40428371,\n    \"txns_24h\": 358845,\n    \"pools_count\": 3885\n  },\n  {\n    \"display_name\": \"Fantom\",\n    \"id\": \"fantom\",\n    \"volume_usd_24h\": 1.787321,\n    \"txns_24h\": 238,\n    \"pools_count\": 57\n  },\n  {\n    \"display_name\": \"Sonic\",\n    \"id\": \"sonic\",\n    \"volume_usd_24h\": 1158699.8142216087,\n    \"txns_24h\": 27173,\n    \"pools_count\": 421\n  },\n  {\n    \"display_name\": \"Arc\",\n    \"id\": \"arc\",\n    \"volume_usd_24h\": 42120517.73819203,\n    \"txns_24h\": 72961,\n    \"pools_count\": 1066\n  },\n  {\n    \"display_name\": \"Celo\",\n    \"id\": \"celo\",\n    \"volume_usd_24h\": 998508.5802031121,\n    \"txns_24h\": 24004,\n    \"pools_count\": 98\n  },\n  {\n    \"display_name\": \"Solana\",\n    \"id\": \"solana\",\n    \"volume_usd_24h\": 1902311033.8652787,\n    \"txns_24h\": 22354665,\n    \"pools_count\": 98902\n  },\n  {\n    \"display_name\": \"Scroll\",\n    \"id\": \"scroll\",\n    \"volume_usd_24h\": 216419.6254081839,\n    \"txns_24h\": 3289,\n    \"pools_count\": 24\n  },\n  {\n    \"display_name\": \"Berachain\",\n    \"id\": \"berachain\",\n    \"volume_usd_24h\": 717030.0907030957,\n    \"txns_24h\": 11541,\n    \"pools_count\": 160\n  },\n  {\n    \"display_name\": \"Binance Smart Chain\",\n    \"id\": \"bsc\",\n    \"volume_usd_24h\": 1231615663.7648265,\n    \"txns_24h\": 4584307,\n    \"pools_count\": 27068\n  },\n  {\n    \"display_name\": \"Optimism\",\n    \"id\": \"optimism\",\n    \"volume_usd_24h\": 4959366.819475726,\n    \"txns_24h\": 160449,\n    \"pools_count\": 992\n  },\n  {\n    \"display_name\": \"Cronos\",\n    \"id\": \"cronos\",\n    \"volume_usd_24h\": 1513849.3624929688,\n    \"txns_24h\": 26450,\n    \"pools_count\": 750\n  },\n  {\n    \"display_name\": \"x Layer\",\n    \"id\": \"x_layer\",\n    \"volume_usd_24h\": 26117470.31093886,\n    \"txns_24h\": 160354,\n    \"pools_count\": 202\n  },\n  {\n    \"display_name\": \"Robinhood Chain\",\n    \"id\": \"robinhood\",\n    \"volume_usd_24h\": 542185378.6357187,\n    \"txns_24h\": 1537655,\n    \"pools_count\": 12359\n  },\n  {\n    \"display_name\": \"Katana\",\n    \"id\": \"katana\",\n    \"volume_usd_24h\": 242095.84557557217,\n    \"txns_24h\": 3279,\n    \"pools_count\": 28\n  }\n]"
            }
          ],
          "structuredContent": {
            "networks": [
              {
                "display_name": "Arbitrum",
                "id": "arbitrum",
                "volume_usd_24h": 126249401.24183105,
                "txns_24h": 203592,
                "pools_count": 1438
              },
              {
                "display_name": "Tron",
                "id": "tron",
                "volume_usd_24h": 49719888.99982331,
                "txns_24h": 7033,
                "pools_count": 47
              },
              {
                "display_name": "Ronin",
                "id": "ronin",
                "volume_usd_24h": 237618.47773341642,
                "txns_24h": 18518,
                "pools_count": 313
              },
              {
                "display_name": "Sei",
                "id": "sei",
                "volume_usd_24h": 9087198.375680141,
                "txns_24h": 14113,
                "pools_count": 20
              },
              {
                "display_name": "Mantle",
                "id": "mantle",
                "volume_usd_24h": 681807.0640215141,
                "txns_24h": 2777,
                "pools_count": 58
              },
              {
                "display_name": "MegaETH",
                "id": "megaeth",
                "volume_usd_24h": 377524.6597805146,
                "txns_24h": 5562,
                "pools_count": 35
              },
              {
                "display_name": "Tempo",
                "id": "tempo",
                "volume_usd_24h": 1600591.7293810986,
                "txns_24h": 753,
                "pools_count": 18
              },
              {
                "display_name": "Blast",
                "id": "blast",
                "volume_usd_24h": 28986.75967751663,
                "txns_24h": 1150,
                "pools_count": 61
              },
              {
                "display_name": "Linea",
                "id": "linea",
                "volume_usd_24h": 273418.098923812,
                "txns_24h": 2148,
                "pools_count": 114
              },
              {
                "display_name": "Ton",
                "id": "ton",
                "volume_usd_24h": 346284.6808759008,
                "txns_24h": 5236,
                "pools_count": 269
              },
              {
                "display_name": "BOB Network",
                "id": "bob_network",
                "volume_usd_24h": 169.39277890765257,
                "txns_24h": 16,
                "pools_count": 6
              },
              {
                "display_name": "Flow EVM",
                "id": "flow_evm",
                "volume_usd_24h": 222518.54111703017,
                "txns_24h": 3009,
                "pools_count": 42
              },
              {
                "display_name": "Avalanche",
                "id": "avalanche",
                "volume_usd_24h": 50717677.989751786,
                "txns_24h": 66306,
                "pools_count": 738
              },
              {
                "display_name": "Aptos",
                "id": "aptos",
                "volume_usd_24h": 584114.8981658677,
                "txns_24h": 39592,
                "pools_count": 238
              },
              {
                "display_name": "Unichain",
                "id": "unichain",
                "volume_usd_24h": 6697954.338668845,
                "txns_24h": 30942,
                "pools_count": 158
              },
              {
                "display_name": "Sui",
                "id": "sui",
                "volume_usd_24h": 13687304.150215652,
                "txns_24h": 284973,
                "pools_count": 858
              },
              {
                "display_name": "ZkSync",
                "id": "zksync",
                "volume_usd_24h": 109893.11646172438,
                "txns_24h": 980,
                "pools_count": 81
              },
              {
                "display_name": "HyperEVM",
                "id": "hyperevm",
                "volume_usd_24h": 57011584.51734452,
                "txns_24h": 86909,
                "pools_count": 464
              },
              {
                "display_name": "Plasma",
                "id": "plasma",
                "volume_usd_24h": 4037898.107026789,
                "txns_24h": 31937,
                "pools_count": 39
              },
              {
                "display_name": "Monad",
                "id": "monad",
                "volume_usd_24h": 20028491.573270075,
                "txns_24h": 81205,
                "pools_count": 292
              },
              {
                "display_name": "Ethereum",
                "id": "ethereum",
                "volume_usd_24h": 1386042466.847537,
                "txns_24h": 319101,
                "pools_count": 9930
              },
              {
                "display_name": "Base",
                "id": "base",
                "volume_usd_24h": 619767709.5205319,
                "txns_24h": 2153500,
                "pools_count": 14970
              },
              {
                "display_name": "Polygon",
                "id": "polygon",
                "volume_usd_24h": 32573227.40428371,
                "txns_24h": 358845,
                "pools_count": 3885
              },
              {
                "display_name": "Fantom",
                "id": "fantom",
                "volume_usd_24h": 1.787321,
                "txns_24h": 238,
                "pools_count": 57
              },
              {
                "display_name": "Sonic",
                "id": "sonic",
                "volume_usd_24h": 1158699.8142216087,
                "txns_24h": 27173,
                "pools_count": 421
              },
              {
                "display_name": "Arc",
                "id": "arc",
                "volume_usd_24h": 42120517.73819203,
                "txns_24h": 72961,
                "pools_count": 1066
              },
              {
                "display_name": "Celo",
                "id": "celo",
                "volume_usd_24h": 998508.5802031121,
                "txns_24h": 24004,
                "pools_count": 98
              },
              {
                "display_name": "Solana",
                "id": "solana",
                "volume_usd_24h": 1902311033.8652787,
                "txns_24h": 22354665,
                "pools_count": 98902
              },
              {
                "display_name": "Scroll",
                "id": "scroll",
                "volume_usd_24h": 216419.6254081839,
                "txns_24h": 3289,
                "pools_count": 24
              },
              {
                "display_name": "Berachain",
                "id": "berachain",
                "volume_usd_24h": 717030.0907030957,
                "txns_24h": 11541,
                "pools_count": 160
              },
              {
                "display_name": "Binance Smart Chain",
                "id": "bsc",
                "volume_usd_24h": 1231615663.7648265,
                "txns_24h": 4584307,
                "pools_count": 27068
              },
              {
                "display_name": "Optimism",
                "id": "optimism",
                "volume_usd_24h": 4959366.819475726,
                "txns_24h": 160449,
                "pools_count": 992
              },
              {
                "display_name": "Cronos",
                "id": "cronos",
                "volume_usd_24h": 1513849.3624929688,
                "txns_24h": 26450,
                "pools_count": 750
              },
              {
                "display_name": "x Layer",
                "id": "x_layer",
                "volume_usd_24h": 26117470.31093886,
                "txns_24h": 160354,
                "pools_count": 202
              },
              {
                "display_name": "Robinhood Chain",
                "id": "robinhood",
                "volume_usd_24h": 542185378.6357187,
                "txns_24h": 1537655,
                "pools_count": 12359
              },
              {
                "display_name": "Katana",
                "id": "katana",
                "volume_usd_24h": 242095.84557557217,
                "txns_24h": 3279,
                "pools_count": 28
              }
            ]
          }
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 3 hardcoded secret, 7 known vulnerability. 1 static matches retained as context.",
    "expected": "Reviewed as expected for a test run: resolver address lookups that send no data.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 1,
        "path": "104.26.10.63:443",
        "process_count": 11
      },
      {
        "kind": "hardcoded-secret",
        "count": 3,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 1,
        "path": "README.md"
      },
      {
        "kind": "known-vulnerability",
        "count": 7,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 3
      }
    ],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 1,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 1,
        "path": "src/test_methods.js"
      }
    ],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792808400828045581",
    "evidence_file": "/data/safety/coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792808400828045581.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 14,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf",
    "url": "https://github.com/coinpaprika/dexpaprika-mcp"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": "coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792806338446049523",
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 14,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/coinpaprika/dexpaprika-mcp",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "Entry points inspected (src/bin.js, src/index.js, src/test.js, package.json scripts, README). No cron, scheduler, loop, webhook, --once or --now trigger exists; the server is a stdio MCP server that handles one request per tool call, and the only timers are startup waits in test scripts.",
      "evidence": "Entry points inspected (src/bin.js, src/index.js, src/test.js, package.json scripts, README). No cron, scheduler, loop, webhook, --once or --now trigger exists; the server is a stdio MCP server that handles one request per tool call, and the only timers are startup waits in test scripts.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Stdio MCP server starts with no key and serves live network data",
      "source": "This is a stdio server: it speaks MCP over stdin and stdout and binds no port.",
      "input": "{\"tool\": \"getNetworks\", \"arguments\": {\"rationale\": \"Checking which chains are supported for the DexPaprika MCP README probe.\"}}",
      "expected": "Returns the list of networks including Arbitrum",
      "command": "node dist/bin.js tools/call {\"tool\": \"getNetworks\", \"arguments\": {\"rationale\": \"Checking which chains are supported for the DexPaprika MCP README probe.\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Arbitrum",
      "evidence": "Arbitrum\\\",\\n    \\\"id\\\": \\\"arbitrum\\\",\\n    \\\"volume_usd_24h\\\": 126249401.24183105,\\n    \\\"txns_24h\\\": 203592,\\n    \\\"pools_count\\\": 1438\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Tron\\\",\\n    \\\"id\\\": \\\"tron\\\",\\n    \\\"volume_usd_24h\\\": 49719888.99982331,\\n    \\\"txns_24h\\\": 7033,\\n    \\\"pools_count\\\": 47\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Ronin\\\",\\n    \\\"id\\\": \\\"ronin\\\",\\n    \\\"volume_usd_24h\\\": 237618.47773341642,\\n    \\\"txns_24h\\\": 18518,\\n    \\\"pools_count\\\": 313\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Sei\\\",\\n    \\\"id\\\": \\\"sei\\\",\\n    \\\"volume_usd_24h\\\": 9087198.375680141,\\n    \\\"txns_24h\\\": 14113,\\",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "getNetworks lists supported blockchain networks",
      "source": "List every supported blockchain network (36)",
      "input": "{\"tool\": \"getNetworks\", \"arguments\": {\"rationale\": \"Confirming Arbitrum is a supported chain for the README claim check.\"}}",
      "expected": "Network list includes Arbitrum with its slug",
      "command": "node dist/bin.js tools/call {\"tool\": \"getNetworks\", \"arguments\": {\"rationale\": \"Confirming Arbitrum is a supported chain for the README claim check.\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Arbitrum",
      "evidence": "Arbitrum\\\",\\n    \\\"id\\\": \\\"arbitrum\\\",\\n    \\\"volume_usd_24h\\\": 126249401.24183105,\\n    \\\"txns_24h\\\": 203592,\\n    \\\"pools_count\\\": 1438\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Tron\\\",\\n    \\\"id\\\": \\\"tron\\\",\\n    \\\"volume_usd_24h\\\": 49719888.99982331,\\n    \\\"txns_24h\\\": 7033,\\n    \\\"pools_count\\\": 47\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Ronin\\\",\\n    \\\"id\\\": \\\"ronin\\\",\\n    \\\"volume_usd_24h\\\": 237618.47773341642,\\n    \\\"txns_24h\\\": 18518,\\n    \\\"pools_count\\\": 313\\n  },\\n  {\\n    \\\"display_name\\\": \\\"Sei\\\",\\n    \\\"id\\\": \\\"sei\\\",\\n    \\\"volume_usd_24h\\\": 9087198.375680141,\\n    \\\"txns_24h\\\": 14113,\\",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Build the server to dist/ for the documented entry point",
      "source": "README.md Development section",
      "input": "npm run build",
      "command": "npm run build",
      "evidence": "> dexpaprika-mcp@2.9.2 build\n> mkdir -p dist && cp -r src/* dist/ && chmod +x dist/bin.js",
      "deferred": false,
      "expected": "Build copies src into dist and exits 0",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Run the offline unit test suite",
      "source": ".github/workflows/ci.yml Unit and wire tests step",
      "input": "npm run test:unit",
      "command": "npm run test:unit",
      "evidence": "e bounds\nok 74 - getNetworkPoolsFilter sends the 48h price-change bounds\n  ---\n  duration_ms: 531.531444\n  ...\n# Subtest: a redirect off the allowed paths or to another host is not followed with the key\nok 75 - a redirect off the allowed paths or to another host is not followed with the key\n  ---\n  duration_ms: 1707.983945\n  ...\n# Subtest: a same-host redirect to an allowed path is followed\nok 76 - a same-host redirect to an allowed path is followed\n  ---\n  duration_ms: 613.793091\n  ...\n1..76\n# tests 76\n# suites 0\n# pass 76\n# fail 0\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 16704.526022",
      "deferred": false,
      "expected": "All 76 tests pass",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Run the README test command",
      "source": "README.md Development section (npm test)",
      "input": "",
      "command": "",
      "evidence": "npm test runs src/test.js, which spawns a stdio server and keeps running until Ctrl+C, so it is not a finite example; the finite equivalents npm run test:unit and npm run test:mcp were run instead.",
      "deferred": true,
      "expected": "documented command completes successfully",
      "verdict": "deferred",
      "outcome": "npm test runs src/test.js, which spawns a stdio server and keeps running until Ctrl+C, so it is not a finite example; the finite equivalents npm run test:unit and npm run test:mcp were run instead."
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 36,
    "last_commit_at": "2026-10-21T14:55:45Z",
    "last_release_at": "2026-10-21T19:58:40Z",
    "median_reply_hours": 8522.3,
    "merged_prs_90d": 30,
    "note": "actively maintained: last commit 2 days ago; 36 commits and 30 merged PRs in 90 days; 1 open issues, 3 open PRs; 1 of 3 recent threads got a maintainer reply, median first reply 8522.3h; latest release 2026-10-21",
    "open_issues": 1,
    "open_prs": 3,
    "reply_share": 0.33,
    "reply_threads": 3,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 2 days ago; 36 commits and 30 merged PRs in 90 days; 1 open issues, 3 open PRs; 1 of 3 recent threads got a maintainer reply, median first reply 8522.3h; latest release 2026-10-21",
  "maintained": "active",
  "maintained_note": "last commit 2 days ago; 1 open issues, 0 answered or closed",
  "last_commit_at": "2026-10-21T19:58:31Z",
  "last_release_at": "2026-10-21T19:58:40Z",
  "open_issues": 1,
  "answered_issues": 0,
  "platforms_claimed": [
    "linux"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": {
    "tool_count": 20,
    "schema_bytes": 75999,
    "tokens_approx": 19000,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-24T02:30:13.976380+00:00",
  "tested_commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "coinpaprika/dexpaprika-mcp",
    "source": "https://github.com/coinpaprika/dexpaprika-mcp",
    "commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf",
      "url": "https://github.com/coinpaprika/dexpaprika-mcp"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792808400828045581.json"
}
