coinpaprika/dexpaprika-mcp

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/coinpaprika--dexpaprika-mcp.svg).

mcp-server

Works

README claims checked out on 2 recorded setups. Combinations not listed here were not tested.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 23, 2026 · 80ed05c69500 · claude-code / 2.1.300 (Claude Code)
Recorded operation: node dist/bin.js · local stdio MCP start + initialize + tools/list

Linux / Luna: yes · Oct 23, 2026 · 80ed05c69500 · codex / codex-cli 0.163.0
Recorded operation: node dist/bin.js · local stdio MCP start + initialize + tools/list

Does what it says
2 of 2 claims checked out
  • Stdio MCP server starts with no key and serves live network data: Real input produced the expected result: Arbitrum

    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."}}

    Observed: 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,\

  • getNetworks lists supported blockchain networks: Real input produced the expected result: Arbitrum

    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."}}

    Observed: 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,\

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
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

Last commit Oct 21, 2026

Setup time
9 min 32 s
9 min 32 s to a working result
Issue
none found in recorded check
Examples
2 of 2 ran as expected, 1 not tested
  • Build the server to dist/ for the documented entry point: command completed successfully

    Source: README.md Development section

    Input: npm run build

    Expected: Build copies src into dist and exits 0

    Command: npm run build

    Observed: > [email protected] build > mkdir -p dist && cp -r src/* dist/ && chmod +x dist/bin.js

  • Run the offline unit test suite: command completed successfully

    Source: .github/workflows/ci.yml Unit and wire tests step

    Input: npm run test:unit

    Expected: All 76 tests pass

    Command: npm run test:unit

    Observed: e bounds ok 74 - getNetworkPoolsFilter sends the 48h price-change bounds --- duration_ms: 531.531444 ... # Subtest: a redirect off the allowed paths or to another host is not followed with the key ok 75 - a redirect off the allowed paths or to another host is not followed with the key --- duration_ms: 1707.983945 ... # Subtest: a same-host redirect to an allowed path is followed ok 76 - a same-host redirect to an allowed path is followed --- duration_ms: 613.793091 ... 1..76 # tests 76 # suites 0 # pass 76 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 16704.526022

  • Run the README test command: 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.

    Source: README.md Development section (npm test)

    Expected: documented command completes successfully

    Observed: 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.

Evidence
README behavior checked
Agent interfaces
MCP
MCP

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
20 tools · about 19,000 tokens
20 tools · about 19,000 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 23, 2026 on 80ed05c69500

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.300 (Claude Code) · Checked operation passed · Oct 23, 2026 on 80ed05c69500

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
Made outbound HTTPS connections: yes (hosts not recorded) by <guest-path>, <guest-path>

Review signals across current setups: connection review. 20 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict. 2 static matches retained as context.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 104.26.10.63:443 2 findings. 16 attributed processes.

Gitleaks found a possible hardcoded secret; value withheld. README.md 3 findings.

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 7 findings.

Reviewed as expected for a test run: resolver address lookups that send no data.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation node dist/bin.js · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key

MCP server returned: dexpaprika · version 2.9.2.

MCP tools returned: getKeyStatus, getNetworks, getCapabilities, getNetworkDexes, getNetworkPools, getDexPools, getNetworkPoolsFilter, getPoolDetails, getPoolOHLCV, getPoolIndicator, getPoolTransactions, getTokenDetails, getTokenPools, getTokenOHLCV, getTokenIndicator, getTokenMultiPrices, filterNetworkTokens, getTopTokens, search, getStats. Tool listing does not establish authenticated tool-call success.

Run details
run
coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792808400828045581
date
Oct 23, 2026
time to working
571.6s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.018473
Recorded source
https://github.com/coinpaprika/dexpaprika-mcp
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf", "url": "https://github.com/coinpaprika/dexpaprika-mcp"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
80ed05c695002ceb137c9c4fa56e1fd435fdf9bf
Whose fault: not assigned · resolved

Double-checks failed run: coinpaprika--dexpaprika-mcp-claude-haiku-5-5-1792806338446049523.

Safety: Review signals: 1 connection review, 3 hardcoded secret, 7 known vulnerability. 1 static matches retained as context.

Review signals: 1 connection review, 3 hardcoded secret, 7 known vulnerability. 1 static matches retained as context.

Reviewed as expected for a test run: resolver address lookups that send no data.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 104.26.10.63:443 11 attributed processes.

Gitleaks found a possible hardcoded secret; value withheld. README.md 3 findings.

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 7 findings.

1 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

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.

Full safety evidence →

Answers recorded for this run
  • Stdio MCP server starts with no key and serves live network data: Real input produced the expected result: Arbitrum

    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."}}

    Observed: 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,\

  • getNetworks lists supported blockchain networks: Real input produced the expected result: Arbitrum

    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."}}

    Observed: 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,\

Examples

  • Build the server to dist/ for the documented entry point: command completed successfully

    Source: README.md Development section

    Input: npm run build

    Expected: Build copies src into dist and exits 0

    Command: npm run build

    Observed: > [email protected] build > mkdir -p dist && cp -r src/* dist/ && chmod +x dist/bin.js

  • Run the offline unit test suite: command completed successfully

    Source: .github/workflows/ci.yml Unit and wire tests step

    Input: npm run test:unit

    Expected: All 76 tests pass

    Command: npm run test:unit

    Observed: e bounds ok 74 - getNetworkPoolsFilter sends the 48h price-change bounds --- duration_ms: 531.531444 ... # Subtest: a redirect off the allowed paths or to another host is not followed with the key ok 75 - a redirect off the allowed paths or to another host is not followed with the key --- duration_ms: 1707.983945 ... # Subtest: a same-host redirect to an allowed path is followed ok 76 - a same-host redirect to an allowed path is followed --- duration_ms: 613.793091 ... 1..76 # tests 76 # suites 0 # pass 76 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 16704.526022

  • Run the README test command: 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.

    Source: README.md Development section (npm test)

    Expected: documented command completes successfully

    Observed: 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.

Local or hosted: local

What the agent did

Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key

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'
import { Client } from '<guest-path>';
import { StdioClientTransport } from '<guest-path>';
const [tool, args] = [process.argv[2], JSON.parse(process.argv[3] || '{}')];
const t = new StdioClientTransport({ command: 'node', args: ['dist/bin.js'], cwd: '<guest-path>' });
const c = new Client({ name: 't', version: '1' });
await c.connect(t);
const r = await c.callTool({ name: tool, arguments: args });
console.log(JSON.stringify(r).slice(0, 1500));
await c.close();
EOF
cd <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'
{"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"}
EOF
cat > .coldpass/claims.json <<'EOF'
[
{"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>"},
{"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>"}
]
EOF
cat > .coldpass/examples.json <<'EOF'
[
{"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":"> [email protected] build"},
{"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"},
{"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}
]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"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":[]}
EOF
for 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'
{
  "outcome": "working",
  "fault_owner": null,
  "operation": "Run the DexPaprika stdio MCP server and call the getNetworks tool, which returns live DEX network data without an API key",
  "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.",
  "steps": [
    "sudo apt-get install -y nodejs npm (Node v18.19.1, npm 9.2.0)",
    "npm ci",
    "npm run build",
    "npm run test:unit",
    "npm run test:mcp",
    "npm run test:api",
    "node .github/smoke.mjs (CI MCP smoke: initialize + tools/list, 20 tools, SMOKE OK)",
    "node dist/bin.js (stdio MCP server, started by the probe), then tools/call getNetworks with a rationale argument"
  ],
  "deviations": [
    "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.",
    "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.",
    "npm ci reported 3 vulnerabilities (1 moderate, 2 high) from its dependency tree. Not fixed, since that would change the pinned lockfile.",
    "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.",
    "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.",
    "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.",
    "Cycles: none. The server is request-driven stdio, with no scheduler, loop, webhook, --once or --now."
  ],
  "stuck_step": null,
  "main_blocker": null,
  "plain_failure": null,
  "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."
}
EOF
python3 -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'])"
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation node dist/bin.js · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the DexPaprika stdio MCP server and call getNetworks to retrieve the supported networks.

MCP server returned: dexpaprika · version 2.9.2.

MCP tools returned: getKeyStatus, getNetworks, getCapabilities, getNetworkDexes, getNetworkPools, getDexPools, getNetworkPoolsFilter, getPoolDetails, getPoolOHLCV, getPoolIndicator, getPoolTransactions, getTokenDetails, getTokenPools, getTokenOHLCV, getTokenIndicator, getTokenMultiPrices, filterNetworkTokens, getTopTokens, search, getStats. Tool listing does not establish authenticated tool-call success.

Run details
run
coinpaprika--dexpaprika-mcp-gpt-6-luna-1792806384048343189
date
Oct 23, 2026
time to working
427.2s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/coinpaprika/dexpaprika-mcp
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "80ed05c695002ceb137c9c4fa56e1fd435fdf9bf", "url": "https://github.com/coinpaprika/dexpaprika-mcp"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
80ed05c695002ceb137c9c4fa56e1fd435fdf9bf
Whose fault: not assigned · resolved

Safety: Review signals: 1 connection review, 3 hardcoded secret, 7 known vulnerability. 1 static matches retained as context.

Review signals: 1 connection review, 3 hardcoded secret, 7 known vulnerability. 1 static matches retained as context.

Reviewed as expected for a test run: resolver address lookups that send no data.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 104.26.10.63:443 5 attributed processes.

Gitleaks found a possible hardcoded secret; value withheld. README.md 3 findings.

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 7 findings.

1 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

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.

Full safety evidence →

Answers recorded for this run
  • DexPaprika MCP provides live blockchain network discovery.: Real input produced the expected result: ethereum

    Source: List every supported blockchain network (36)

    Input: {"tool": "getNetworks", "arguments": {"rationale": "List supported chains so I can choose a network for a market data request."}}

    Expected: ethereum

    Command: node dist/bin.js tools/call {"tool": "getNetworks", "arguments": {"rationale": "List supported chains so I can choose a network for a market data request."}}

    Observed: ethereum\",\n \"volume_usd_24h\": 1410742565.5951085,\n \"txns_24h\": 327239,\n \"pools_count\": 10070\n },\n {\n \"display_name\": \"Binance Smart Chain\",\n \"id\": \"bsc\",\n \"volume_usd_24h\": 1331107228.5123687,\n \"txns_24h\": 4637795,\n \"pools_count\": 27360\n },\n {\n \"display_name\": \"Base\",\n \"id\": \"base\",\n \"volume_usd_24h\": 630728956.9639341,\n \"txns_24h\": 2198374,\n \"pools_count\": 15074\n },\n {\n \"display_name\": \"BOB Network\",\n \"id\": \"bob_network\",\n \"volume_usd_24h\": 169.9185228808275,\n \"txns_24

Examples

  • Build the production server bundle: command completed successfully

    Source: README.md / Development

    Input: npm run build

    Expected: dist/bin.js

    Command: npm run build

    Observed: > [email protected] build > mkdir -p dist && cp -r src/* dist/ && chmod +x dist/bin.js

Local or hosted: local

What the agent did

Run the DexPaprika stdio MCP server and call getNetworks to retrieve the supported networks.

pwd; rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'requirements*.txt' -g 'Dockerfile' -g 'Makefile' -g 'uv.lock' -g 'p3-models.md'
ls -la; find . -name README.md -o -name AGENTS.md -o -name pyproject.toml -o -name package.json -o -name 'requirements*.txt' -o -name Dockerfile -o -name Makefile; python3 --version
cat README.md; cat package.json; ls -la .coldpass; find src -maxdepth 2 -type f
id -u; node --version; npm --version; git status --short --branch; git remote -v; git rev-parse --is-inside-work-tree; cat src/index.js | head -60
apt-get update && apt-get install -y nodejs npm && node --version && npm --version
sudo -n apt-get update && sudo -n apt-get install -y nodejs npm && node --version && npm --version
node --version; npm --version; npm install && npm run build && npm test
sed -n '1,160p' src/bin.js; sed -n '1,160p' src/test_mcp_client.js; sed -n '1,100p' src/test_methods.js
grep -n "getCapabilities\|getNetworks\|getNetworkPools\|server.connect" src/index.js
python3 - <<'PY'
import json
for p,d in {
'.coldpass/probe.json': {'kind':'mcp','argv':['node','dist/bin.js'],'cwd':'<guest-path>','tool':'getCapabilities','arguments':{'rationale':'Identify supported workflows and canonical network names for planning market data queries.'},'expected_text':'ethereum'},
'.coldpass/claims.json': [{'kind':'claim','claim':'The server explains supported workflows and maps network synonyms to canonical IDs.','source':'The free tier needs no API key to start.','testable':False,'reason':'This selected claim was not suitable; replace with concrete capabilities statement.'}],
'.coldpass/cycles.json': {'detected':False,'reason':'The README and package entry points document an on-demand MCP server, with no scheduler or recurring cycle mechanism.','checks':[]},
'.coldpass/examples.json': [{'kind':'example','claim':'Build the production server bundle','source':'README.md / Development','input':'npm run build','expected':'dist/bin.js','argv':['npm','run','build'],'cwd':'<guest-path>','expected_text':'> [email protected] build'}]
}.items():
 open(p,'w').write(json.dumps(d,indent=2)+'\n')
PY

python3 - <<'PY'
import json
p='.coldpass/claims.json'
d=[{'kind':'claim','claim':'DexPaprika MCP provides live blockchain network discovery.','source':'List every supported blockchain network (36)','input':'List supported blockchain networks','expected':'ethereum','probe_kind':'mcp','argv':['node','dist/bin.js'],'tool':'getNetworks','arguments':{'rationale':'List supported chains so I can choose a network for a market data request.'},'expected_text':'ethereum','cwd':'<guest-path>'}]
open(p,'w').write(json.dumps(d,indent=2)+'\n')
PY
ls -l <guest-path> /inputs/coldpass-preflight.py 2>/dev/null; ls -l <guest-path>
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
mkdir -p .coldpass; python3 - <<'PY'
import json
p='.coldpass/probe.json'; d=json.load(open(p)); d['tool']='getNetworks'; d['arguments']={'rationale':'List supported chains so I can choose a network for a market data request.'}; d['expected_text']='ethereum'; open(p,'w').write(json.dumps(d,indent=2)+'\n')
PY

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> && python3 - <<'PY'
import json
p=json.load(open('<guest-path>')); print(json.dumps({'valid':p.get('valid'),'problems':p.get('problems'),'replay_status':p.get('replay',{}).get('status'),'working':p.get('replay',{}).get('details',{}).get('working')},indent=2))
PY
python3 - <<'PY'
import json
p={'outcome':'working','fault_owner':None,'operation':'Run the DexPaprika stdio MCP server and call getNetworks to retrieve the supported networks.','operation_scope':'Local self-host build with keyless access; getNetworks was called successfully.','steps':['Installed Node.js/npm in the guest with sudo -n apt-get update and sudo -n apt-get install -y nodejs npm.','npm install','npm run build','npm test','Started node dist/bin.js through the Coldpass MCP replay and called getNetworks.'],'deviations':['The first apt-get install attempt without sudo failed with a permission error; the sudo command succeeded.','npm install reported 3 dependency vulnerabilities (1 moderate, 2 high); installation, build, test and MCP replay all succeeded.'],'stuck_step':None,'main_blocker':None,'plain_failure':None,'suggested_fix':None}
open('.coldpass/report.json','w').write(json.dumps(p,indent=2)+'\n')
PY
cat .coldpass/report.json; ls -la .coldpass