Haiku 5.5
Native agent · Checked operation passedChecked operation node build/index.js · local stdio MCP start + initialize + tools/list
Agent-reported scope: Run open-websearch MCP stdio server and call the search tool; one-shot CLI search; local daemon test suite
MCP server returned: web-search · version 1.2.0.
MCP tools returned: search, fetchLinuxDoArticle, fetchCsdnArticle, fetchGithubReadme, fetchWebContent, fetchJuejinArticle. Tool listing does not establish authenticated tool-call success.
Run details
- run
- aas-ee--open-websearch-claude-haiku-5-5-1793199152070992688
- date
- Oct 28, 2026
- time to working
- 241.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.310 (Claude Code)
- platform
- linux
- reported cost
- $0.012877
- Recorded source
- https://github.com/aas-ee/open-websearch
- Backend
- hyperv
- Tool transport
- mcp-assigned-vm
- Requested source pin (not an observed revision)
- {"commit": "fb11fd94df736819a0d2765bf7645224f98b2c6b", "url": "https://github.com/aas-ee/open-websearch"}
- Test version
- readme-2d57868128a84902c09a58991c46c5fe288928e55b1de8282ab5003e13159c2f
- revision
- fb11fd94df736819a0d2765bf7645224f98b2c6b
Safety: Review signals: 1 connection review, 76 known vulnerability.
Review signals: 1 connection review, 76 known vulnerability.
Reviewed as expected for a test run: attempted writes that failed, so nothing was written; resolver address lookups that send no data.
Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 7 distinct locations. 20 attributed processes.
OSV reports a known vulnerability in this dependency version. 13 distinct locations. 76 findings.
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
- MCP search returns structured results with titles, URLs and descriptions: Real input produced the expected result: open-websearch
Source: README.md
Input: {"tool": "search", "arguments": {"query": "open web search", "limit": 3, "engines": ["duckduckgo"]}}
Expected: result text containing a result
Command: node build/index.js tools/call {"tool": "search", "arguments": {"query": "open web search", "limit": 3, "engines": ["duckduckgo"]}}
Observed: …open-websearch</b> provides an MCP server, CLI, and local daemon, and can also be paired with skill-guided agent workflows for live <b>web</b> <b>search</b> and content retrieval without API keys. On first use, the skill typically follows this path: detect whether a usable <b>open-websearch</b> path already exists, guide ...\",\n \"source\": \"github.com\",\n \"engine\": \"duckduckgo\"\n },\n {\n \"title\": \"Google\",\n \"url\": \"https://www.google.com/xhtml/search\",\n \"description\": \"<b>Search</b> the world's information, including webpages, images, v
- No API keys required: Real input produced the expected result: "status": "ok"
Source: README.md
Input: CLI search with duckduckgo, no key
Expected: ok status with results
Command: node build/index.js search 'open web search' --engine duckduckgo --limit 3 --json
Observed: …"status": "ok", "data": { "query": "open web search", "engines": [ "duckduckgo" ], "totalResults": 3, "results": [ { "title": "Open-WebSearch - GitHub", "url": "https://github.com/Aas-ee/open-webSearch", "description": "<b>open-websearch</b> provides an MCP server, CLI, and local daemon, and can also be paired with skill-guided agent workflows for live <b>web</b> <b>search</b> and content retrieval without API keys. On first use, the skill typically follows this path: detect whether a usable <b>open-websearch</b> path already exists, gu
Examples
- Repository offline local daemon test suite runs (documented npm test script; not product behavior proof): command completed successfully
Source: package.json scripts test:local-daemon
Input: npm run test:local-daemon
Expected: Local daemon tests passed.
Command: npm run test:local-daemon
Observed: daemon health and status routes ✅ local daemon operation routes ✅ CLI status json success ✅ CLI status unavailable path ✅ CLI status error envelope ✅ CLI serve waits for signal Local daemon tests passed. 🔍 Default search engine: duckduckgo 🔍 No search engine restrictions, all available engines can be used 🔍 Search mode: AUTO, effective: REQUEST (currently only affects Bing) 🌐 No proxy configured (set USE_PROXY=true to enable) 🔐 fetchWebContent TLS verification is enabled 🧭 Playwright client source: auto 🧭 Playwright headless: true 🧭 Playwright navigation timeout: 20000ms 🖥️ Server mode: STDIO
Local or hosted: local
What the agent did
Run open-websearch MCP stdio server and call the search tool; one-shot CLI search; local daemon test suite
cd <guest-path> && ls -la && git status 2>&1 | head -3; python3 --version; node --version 2>&1; npm --version 2>&1; cat README.md | head -c 6000
echo $CDP_URL $<env-var>; ls /inputs 2>&1; ls <guest-path> 2>&1
cd <guest-path> && grep -n '^#' README.md | head -80; grep -n -A4 '"engines"' package.json; grep -n '"scripts"' -A30 package.json | head -45
cd <guest-path> && sed -n 143,200p README.md; sed -n 294,330p README.md
cd <guest-path> && git init -q && git remote add origin https://github.com/aas-ee/open-websearch && git fetch --depth 1 origin fb11fd94df736819a0d2765bf7645224f98b2c6b 2>&1 | tail -3; git reset --mixed FETCH_HEAD 2>&1 | tail -2; git log --oneline -1 2>&1
cd <guest-path> && timeout 900 npm install 2>&1 | tail -15; echo EXIT=$?
cd <guest-path> && npm run build 2>&1 | tail -8; echo EXIT=$?; ls build/index.js && cat .coldpass/* 2>/dev/null | head -c 500; ls .coldpass
cd <guest-path> && timeout 120 npm run search:cli -- "open web search" --json 2>&1 | head -c 2500; echo; echo EXIT=${PIPESTATUS[0]}
cd <guest-path> && node build/index.js search --help 2>&1 | head -40
cd <guest-path> && for e in duckduckgo brave startpage hackernews; do echo "== $e"; timeout 120 node build/index.js search "open web search" --engine $e --limit 3 --json 2>/dev/null | tail -n +1 | head -c 900; echo; done
cd <guest-path> && grep -rn "query:\|limit:" src/tools/*.ts 2>/dev/null | head -10; ls src; grep -rln "MCP_TOOL_SEARCH_NAME" src | head
cd <guest-path> && sed -n 105,120p src/tools/setupTools.ts; grep -n "Returns structured results" README.md; grep -n "Configurable number of results" README.md
mkdir -p <guest-path> && cat > <guest-path> <<'EOF'
{"kind":"mcp","argv":["node","build/index.js"],"cwd":"<guest-path>","env":{"MODE":"stdio","DEFAULT_SEARCH_ENGINE":"duckduckgo"},"tool":"search","arguments":{"query":"open web search","limit":3,"engines":["duckduckgo"]},"expected_text":"open-websearch"}
EOF
cat > <guest-path> <<'EOF'
[{"kind":"claim","claim":"MCP search returns structured results with titles, URLs and descriptions","source":"README.md","quote":"Returns structured results with titles, URLs, and descriptions","input":"query open web search via MCP search tool","expected":"result text containing a result","probe_kind":"mcp","argv":["node","build/index.js"],"env":{"MODE":"stdio","DEFAULT_SEARCH_ENGINE":"duckduckgo"},"tool":"search","arguments":{"query":"open web search","limit":3,"engines":["duckduckgo"]},"expected_text":"open-websearch","cwd":"<guest-path>"},
{"kind":"claim","claim":"No API keys required","source":"README.md","quote":"No API keys or authentication required","input":"CLI search with duckduckgo, no key","expected":"ok status with results","probe_kind":"cli","argv":["node","build/index.js","search","open web search","--engine","duckduckgo","--limit","3","--json"],"expected_text":"\"status\": \"ok\"","cwd":"<guest-path>"}]
EOF
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 4000
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo EXIT=$?; python3 -I -c "
import json,sys
t=open('<guest-path>').read()
i=t.find('{')
d=json.loads(t[i:])
print({k:(v if not isinstance(v,(dict,list)) else type(v).__name__) for k,v in d.items()})
" 2>&1 | head -c 1500
cd <guest-path> && grep -rniE "cron|setInterval|--once|--now|webhook" README.md src --include=*.ts | head -8; echo ---; grep -n "test" README.md | head -20; echo ---; timeout 300 npm run test:local-daemon 2>&1 | tail -6; echo EXIT=${PIPESTATUS[0]}
cd <guest-path> && cat > cycles.json <<'EOF'
{"detected":false,"checks":[],"reason":"Inspected README.md and src/*.ts for cron, setInterval, webhook, --once or --now scheduler triggers; none found. The only long-running entrypoint is the local daemon (open-websearch serve), which is request-driven, not a scheduled cycle."}
EOF
cat > examples.json <<'EOF'
[{"kind":"example","claim":"Repository offline local daemon test suite runs (documented npm test script; not product behavior proof)","source":"package.json scripts test:local-daemon","input":"npm run test:local-daemon","expected":"Local daemon tests passed.","argv":["npm","run","test:local-daemon"],"cwd":"<guest-path>","env":{},"expected_text":"Local daemon tests passed."}]
EOF
python3 -I -c "import json;json.load(open('cycles.json'));json.load(open('examples.json'));print('ok')"; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo EXIT=$?; python3 -I -c "
import json
t=open('<guest-path>').read(); d=json.loads(t[t.find('{'):])
print(d['valid'], d['problems'])" 2>&1 | head -c 2000
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Run open-websearch MCP stdio server and call the search tool; one-shot CLI search; local daemon test suite","operation_scope":"Node.js 22 (v22.23.4) and npm 10.9.9 on Linux; pinned commit fb11fd94df736819a0d2765bf7645224f98b2c6b; no API keys; DuckDuckGo engine used because Bing and Brave were not usable from this network","steps":["git init; git remote add origin https://github.com/aas-ee/open-websearch; git fetch --depth 1 origin fb11fd94df736819a0d2765bf7645224f98b2c6b; git reset --mixed FETCH_HEAD","npm install","npm run build","npm run search:cli -- \"open web search\" --json (README CLI section)","node build/index.js search \"open web search\" --engine duckduckgo --limit 3 --json","MODE=stdio DEFAULT_SEARCH_ENGINE=duckduckgo node build/index.js (MCP stdio), tool search","npm run test:local-daemon"],"deviations":["Default engine bing returned engine_error 'Bing exceeded the regional redirect limit (1)' from this network; switched to duckduckgo, which returned results","brave returned HTTP 429 rate limit; not used for evidence","npm install reported 14 vulnerabilities (4 moderate, 10 high); not remediated because the pinned lockfile was used as-is","Workspace had no .git; initialized git metadata at the pinned commit as the task instructed","Did not start Playwright or a browser; no CDP endpoint was needed for these operations"],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"None required for the working path. For Bing in restricted networks, configure USE_PROXY/PROXY_URL per the README runtime-proxy section."}
EOF
python3 -I -c "import json;d=json.load(open('report.json'));print(d['outcome'])"; ls -la <guest-path> <guest-path> 2>&1
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo EXIT=$?; python3 -I -c "
import json
t=open('<guest-path>').read(); d=json.loads(t[t.find('{'):])
print(d['valid'], d['problems'])"; git -C <guest-path> log --oneline -1run JSON · checker evidence · agent report + check · transcript excerpt · error excerpt unavailable