Helpers the model can call mid-answer — web search, web fetch, the date, a picture, a stronger model, a smaller one — run for you and billed in DA.
A server tool — a helper — is a tool the model reaches for mid-answer, and that runs for you: your code does not execute it. You name the helpers in tools, beside your own functions, and the model decides whether to call them, and how often.
| Server tools | Plugins | Your own functions | |
|---|---|---|---|
| Who decides to use it | the model | always runs | the model |
| Who runs it | OpenDunes | OpenDunes | your application |
| How often | 0 to N times per request | once per request | 0 to N times per request |
| Named in | tools, as opendunes:<name> | plugins | tools, as function |
curl https://opendunes.com/v1/chat/completions \
-H "Authorization: Bearer $OPENDUNES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [{ "role": "user", "content": "What does an iPhone 16 cost in Algiers this week?" }],
"tools": [
{ "type": "opendunes:web_search" },
{ "type": "opendunes:datetime" }
]
}'The answer's choices[0].message.content is the model's answer after it has used the helpers. Helpers work beside your own functions in the same tools array; the model may call either.
| Helper | Type | Does | Bills on |
|---|---|---|---|
| Web Search | opendunes:web_search | searches the web | DA per search |
| Web Fetch | opendunes:web_fetch | reads one page | DA per page read |
| Datetime | opendunes:datetime | gives the current date and time | tokens only |
| Image Generation | opendunes:image_generation | draws a picture | the picture model's meter |
| Apply Patch | opendunes:apply_patch | proposes edits to a file | tokens only |
| Advisor | opendunes:advisor | consults a stronger model | that model's tokens |
| Subagent | opendunes:subagent | hands a task to a smaller model | that model's tokens |
| Shell | opendunes:shell | runs commands in a sandbox | DA per second of sandbox |
| Bash | opendunes:bash | runs commands in a sandbox, the Anthropic way | DA per second of sandbox |
| Tool search | opendunes:tool_search | loads your own tools when the model needs them | tokens only |
| Model search | opendunes:experimental__search_models | searches the catalogue | tokens only |
Most helpers work on all three text routes. Four do not:
| Helper | Works on |
|---|---|
opendunes:shell · opendunes:tool_search | /v1/responses and /v1/messages |
opendunes:bash | /v1/messages |
opendunes:apply_patch | /v1/responses |
Named on another route, they answer 400 and nothing runs. Files a shell or bash helper leaves in its sandbox are read at /v1/containers.
A request runs at most 30 helper steps; each helper call is one step.
| Field | Does |
|---|---|
max_tool_calls | lowers the 30 — from 1 to 30; a higher value is a 400 |
stop_server_tools_when | ends the steps on a condition you set |
Both sit beside messages and tools in the request body.
Every helper call is billed in DA, on the meter its table names, and it is part of the request's usage.cost. A model's price per search is on its endpoints, as pricing.web_search. An engine billed to an account of your own elsewhere is not offered: naming it answers 400.