Use this file to discover all available pages before exploring further.
Tavily gives AI applications access to real-time web search, extraction, research, and crawling. In a Gradium voice agent, Tavily acts as the web context layer: the user speaks a request, the agent turns it into a structured search, Tavily returns current web results, and Gradium speaks the answer back.
Tavily
Explore Tavily’s web search and research APIs.
Paris rental voice agent
See a Gradbot demo that uses voice AI to search for Paris rentals.
The user asks a spoken question, such as “Find two-bedroom rentals near Canal Saint-Martin under 2,500 euros.”
Gradium Speech-to-Text transcribes the request in real time.
Your agent decides whether it needs fresh web context and calls Tavily with a focused query.
Tavily returns search results and source content for the agent to inspect.
The agent filters, compares, and summarizes the results.
Gradium Text-to-Speech streams the answer back to the user.
This pattern lets users control web search without typing. They can refine the search conversationally, ask for tradeoffs, compare sources, or narrow results by criteria like budget, neighborhood, date, availability, or ranking.
The Gradbot demo exposes search as a voice-agent tool. Gradium handles the live STT and TTS session; the agent decides when to call run_apartment_search.
gradbot.ToolDef( name="run_apartment_search", description=( "Run a fresh apartment search and return top matches. " "Call only when the user explicitly asks to search." ), parameters_json=json.dumps({ "type": "object", "properties": { "max_results": {"type": "integer"}, "allow_unconfirmed_profile": {"type": "boolean"}, }, "required": [], }),)
When the model calls the tool, the voice handler routes it into the same search logic used by the REST API and sends a compact result back to the agent before it speaks.
async def on_tool_call(handle, input_handle, websocket): if handle.name == "run_apartment_search": result = await assistant_tools.run_apartment_search( db, user_id, max_results=int((handle.args or {}).get("max_results") or 10), allow_unconfirmed_profile=bool( (handle.args or {}).get("allow_unconfirmed_profile") ), ) await handle.send_json(_voice_summarize_search(result))
The shared search logic eventually calls Tavily with the focused query built from the user’s confirmed profile.
The Paris rental voice agent shows how a Gradbot application can combine a spoken interface with web search. Use it as a reference for the agent loop: listen to the user, call a web search tool, reason over the results, and respond with speech.