See how we ranked #1 on SealQA and SimpleQA, and what shipped in August

IBM CUGA + Tavily: Bringing Reliable Web Search to Enterprise Agents

/Customer3 min read

IBM CUGA + Tavily: Bringing Reliable Web Search to Enterprise Agents

Tavily powers web search in CUGA, IBM’s open-source generalist agent, enabling reliable access to current web information without scraping.

Nicole Gardner

Meet CUGA

The team at IBM Software Innovations Lab built an open-source agent called CUGA, short for Configurable Generalist Agent. The agent acts as a harness rather than a framework, and includes the orchestration loop, tool calling, state management, and self-correction ship assembled, so teams configure them instead of wiring them together. That design took CUGA to the top of AppWorld, a benchmark of 750 tasks across 457 real APIs, and before that, to the top of WebArena. The same agent runs unchanged from a laptop to an IBM Sovereign Core deployment, where data residency and network egress need sign-off.


The challenge: How far can you push a generalist agent?

The team wanted to find out how far a generalist agent could go. They treated CUGA as a boilerplate and decorated it with their own tools, domain knowledge, and prompts, building a gallery of customized agents to see which real enterprise workloads it could carry. Most of those apps needed current information from the open web, but live information doesn’t come free.

The first versions did it the hard way.

“In our initial version without Tavily, you basically end up scraping the page. You use Playwright, work out what is in the DOM, then take the content and stick it into your application.”

Anupama Murthi, Senior Software Engineer
IBM Software Innovation Lab

Every app carried its own version of that process.

Maintenance was the smaller cost, but in a planner-executor agent, a mediocre result isn’t one mediocre answer. Instead, it becomes an input to the next several decisions. The planner reads the snippet, decides whether the sub-goal is met, and picks its next step from what it saw. So, the requirement became whether a result comes back in a form the planner can trust, with no cleanup stage in between.

The solution: Tavily as the search layer

CUGA wires Tavily into two places, finding neither took much code.

Placement 1: Inside the core agent, in four steps:

  1. Added the Tavily Python client to CUGA’s dependency list.
  2. Turned web search on. It ships off by default and switches on with a single setting.
  3. CUGA registers it as a tool called web with one API, /search web, described to the planner the same way an internal REST endpoint is.
  4. The planner calls it, reads what comes back, and decides whether it needs another search before it answers.

The CUGA team found their solution during the third step. They came in ready to design their own search response format and adapt Tavily to it, but found they didn’t need to. The planner treats a live web result the same way it treats any other tool it can call.

“We used Tavily as one of our search tools, and we were able to customize our agent built on CUGA with the help of Tavily. CUGA was our orchestrator, and of course it has an LLM built in it, but Tavily was our tool.”

Anupama Murthi, Senior Software Engineer
IBM Innovation Lab

Placement 2: Behind a shared server, for the app gallery:

The gallery needed the opposite arrangement of the core agent. Two dozen independent apps had to share one search backend without each of them carrying a key. So, using Tavily, a server-side key that runs behind a small MCP server hosted on IBM Code Engine was set up in CUGA. Now, the people cloning those apps never handle a key at all.

Web Researcher shows what both paths buy. The app doesn’t let the model fall back on its own training data. It runs two to four searches on every question and cites a source for every claim. Nothing in between cleans up the results first, because nothing needs to.

Why they’re sticking with Tavily

The IBM Software Innovation Lab team was impressed with Tavily because it removed the scraping layer: Playwright, the DOM, and the job of working out which part of a page was the relevant content.

Four things keep Tavily in place:

  • Content returns the readable part of a page, not the raw one.
  • Every result carries a relevance score, which is critical when you truncate to fit a context budget.
  • The response maps straight onto a tool schema, so there is no adapter to maintain.
  • There is only one dependency, with the key server-side.

That last point is what made web search survivable in a regulated deployment. Search is an app definition behind a flag, not a special path through the code. It makes it so whether an agent reaches the open web is a policy someone approves rather than a line someone edits.

“We advertise CUGA as the best option out there for customers who want their agents to run in air-gapped and sovereign environments. If it’s the enterprise picture, policy and guardrails would be the biggest differentiating factor.”

Hamid Adebayo, Senior Research Scientist and Manager, Agent Platforms and Integrations
IBM

What’s next for CUGA?

CUGA ships Tavily as one of the default tools behind the flag today and the CUGA team is looking to expand its use as more agentic systems are deployed and adoption grows

The team behind CUGA guest wrote a technical breakdown, down to the trace of a planner reading a result and deciding if it needs one more search, check it out here.