Web search

Cura 1T can pull live information from the web with the built-in $web_search tool. The Cura platform runs the search for you — there is no search backend to host and nothing to execute on your side.

Cura 1T is a research model, not a medical service, and not a substitute for a clinician. Benchmark scores do not establish safety for unsupervised clinical use.

Enable it

Add a single built-in tool to your request. Unlike a custom function it needs no schema — just the type builtin_function and the reserved name $web_search. The tool runs outside the model's own reasoning, so disable thinking mode on the search turn.

Python
import jsonimport osfrom openai import OpenAI client = OpenAI(api_key=os.environ["ACTAVA_API_KEY"], base_url="https://inference.actava.ai/v1") tools = [{"type": "builtin_function", "function": {"name": "$web_search"}}] messages = [    {"role": "user", "content": "Who won the most recent F1 race, and when?"}] while True:    response = client.chat.completions.create(        model="actava/cura-soar",        messages=messages,        tools=tools,        # The built-in tool runs outside the model's own reasoning; disable        # thinking mode for the search turn.        extra_body={"thinking": {"type": "disabled"}},    )    message = response.choices[0].message    messages.append(message)     if not message.tool_calls:        print(message.content)        break     # $web_search is executed by the Cura platform, not by you. Echo each call    # back as a tool result — the platform runs the search and feeds the    # results to the model on the next turn.    for call in message.tool_calls:        messages.append(            {                "role": "tool",                "tool_call_id": call.id,                "name": "$web_search",                "content": call.function.arguments,  # relay verbatim; do not execute            }        )

The flow

When the model decides to search, it responds with a $web_search tool call carrying the query it chose:

JSON
{  "role": "assistant",  "content": "",  "tool_calls": [    {      "id": "functions.$web_search:0",      "type": "function",      "function": { "name": "$web_search", "arguments": "{\"query\": \"most recent F1 race winner\"}" }    }  ]}

You don't execute anything — append the assistant message and a tool-role message echoing the call's arguments back, then call the API again. The platform runs the search, injects the results, and the model replies grounded in what it found (finish_reason: stop). Keep the assistant message that carries the tool call in your history — dropping it is the usual cause of "tool_call_id not found" errors.

Notes

  • Tokens: search results are added to the prompt on the turn that consumes them, so they count as input tokens in usage.prompt_tokens.
  • No schema: the built-in takes only type and name. The $ prefix is reserved for platform-executed tools.
  • Verify results: web results are third-party and unvetted. Cura 1T is a research model, not a medical service, and not a substitute for a clinician — confirm anything clinical before acting on it.