{
  "run_id": "tavily-ai--tavily-mcp-claude-haiku-5-5-1792808595055608888",
  "date": "2026-10-24T02:25:44.922061+00:00",
  "repo": "tavily-ai/tavily-mcp",
  "kind": "mcp",
  "source": "https://github.com/tavily-ai/tavily-mcp",
  "commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 114.63550261303317,
  "total_s": 149.86642169952393,
  "steps": [
    "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/sdk@1.31.0 2>&1 | tail -2) && cat > call.mjs <<'EOF'\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nconst [,, tool, argsJson] = process.argv;\nconst t = new StdioClientTransport({ command: 'node', args: ['<guest-path>'], cwd: '<guest-path>', stderr: 'pipe' });\nconst c = new Client({ name: 't', version: '1' });\nawait c.connect(t);\nconst r = await c.callTool({ name: tool, arguments: JSON.parse(argsJson) });\nconsole.log(JSON.stringify(r).slice(0, 1500));\nawait c.close();\nEOF\ntimeout 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'\n{\"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:\"}\nEOF\ncat > claims.json <<'EOF'\n[{\"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>\"}]\nEOF\ncat > examples.json <<'EOF'\n[{\"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\"}]\nEOF\ncat > cycles.json <<'EOF'\n{\"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\":[]}\nEOF\nfor 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\ncd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay; echo rc=$?",
    "cd <guest-path> && cat > report.json <<'EOF'\n{\"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.\"}\nEOF\npython3 -I -c \"import json;json.load(open('report.json'));print('report ok')\"\ncd <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 .coldpass"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Run the Tavily MCP server over stdio and call the tavily_search tool (keyless mode) to get live web search results",
  "suggested_fix": null,
  "tokens_in": 235025,
  "tokens_out": 8203,
  "cost_usd": 0.013107329999999999,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "/tmp/node22/bin/node",
          "build/index.js"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "tavily-mcp",
          "version": "0.2.22"
        },
        "tools": [
          "tavily_search",
          "tavily_extract",
          "tavily_crawl",
          "tavily_map",
          "tavily_research",
          "tavily_feedback"
        ],
        "tool_schema_bytes": 13137,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "Request ID: 2d86c60b-1286-4513-beee-e1523ff7a3e1\nDetailed Results:\n\nTitle: Tavily MCP Server | Awesome MCP Servers\nID: bf8353-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 install`\n\nSet your API key:\n\n`export TAVILY_API_KEY=\"your-api-key-here\"` [...] `pm2-apps.json`\n`{\n\"apps\": [{\n\"name\": \"tavily-mcp-server\",\n\"script\": \"dist/index.js\",\n\"instances\": 1,\n\"exec_mode\": \"fork\",\n\"env\": {\n\"NODE_ENV\": \"production\",\n\"TAVILY_API_KEY\": \"your-api-key\"\n}\n}]\n}`\n\n## Usage with Roo\n\n### Global Installation\n\nAdd to your global MCP settings (`~/.roo/mcp_settings.json`): [...] `~/.roo/mcp_settings.json`\n`{\n\"mcpServers\": {\n\"tavily-search\": {\n\"command\": \"node\",\n\"args\": [\"<host-path>\"],\n\"env\": {\n\"TAVILY_API_KEY\": \"your-api-key-here\"\n}\n}\n}\n}`\n\n### Project-specific Installation\n\nAdd to your project's MCP settings (`.roo/mcp.json`):\n\n`.roo/mcp.json`\n`{\n\"mcpServers\": {\n\"tavily-search\": {\n\"command\": \"node\",\n\"args\": [\"./tavily-mcp-server/dist/index.js\"],\n\"env\": {\n\"TAVILY_API_KEY\": \"your-api-key-here\"\n}\n}\n}\n}`\n\nTitle: Tavily MCP vs Tavily API for AI Agents (2026)\nID: bfec7a-01\nURL: https://www.scalekit.com/blog/tavily-mcp-vs-api\nContent: ### Tavily MCP\n\nThe Tavily MCP server is built and maintained by Tavily. It runs hosted at  over Streamable HTTP, with a local stdio variant available through the tavily-mcp npm package. The current server exposes five tools: tavily\\_search, tavily\\_extract, tavily\\_map, tavily\\_crawl, and tavily\\_research. Tavily's own overview tab and repository README still describe an earlier four-tool set, so treat a live tool listing as the source of truth rather than the prose. [...] Your agent needs live web data. Tavily ships a hosted MCP <email> and a REST <email>, and both give your agent search, extract, map, crawl, and research. The tool names look identical, which is exactly why the choice looks trivial and isn't. The MCP server exposes a narrower parameter surface, no streaming, no usage reporting, and an auth model that resolves to a flat API key no matter which door you walk through. Here's how to pick. [...] Tavily's hosted MCP server exposes five tools that map onto five REST endpoints, but not the full parameter surface. include\\_answer, auto\\_parameters, include\\_usage, and safe\\_search exist on /search and are absent from the MCP tavily\\_search schema.\n\nTitle: GitHub - tavily-ai/tavily-mcp: Production ready MCP server with real-time search, extract, map & crawl. \u00b7 GitHub\nID: 987dce-02\nURL: https://github.com/tavily-ai/tavily-mcp\nContent: GitHub Repo stars npm smithery badge\n\nThe Tavily MCP server provides:\n\n search, extract, map, crawl tools\n Real-time web search capabilities through the tavily-search tool\n Intelligent data extraction from web pages via the tavily-extract tool\n Powerful web mapping tool that creates a structured map of website\n Web crawler that systematically explores websites\n\n### \ud83d\udcda Helpful Resources [...] 1. Run `claude` to start Claude Code\n2. Type `/mcp` to open the MCP server management\n3. Select the Tavily server and complete the authentication process\n\nTip: Add `--scope user` to either command to make the Tavily MCP server available globally across all your projects:\n\n```\n?<>\n```\n\nOnce configured, you'll have access to the Tavily search, extract, map, and crawl tools.\n\n## Connect to Cursor [...] ```\n\"mcpServers\"\"tavily-mcp\" \"command\" \"npx\" \" \" \"args\"\"-y\" \" \"\"tavily-mcp@latest\" \" \" \"env\" \"TAVILY_API_KEY\"\"your-api-key-here\" \" \" \"DEFAULT_PARAMETERS\"\"{\\\"include_images\\\": true, \\\"max_results\\\": 15, \\\"search_depth\\\": \\\"advanced\\\"}\" \" \\\" \\\" \\\" \\\" \\\" \\\" \\\" \\\" \"\n```\n\n## Identifying the End User (Optional)\n\nTitle: Set up Tavily MCP Server - TrueFoundry Docs\nID: 74bb27-03\nURL: https://www.truefoundry.com/docs/ai-gateway/mcp/tavily-mcp-server\nContent: Tavily is an AI-optimized search API built for RAG agents and LLM applications, returning clean, structured results ready to pass straight into a prompt. TrueFoundry provisions it as a TrueFoundry Managed MCP - the platform manages the server URL, auth, scopes and credentials, so your agents can use Tavily without any configuration or infrastructure setup on your end.\n\n## \u200b Using Tavily through the MCP Gateway [...] The TrueFoundry MCP Gateway centralizes access to Tavily - agents connect through one endpoint instead of maintaining separate server configurations per client. As a TrueFoundry Managed MCP, Tavily\u2019s URL, outbound auth, scopes, and credentials are owned and kept current by the platform. When you use Tavily MCP server through the AI Gateway, TrueFoundry provides: [...] ## \u200b Adding Tavily MCP server to TrueFoundry\n\n1\n\nOpen the MCP Server catalog\n\nNavigate to MCP Servers in the TrueFoundry sidebar and click Add new MCP Server. On the next screen, select Connect TrueFoundry Managed MCPs - this opens the catalog of pre-vetted, fully configured MCP servers managed by TrueFoundry.\n\n2\n\nAdd Tavily\n\nFind tavily in the catalogue and click + Add. TrueFoundry provisions the server with no additional configuration and opens the Tavily MCP server detail page.\n\n3\n\nTitle: tavily-search-mcp-server by apappascs | Glama\nID: 30438a-04\nURL: https://glama.ai/mcp/servers/apappascs/tavily-search-mcp-server\nContent: Glama\n\nenesjakozh\n\napappascs\n\n# tavily-search-mcp-server\n\nby apappascs\n\nOverviewSchemaSourceRelated ServersDiscussionsAdmin\n\nThe Tavily Search MCP Server integrates the Tavily Search API to provide optimized web search capabilities for LLMs. [...] mcpA\n\n  ai.llmse\n\n  Public MCP server for the LLM Search Engine\n\n  SearchRAG SystemsDeveloper Tools\n  102\n TavilyA\n\n  io.github.pipeworx-io\n\n  Tavily MCP \u2014 wraps the Tavily API (tavily.com)\n\n  SearchRAG Systems\n  2\n \n\n  greadA\n\n  io.github.NitroRCr\n\n  An MCP server that gives your AI access to the source code and docs of all public github repos\n\n  Version ControlCode AnalysisDocumentation Access\n  5364\n driflyte-mcp-server\n\n  com.driflyte [...] license\n\n  -Not graded\n\n  quality\n\n  D\n\n  maintenance\n\n  MCP server for using various search tools like Tavily API. Planning to support various search tools (i.e. wiki search, searxng, etc)\n ## All-Search MCP Server\n\n  F\n\n  license\n\n  -Not graded\n\n  quality\n\n  D\n\n  maintenance\n\n  An MCP server that enables web search and document retrieval capabilities through Tavily API and LangConnect vector database, supporting AI agents in gathering information for comprehensive report generation.\n\nTitle: Quickstart: connect your AI agent to the web - Tavily Docs\nID: adf095-05\nURL: https://docs.tavily.com\nContent: Click Add to ChatGPT and Codex to open the Tavily plugin, then connect it and sign in to Tavily. To use the MCP server in Codex instead, run the commands above. See the MCP guide for other options.\n\nmcp.json\n\n```\n{{ \"mcpServers\": { \"mcpServers\": { \"tavily\": { \"tavily\": { \"url\": \"  \"url\": \" } } } }}}\n``` [...] Click Add to Kiro and confirm the install, then click Authenticate next to `tavily` under MCP SERVERS in the Kiro panel and sign in to Tavily. For an API key, a local server, the CLI, and examples, see the Kiro guide.\n\n```\ncurl -fsSL  | bash curl -fsSL   |  bash tvly login tvly  login\n```\n\n```\n{{ \"$schema\": \"  \"$schema\": \" \"plugin\": [\"opencode-tavily\"]  \"plugin\": [\"opencode-tavily\"]}}\n``` [...] Click Add to Cursor and sign in to Tavily when Cursor prompts you, or add the server to `~/.cursor/mcp.json` yourself. For the recommended plugin setup, standalone options, and examples, see the Cursor guide.\n\n~/.kiro/settings/mcp.json\n\n```\n{{ \"mcpServers\": { \"mcpServers\": { \"tavily\": { \"tavily\": { \"url\": \"  \"url\": \" } } } }}}\n```\n\nTitle: Web Search MCP Server | Tavily & LangGraph | Full Tutorial With Code\nID: a0b91a-06\nURL: https://www.youtube.com/watch?v=Gyg7OTsO8Zk\nContent: ### Transcript\n[0:00] Hello everyone and welcome back to the channel. In today's tutorial, we will build a langraph agent using tools from\n[0:06] an MCP server. Specifically, we will deploy a Tavi MCP server for web search capabilities and connect it to our\n[0:14] agent. Let's get right into it. So, the first thing we need to do is install the Langchain MCP adapters package. This\n[0:22] package is responsible for the client part of the MCP protocol in Langchain. [...] [4:15] Click enter. And there you go. We have our Tavi MCP server up and running listening on port 8000 with this\n[4:22] endpoint URL. And that's it for the server setup which was the most complicated part of this tutorial. Next,\n[4:29] we move on to the MCP client setup. Here we define this simple config dictionary with the endpoint URL of our server and\n[4:37] streamable HTTP as the transport mechanism. Next, we use this config to instantiate a multi-server MCP client [...] [8:34] today's tutorial. We've seen how to deploy the Tavali MCP server using NPX, how to convert it from standard IO to\n[8:41] streamable HTTP using Super Gateway, and finally, how to plug it to an AI agent using the Langchain MCP adapters\n[8:50] package. More tutorials about MCP and A2A are on the way, so keep an eye on the channel, and don't forget to like\n[8:57] and subscribe if you appreciate the content. See you in the next one. Bye-bye.\n\nTitle: Tavily MCP Server \u2013 Search & Extract Web Content | Top MCPs\nID: a9dbae-07\nURL: https://top-mcps.com/mcp/tavily\nContent: Install the Tavily MCP server for my [client: Claude] at the default config path for that client. Use the exact install snippet published at  (fetch  for the canonical server.json if you can read URLs). Before finishing: 1. Create the required secrets (TAVILY_API_KEY) and put them in the appropriate env block \u2014 do not hard-code them. 2. Restart or reload the client so it picks up the new server. 3. Verify the server is connected (green / running state) and at least one tool is listed. 4. If [...] Tavily doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only \u2014 to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.\n2. 2\n\n   ### Set required secrets\n\n   Set`TAVILY_API_KEY` in your shell environment before launching your MCP client.\n3. 3\n\n   ### Try a minimum working prompt\n\n   Citation-ready research summary [...] ```\n   { \"mcpServers\": { \"tavily\": { \"command\": \"npx\", \"args\": [ \"-y\", \"tavily-mcp\" ], \"env\": { \"TAVILY_API_KEY\": \"<env-ref>\" } } } }\n   ```\n\n   Paste under mcpServers. Fully quit and reopen Claude after editing.\n\n   CLI or .mcp.jsonshell\n\n   ```\n   # export TAVILY_API_KEY=tvly-your_api_key claude mcp add tavily -- npx -y tavily-mcp\n   ```\n\n   Run from your repo. Commit .mcp.json to share with your team.\n\n   .cursor/mcp.jsonjson\n\nTitle: Agents - Tavily Docs\nID: 5b13d8-08\nURL: https://docs.tavily.com/agents\nContent: MCP\n\n```\n# Add the remote server (Claude Code example)# Add the remote server (Claude Code example)claude mcp add tavily-remote-mcp --transport http  claude  mcp  add tavily-remote-mcp --transport  http \n```\n\nCLI\n\n```\npip install tavily-cli pip  install tavily-cli tvly login tvly  login\n```\n\n## \u200b No account? Connect without a key\n\nFor autonomous agents that can\u2019t manage credentials, Tavily offers two no-key paths.\n\n## Keyless [...] ## MCP\n\nMake Tavily available across a team or org \u2014 governed, shared, and reusable, including standardizing it for everyone\u2019s Cursor and Claude Code. Connect the remote server with OAuth or an API key.\n\n## CLI + Skills\n\nAdd Tavily to your own local coding or research session \u2014 for a single developer, not a team-wide rollout. Install the CLI and run `tvly login`.\n\nQuick rules [...] Quick rules\n\n Production app or runtime \u2192 SDK / API.\n Shared across a team or org \u2014 even in Cursor or Claude Code \u2192 MCP.\n Just your own local session \u2192 CLI + Skills.\n Terminal access alone doesn\u2019t make CLI the right fit \u2014 match the choice to where Tavily ultimately needs to run.\n\nConnect Once you\u2019ve picked a path, here\u2019s the one-step setup for each: API\n\nTitle: SOCRadar Launches MCP Server\nID: 8c868a-09\nURL: https://finance.yahoo.com/news/socradar-launches-mcp-server-110000141.html\nContent: NEWARK, Del., July 01, 2025--(BUSINESS WIRE)--SOCRadar, a global leader in extended threat intelligence and cybersecurity, today launched its MCP Server to support its threat intelligence platform. MCP (Model Context Protocol) is a standardized interface that allows AI language models to securely connect with external data sources enabling AI assistants to access real-time information, interact with databases and APIs, and use various services while maintaining proper security boundaries."
            }
          ]
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 14 known vulnerability.",
    "expected": "Reviewed as expected for a test run: resolver address lookups that send no data.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 1,
        "path": "54.147.69.235:443",
        "process_count": 7
      },
      {
        "kind": "known-vulnerability",
        "count": 14,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 7
      }
    ],
    "context": [],
    "limitations": [
      "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."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=tavily-ai--tavily-mcp-claude-haiku-5-5-1792808595055608888",
    "evidence_file": "/data/safety/tavily-ai--tavily-mcp-claude-haiku-5-5-1792808595055608888.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 12,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0",
    "url": "https://github.com/tavily-ai/tavily-mcp"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 12,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/tavily-ai/tavily-mcp",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "both",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "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.",
      "evidence": "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.",
      "command": ""
    }
  ],
  "claims": [
    {
      "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": "{\"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\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Detailed Results:",
      "evidence": "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",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Repository offline test suite runs and passes",
      "source": "package.json scripts.test",
      "input": "npm test",
      "command": "/tmp/node22/bin/npm test",
      "evidence": "n when a search returns no results\nok 4 - exposes the request ID even when a search returns no results\n  ---\n  duration_ms: 0.069541\n  ...\n# Subtest: formats Extract raw content without a nonexistent search snippet\nok 5 - formats Extract raw content without a nonexistent search snippet\n  ---\n  duration_ms: 0.077136\n  ...\n# Subtest: formats Extract results that have no title or content field\nok 6 - formats Extract results that have no title or content field\n  ---\n  duration_ms: 0.101903\n  ...\n1..6\n# tests 6\n# suites 0\n# pass 6\n# fail 0\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 117.867126",
      "deferred": false,
      "expected": "6 tests pass, 0 fail",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-15T21:37:09Z",
    "commits_90d": 27,
    "merged_prs_90d": 11,
    "open_issues": 41,
    "open_prs": 23,
    "reply_share": 0.0,
    "reply_threads": 34,
    "median_reply_hours": null,
    "last_release_at": null,
    "archived": false,
    "verdict": "slow",
    "note": "slow: last commit 8 days ago; 27 commits and 11 merged PRs in 90 days; 41 open issues, 23 open PRs; 0 of 34 recent threads got a maintainer reply; no releases"
  },
  "maintenance_verdict": "slow",
  "maintenance_note": "slow: last commit 8 days ago; 27 commits and 11 merged PRs in 90 days; 41 open issues, 23 open PRs; 0 of 34 recent threads got a maintainer reply; no releases",
  "maintained": "active",
  "maintained_note": "last commit 1 days ago; 11 open issues, 5 answered or closed",
  "last_commit_at": "2026-10-22T05:48:57Z",
  "last_release_at": null,
  "open_issues": 11,
  "answered_issues": 5,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": {
    "tool_count": 6,
    "schema_bytes": 13137,
    "tokens_approx": 3285,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-24T02:25:44.922061+00:00",
  "tested_commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "tavily-ai/tavily-mcp",
    "source": "https://github.com/tavily-ai/tavily-mcp",
    "commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "688b0f78d518d507cb31b94d9cc0e44c6eadd7c0",
      "url": "https://github.com/tavily-ai/tavily-mcp"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Run the Tavily MCP server over stdio and call the tavily_search tool (keyless mode) to get live web search results",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": null,
  "report_url": "/reports/tavily-ai--tavily-mcp-claude-haiku-5-5-1792808595055608888.json"
}
