Haiku 5.5
Native agent · Checked operation passedChecked operation /tmp/node22/bin/node build/index.js · local stdio MCP start + initialize + tools/list
Agent-reported scope: Run the Tavily MCP server over stdio and call the tavily_search tool (keyless mode) to get live web search results
MCP server returned: tavily-mcp · version 0.2.22.
MCP tools returned: tavily_search, tavily_extract, tavily_crawl, tavily_map, tavily_research, tavily_feedback. Tool listing does not establish authenticated tool-call success.
Run details
- run
- tavily-ai--tavily-mcp-claude-haiku-5-5-1792808595055608888
- date
- Oct 23, 2026
- time to working
- 114.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.013107
- Recorded source
- https://github.com/tavily-ai/tavily-mcp
- Backend
- hyperv
- Tool transport
- mcp-assigned-vm
- Requested source pin (not an observed revision)
- {"commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0", "url": "https://github.com/tavily-ai/tavily-mcp"}
- Test version
- readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
- revision
- 688b0f78d518d507cb31b94d9cc0e44c6eadd7c0
Safety: Review signals: 1 connection review, 14 known vulnerability.
Review signals: 1 connection review, 14 known vulnerability.
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. 54.147.69.235:443 7 attributed processes.
OSV reports a known vulnerability in this dependency version. 7 distinct locations. 14 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
- The server provides a real-time web search tool named tavily-search (implemented as tavily_search).: Real input produced the expected result: Detailed Results:
Source: - Real-time web search capabilities through the tavily-search tool
Input: {"tool": "tavily_search", "arguments": {"query": "Tavily MCP server"}}
Expected: search results returned by tavily_search
Command: /tmp/node22/bin/node build/index.js tools/call {"tool": "tavily_search", "arguments": {"query": "Tavily MCP server"}}
Observed: Detailed Results:\n\nTitle: Tavily MCP Server | Awesome MCP Servers\nID: 5249ad-00\nURL: https://mcpservers.org/servers/altinakseven/tavily-mcp-server\nContent: # Tavily MCP Server\n\nWeb search using the Tavily API.\n\n## Documentation\n\n## Tavily MCP Server\n\nA production-ready MCP (Model Context Protocol) server that provides web search capabilities using the Tavily API. This server integrates seamlessly with Roo and other MCP-compatible AI assistants.\n\n## Features\n\n## Quick Start\n\n### Prerequisites\n\n### Installation & Deployment\n\nClone and setup:\n\n`cd tavily-mcp-server\nnpm i
Examples
- Repository offline test suite runs and passes: command completed successfully
Source: package.json scripts.test
Input: npm test
Expected: 6 tests pass, 0 fail
Command: /tmp/node22/bin/npm test
Observed: n when a search returns no results ok 4 - exposes the request ID even when a search returns no results --- duration_ms: 0.069541 ... # Subtest: formats Extract raw content without a nonexistent search snippet ok 5 - formats Extract raw content without a nonexistent search snippet --- duration_ms: 0.077136 ... # Subtest: formats Extract results that have no title or content field ok 6 - formats Extract results that have no title or content field --- duration_ms: 0.101903 ... 1..6 # tests 6 # suites 0 # pass 6 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 117.867126
Local or hosted: both
What the agent did
Run the Tavily MCP server over stdio and call the tavily_search tool (keyless mode) to get live web search results
cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat /etc/os-release | head -3; command -v node npm uv; node --version 2>&1; npm --version 2>&1
cd <guest-path> && cat README.md 2>/dev/null | head -300; ls <guest-path> /inputs 2>&1
cd <guest-path> && git init -q && git remote add origin https://github.com/tavily-ai/tavily-mcp && (timeout 120 git fetch --depth 1 origin 688b0f78d518d507cb31b94d9cc0e44c6eadd7c0 2>&1; echo "fetch rc=$?") && git reset --mixed FETCH_HEAD 2>&1; git log --oneline -1 2>&1; ls -la; cat package.json; ls src tests; cat Dockerfile smithery.yaml
cd /tmp && export NODE_USE_ENV_PROXY=1 && (timeout 300 curl -fsSL -o node22.tar.xz https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-x64.tar.xz; echo rc=$?) && ls -la node22.tar.xz && mkdir -p /tmp/node22 && tar -xJf node22.tar.xz -C /tmp/node22 --strip-components=1 && /tmp/node22/bin/node --version && /tmp/node22/bin/npm --version
export PATH=/tmp/node22/bin:$PATH && export NODE_USE_ENV_PROXY=1 && node --version && npm --version && cd <guest-path> && (timeout 600 npm ci 2>&1 | tail -20; echo rc=${PIPESTATUS[0]}) && ls build 2>&1
export PATH=/tmp/node22/bin:$PATH && cd <guest-path> && (timeout 300 npm test 2>&1 | tail -15; echo rc=${PIPESTATUS[0]}); grep -n "API_KEY\|apiKey\|argv\|yargs\|tavily-search'\|name: \"" src/index.ts | head -40
cd <guest-path> && sed -n 95,110p src/index.ts; sed -n 715,735p src/index.ts; sed -n 1150,1185p src/index.ts; echo "TAVILY set? <env-ref>"; grep -n "tavily-search\|tavily_search" README.md | head
cd <guest-path> && wc -l check.py && grep -n "def \|mcp\|credentials\|checks" check.py | head -120
export PATH=/tmp/node22/bin:$PATH NODE_USE_ENV_PROXY=1 && mkdir -p /tmp/mcpclient && cd /tmp/mcpclient && npm init -y >/dev/null && (timeout 200 npm i @modelcontextprotocol/[email protected] 2>&1 | tail -2) && cat > call.mjs <<'EOF'
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const [,, tool, argsJson] = process.argv;
const t = new StdioClientTransport({ command: 'node', args: ['<guest-path>'], cwd: '<guest-path>', stderr: 'pipe' });
const c = new Client({ name: 't', version: '1' });
await c.connect(t);
const r = await c.callTool({ name: tool, arguments: JSON.parse(argsJson) });
console.log(JSON.stringify(r).slice(0, 1500));
await c.close();
EOF
timeout 120 node call.mjs tavily_search '{"query":"Tavily MCP server"}'; echo rc=$?
cd <guest-path> && grep -n -i "setInterval\|cron\|schedul\|webhook\|--once\|--now\|setTimeout" src/*.ts README.md | head; echo ---; grep -c "" README.md; grep -n "Real-time web search capabilities through the tavily-search tool" README.md; ls -la .coldpass
cd <guest-path> && cat > probe.json <<'EOF'
{"kind":"mcp","argv":["/tmp/node22/bin/node","build/index.js"],"cwd":"<guest-path>","tool":"tavily_search","arguments":{"query":"Tavily MCP server"},"expected_text":"Detailed Results:"}
EOF
cat > claims.json <<'EOF'
[{"kind":"claim","claim":"The server provides a real-time web search tool named tavily-search (implemented as tavily_search).","source":"- Real-time web search capabilities through the tavily-search tool","input":"Tavily MCP server","expected":"search results returned by tavily_search","probe_kind":"mcp","argv":["/tmp/node22/bin/node","build/index.js"],"tool":"tavily_search","arguments":{"query":"Tavily MCP server"},"expected_text":"Detailed Results:","cwd":"<guest-path>"}]
EOF
cat > examples.json <<'EOF'
[{"kind":"example","claim":"Repository offline test suite runs and passes","source":"package.json scripts.test","input":"npm test","expected":"6 tests pass, 0 fail","argv":["/tmp/node22/bin/npm","test"],"cwd":"<guest-path>","env":{"PATH":"/tmp/node22/bin:/usr/local/bin:/usr/bin:/bin"},"expected_text":"# fail 0"}]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"reason":"Inspected src/index.ts and README.md for cron, scheduling, loops, webhooks, --once/--now. The only setTimeout calls are request timeouts and research-job polling; the server is a stdio MCP server that runs only when a client calls a tool. No product cycle exists.","checks":[]}
EOF
for f in probe claims examples cycles; do python3 -I -c "import json,sys;json.load(open(sys.argv[1]));print('ok',sys.argv[1])" $f.json; done
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay; echo rc=$?
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Run the Tavily MCP server over stdio and call the tavily_search tool (keyless mode) to get live web search results","operation_scope":"Local stdio MCP server built from the pinned commit 688b0f78d518d507cb31b94d9cc0e44c6eadd7c0 with Node 22.12.0. Tested without a TAVILY_API_KEY (keyless search only). Keyed tools (tavily_extract, tavily_crawl, tavily_map, tavily_research) and the hosted mcp.tavily.com endpoint were not exercised. Repo offline test suite (npm test) also passed: 6/6.","steps":["git init; git remote add origin https://github.com/tavily-ai/tavily-mcp; git fetch --depth 1 origin 688b0f78d518d507cb31b94d9cc0e44c6eadd7c0; git reset --mixed FETCH_HEAD","Installed Node 22.12.0 (Node 20+ required by README 'Prerequisites'; Dockerfile uses node:22) from https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-x64.tar.xz into /tmp/node22","npm ci (builds build/ via the prepare script)","npm test (6 tests pass)","MCP stdio server: node build/index.js; tool call tavily_search {\"query\":\"Tavily MCP server\"} returned 'Detailed Results:' with results"],"deviations":["README has no local install command; its documented method is 'npx -y tavily-mcp@latest', which runs the published npm package rather than this checkout. I did not use it; I ran the repo's own build (npm ci) and node build/index.js instead.","Node.js was not installed in the guest. Installed Node 22.12.0 as a user-local tarball in /tmp/node22 (no sudo) and used absolute paths /tmp/node22/bin/node and /tmp/node22/bin/npm in argv so the checker does not depend on PATH.","No Tavily API key was provided, and none was looked for. The server ran in its documented keyless mode, so only search was tested. The README's API key setup (TAVILY_API_KEY, OAuth) was not exercised; this is not a credentials failure for the tested operation.","Server self-reports version 0.2.22 while package.json says 0.2.23; noted, not investigated further."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"None required for the tested path. Optional: the README could document a plain local install (git clone + npm install + node build/index.js), and the package.json version and the server's reported version should be aligned."}
EOF
python3 -I -c "import json;json.load(open('report.json'));print('report ok')"
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay | python3 -c "import json,sys;d=json.load(sys.stdin);print('valid',d['valid'],'problems',d['problems'],'replay',d['replay']['status'])"; echo rc=$?; ls -la .coldpassrun JSON · checker evidence · agent report + check · transcript excerpt unavailable · error excerpt unavailable