{"id":"52203f2df2c8","status":"done","kind":"auto","source":"npm","target":"npm:@pipeworx/mcp-gnomad","name":"@pipeworx/mcp-gnomad","version":"0.1.3","verdict":"NO MALICIOUS BEHAVIOR OBSERVED","top_finding":null,"findings":2,"critical":0,"public":true,"confidence":null,"created_at":"2026-10-26T04:13:38.871688Z","finished_at":"2026-10-26T04:16:07.532873Z","report_url":"https://detonationlabs.com/r/52203f2df2c8","progress":[{"phase":"mcp","label":"baseline","status":"ok","duration":40.9,"new":["dns:gnomad.broadinstitute.org","ownread:~/.npmrc","write:<skill>/node_modules/.bin/esbuild","write:<skill>/node_modules/.bin/mcp-gnomad","write:<skill>/node_modules/.bin/node-which"],"findings":[],"note":"install scripts: exit 0; restarted once; 20 tool calls"},{"phase":"mcp","label":"time-travel","status":"ok","duration":15.8,"new":[],"findings":[],"note":"install scripts: exit 0; 20 tool calls"},{"phase":"mcp","label":"ci-github","status":"ok","duration":34.6,"new":[],"findings":[],"note":"install scripts: exit 0; 20 tool calls"},{"phase":"mcp-agent","label":"agent","status":"ok","duration":35.2,"new":[],"findings":[],"note":"install scripts: exit 0"}],"error":null,"report":{"engine":"detonator 0.5.1","generated":"2026-10-26T04:16:07Z","target":{"name":"@pipeworx/mcp-gnomad","sha256":"f7439327e3e8eb865246b0cf1bc448a6f48338afc43288e78bfcc35fc427d09b","files":8,"scripts":["bin/cli.js"],"declared":{},"trigger_hints":[],"source":"npm:@pipeworx/mcp-gnomad@0.1.3","command":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","kind":"mcp","version":"0.1.3"},"verdict":"NO MALICIOUS BEHAVIOR OBSERVED","observed":{"network":["gnomad.broadinstitute.org"],"files_written":["<skill>/node_modules/.bin/esbuild","<skill>/node_modules/.bin/mcp-gnomad","<skill>/node_modules/.bin/node-which","<skill>/node_modules/.bin/tsx","<skill>/node_modules/esbuild/bin-esbuild","<skill>/node_modules/esbuild/bin/esbuild","~/.npm/_logs/*-debug-0.log"],"secrets_read":[],"commands":[],"exfiltration":[]},"findings":[{"rule":"network-egress","severity":"low","title":"Network destinations contacted","evidence":["gnomad.broadinstitute.org"],"run_label":"mcp:baseline","confidence":"Info","confidence_reason":"The package connected to these hosts.","why":"Common for tools that fetch data. Check that the hosts fit what the package says it does.","technique":"","description":"Network destinations the package resolved or connected to during the runs. All traffic was captured by the sandbox; nothing reached the internet.","impact":"Context only. Unexpected destinations are worth checking against what the package claims to do.","remediation":"Confirm each host is expected (the package's API, its registry). Allowlist expected egress in production.","references":[]},{"rule":"secret-read-by-owner","severity":"low","title":"A tool read its own credentials (e.g. gh, aws, ssh)","evidence":["~/.npmrc (by npm)"],"run_label":"mcp:baseline","confidence":"Info","confidence_reason":"A tool opened its own login or config file, such as npm reading ~/.npmrc.","why":"Normal: that is how the tool works. Listed so nothing is hidden.","technique":"","description":"A tool opened its own configuration or login file, such as npm reading ~/.npmrc or gh reading its hosts file.","impact":"None in itself: this is how those tools work. Listed so the report shows every credential access.","remediation":"No action needed.","references":[]}],"exploration":{"runs":[{"phase":"mcp","target":"@pipeworx/mcp-gnomad","label":"baseline","status":"ok","duration":40.902,"new_signatures":["dns:gnomad.broadinstitute.org","ownread:~/.npmrc","write:<skill>/node_modules/.bin/esbuild","write:<skill>/node_modules/.bin/mcp-gnomad","write:<skill>/node_modules/.bin/node-which","write:<skill>/node_modules/.bin/tsx","write:<skill>/node_modules/esbuild/bin-esbuild","write:<skill>/node_modules/esbuild/bin/esbuild","write:~/.npm/_logs/*-debug-0.log"],"findings":2,"note":"install scripts: exit 0; restarted once; 20 tool calls","commands":[],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c export npm_config_update_notifier=false npm_config_audit=...","flag":"","children":[{"kind":"proc","label":"npm rebuild --offline --foreground-scripts --no-audit --no-fund","flag":"","children":[{"kind":"proc","label":"node /usr/bin/npm rebuild --offline --foreground-scripts --no-audit","flag":"","children":[{"kind":"secret","label":"read ~/.npmrc  (its own config)","flag":"own","children":[],"hot":false},{"kind":"proc","label":"sh -c node install.js","flag":"","children":[{"kind":"proc","label":"node install.js","flag":"","children":[{"kind":"proc","label":"<skill>/node_modules/esbuild/bin/esbuild --version","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"net","label":"gnomad.broadinstitute.org:443  sent 1617 B","flag":"","children":[],"hot":false,"count":15},{"kind":"net","label":"DNS lookups for broadinstitute.org  30 queries","flag":"","children":[],"hot":false},{"kind":"proc","label":"<skill>/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.28.2 --ping","flag":"","children":[],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[],"hot":false}],"hot":false}],"truncated":0}},{"phase":"mcp","target":"@pipeworx/mcp-gnomad","label":"time-travel","status":"ok","duration":15.777,"new_signatures":[],"findings":0,"note":"install scripts: exit 0; 20 tool calls","commands":[],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c export npm_config_update_notifier=false npm_config_audit=...","flag":"","children":[{"kind":"proc","label":"npm rebuild --offline --foreground-scripts --no-audit --no-fund","flag":"","children":[{"kind":"proc","label":"node /usr/bin/npm rebuild --offline --foreground-scripts --no-audit","flag":"","children":[{"kind":"secret","label":"read ~/.npmrc  (its own config)","flag":"own","children":[],"hot":false},{"kind":"proc","label":"sh -c node install.js","flag":"","children":[{"kind":"proc","label":"node install.js","flag":"","children":[{"kind":"proc","label":"<skill>/node_modules/esbuild/bin/esbuild --version","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"net","label":"gnomad.broadinstitute.org:443  sent 1617 B","flag":"","children":[],"hot":false,"count":15},{"kind":"net","label":"DNS lookups for broadinstitute.org  30 queries","flag":"","children":[],"hot":false},{"kind":"proc","label":"<skill>/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.28.2 --ping","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"truncated":0}},{"phase":"mcp","target":"@pipeworx/mcp-gnomad","label":"ci-github","status":"ok","duration":34.618,"new_signatures":[],"findings":0,"note":"install scripts: exit 0; 20 tool calls","commands":[],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c export npm_config_update_notifier=false npm_config_audit=...","flag":"","children":[{"kind":"proc","label":"npm rebuild --offline --foreground-scripts --no-audit --no-fund","flag":"","children":[{"kind":"proc","label":"node /usr/bin/npm rebuild --offline --foreground-scripts --no-audit","flag":"","children":[{"kind":"secret","label":"read ~/.npmrc  (its own config)","flag":"own","children":[],"hot":false},{"kind":"proc","label":"sh -c node install.js","flag":"","children":[{"kind":"proc","label":"node install.js","flag":"","children":[{"kind":"proc","label":"<skill>/node_modules/esbuild/bin/esbuild --version","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"net","label":"gnomad.broadinstitute.org:443  sent 1617 B","flag":"","children":[],"hot":false,"count":15},{"kind":"net","label":"DNS lookups for broadinstitute.org  30 queries","flag":"","children":[],"hot":false},{"kind":"proc","label":"<skill>/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.28.2 --ping","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"truncated":0}},{"phase":"mcp-agent","target":"@pipeworx/mcp-gnomad","label":"agent","status":"ok","duration":35.169,"new_signatures":[],"findings":0,"note":"install scripts: exit 0","commands":["mcp_gnomad__variant({\"variant_id\": \"rs1801133\"})","mcp_gnomad__gene({\"gene_symbol_or_id\": \"BRCA1\", \"limit\": 5})","mcp_gnomad__region({\"chrom\": \"1\", \"start\": 55051215, \"stop\": 55052000, \"assembly\": \"GRCh38\", \"limit\": 5})","mcp_gnomad__search({\"query\": \"BRCA\"})","mcp_gnomad__transcript({\"transcript_id\": \"ENST00000357654\", \"limit\": 5})","mcp_gnomad__variant({\"variant_id\": \"rs1801133\"})","mcp_gnomad__gene({\"gene_symbol_or_id\": \"BRCA1\", \"limit\": 5})","mcp_gnomad__region({\"chrom\": \"1\", \"start\": 55051215, \"stop\": 55052000, \"assembly\": \"GRCh38\", \"limit\": 5})","mcp_gnomad__transcript({\"transcript_id\": \"ENST00000357654\", \"limit\": 5})"],"agent_reply":"I tried all five gnomAD tools, but the server's upstream connection to gnomAD is currently down, so I couldn't get real data back. Here's the honest status of each:\n\n| Tool | Sample input used | Result |\n|---|---|---|\n| `variant` | `rs1801133` (MTHFR C677T) | ❌ `upstream_down` — fetch failed |\n| `gene` | `BRCA1`, limit 5 | ❌ `upstream_down` — fetch failed |\n| `region` | chr1:55,051,215–55,052,000, GRCh38, limit 5 | ❌ `upstream_down` — fetch failed |\n| `transcript` | `ENST00000357654` (BRCA1), li","graph":{"roots":[{"kind":"proc","label":"bash -c export npm_config_update_notifier=false npm_config_audit=...","flag":"","children":[{"kind":"proc","label":"npm rebuild --offline --foreground-scripts --no-audit --no-fund","flag":"","children":[{"kind":"proc","label":"node /usr/bin/npm rebuild --offline --foreground-scripts --no-audit","flag":"","children":[{"kind":"secret","label":"read ~/.npmrc  (its own config)","flag":"own","children":[],"hot":false},{"kind":"proc","label":"sh -c node install.js","flag":"","children":[{"kind":"proc","label":"node install.js","flag":"","children":[{"kind":"proc","label":"<skill>/node_modules/esbuild/bin/esbuild --version","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"net","label":"gnomad.broadinstitute.org:443  sent 1617 B","flag":"","children":[],"hot":false,"count":10},{"kind":"net","label":"DNS lookups for broadinstitute.org  20 queries","flag":"","children":[],"hot":false},{"kind":"proc","label":"<skill>/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.28.2 --ping","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"truncated":0}}],"stopped":"mcp: coverage plateau (2 runs with no new behavior); agent: variants exhausted","model_usage":{"prompt_tokens":6732,"completion_tokens":1178,"llm_runs":1}},"surface":{"server":"@pipeworx/mcp-gnomad","version":"0.1.3","tools":["variant","gene","region","transcript","search"],"prompts":0,"resources":0},"note":"Observed behavior only. A clean result does not prove a package is safe.","summary":"We ran it 4 times, with a normal setup, the clock moved a year ahead, a GitHub Actions environment and an AI agent using it. It started as an MCP server, exposed 5 tools and we called them 60 times. It contacted gnomad.broadinstitute.org. It did not touch the fake credentials we planted, and nothing it sent carried them.","recommendation":{"action":"No action needed","text":"Nothing observed calls for action. This is evidence, not a guarantee."},"iocs":{"hosts":[],"ips":[],"sha256":"f7439327e3e8eb865246b0cf1bc448a6f48338afc43288e78bfcc35fc427d09b","benign_hosts":[]},"coverage":{"runs":4,"phases":["mcp","mcp-agent"],"environments":["baseline","time-travel","ci-github","agent"],"tool_calls":60,"model_runs":1,"stopped":"mcp: coverage plateau (2 runs with no new behavior); agent: variants exhausted"},"tree":{"run":"mcp:baseline","roots":[{"kind":"proc","label":"bash -c export npm_config_update_notifier=false npm_config_audit=...","flag":"","children":[{"kind":"proc","label":"npm rebuild --offline --foreground-scripts --no-audit --no-fund","flag":"","children":[{"kind":"proc","label":"node /usr/bin/npm rebuild --offline --foreground-scripts --no-audit","flag":"","children":[{"kind":"secret","label":"read ~/.npmrc  (its own config)","flag":"own","children":[],"hot":false},{"kind":"proc","label":"sh -c node install.js","flag":"","children":[{"kind":"proc","label":"node install.js","flag":"","children":[{"kind":"proc","label":"<skill>/node_modules/esbuild/bin/esbuild --version","flag":"","children":[],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"net","label":"gnomad.broadinstitute.org:443  sent 1617 B","flag":"","children":[],"hot":false,"count":15},{"kind":"net","label":"DNS lookups for broadinstitute.org  30 queries","flag":"","children":[],"hot":false},{"kind":"proc","label":"<skill>/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.28.2 --ping","flag":"","children":[],"hot":false}],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[{"kind":"proc","label":"node skill/node_modules/@pipeworx/mcp-gnomad/bin/cli.js","flag":"","children":[],"hot":false}],"hot":false}],"preview":[],"truncated":0},"flow":{"package":{"name":"@pipeworx/mcp-gnomad","version":"0.1.3","files":8,"kind":"mcp"},"install":["node install.js","bin/esbuild --version"],"has_install":true,"run":["node bin/cli.js"],"tools":["variant","gene","region","transcript","search"],"tool_calls":60,"agent_runs":1,"network":[{"host":"gnomad.broadinstitute.org","conns":55,"bytes":88935,"leak":"","when":"while running","dns":false}],"secrets":[{"path":"~/.npmrc","own":true,"when":"during install","leaked":false}],"files":[],"has_graph":true},"confidence":""}}