Tool availability

DataMind Oda is assembled from parts, and its tools come from those parts: a chat can use only the tools its installation provides. Some tool families are opt-in, and one tool needs a service that not every installation has. This page, for the people who build, ship or debug Oda, covers which tools can be missing, what a missing tool looks like, and the rules that keep tool sets predictable.

A tool that is not mounted never appears

Which tool families are opt-in

Three families are opt-in: they are part of the set only where an installation includes them.

The image read tool needs image storage

Tools that stay and refuse at call time

Not every missing capability shows up as a missing tool. Some tools are kept in place and report at call time instead.

When the offered set is decided

There is no compact tool

Questions, answered

Why is a tool present in one installation and missing in another?

Tool sets are a property of the installation: a tool whose part is not loaded is not offered at all, so two installations can differ. The opt-in families are the terminal tools, the team tools and the chat-reading tools; the image read tool needs image storage. A call that names a tool the chat cannot use fails as an ordinary error, and the task can continue.

Why do some installations have no terminal tools?

The terminal tools are opt-in: they are part of the set only where the installation includes them. An installation without them shows no terminal tool at all. Terminal tools is the reference for the six.

Does the image read tool change with the model I use?

No. Its shape is route-independent: the same tool for every model. The outcome is decided per call: a read runs only when the exact model answering the chat declares image input, and otherwise it is refused with a message that asks for an image-capable model. Switching the chat to one fixes it.

Why does a missing capability sometimes appear as an error rather than a missing tool?

Two designs, both deliberate. A tool that is not mounted never appears at all. Tools whose provider may be missing are kept in place and report at call time: web search and page reading fail with the call, and a code-navigation query with no provider returns the structured LSP_UNAVAILABLE error, instead of a tool that quietly changes shape.

Why is there no compact tool?

Because compaction is not offered to the model: no model-facing compact tool exists, and the model cannot shorten a chat by calling one. The app compacts a chat on its own, or when you send /compact (Chat compaction).

Why is a field missing from a tool in some installations?

Some support is settled when a tool registers, not at call time. For example, where background sending is off, the send tool registers without its background field, and a call that asks for it anyway is refused (Terminal tools).

What does LSP_UNAVAILABLE mean?

It is the structured error a code-navigation query meets when no provider is registered to serve it. The tool is not removed or reshaped: the refusal comes as this code so a caller can tell it apart. Language servers covers how servers are chosen, installed and limited.

Do web tools change when the search provider changes?

No. Web search and page reading keep provider selection behind their surfaces, so the model-visible schemas stay stable across backend swaps. The tools also stay visible when their provider is missing; the failure appears when a search or a read runs (Web search providers).