Haiku 5.5
Native agent · Checked operation passedChecked 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
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.
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'])"run JSON · checker evidence · agent report + check · transcript excerpt unavailable · error excerpt unavailable