System Tools#
As of 0.9.7 system tools require you to allow them via session properties in the configuration file. Otherwise they are not enabled.
Enkaidu includes a small number of system-level tools that, when allowed, are intended to provide the models with dynamic control over how agentic work is done.
- For complex tasks, you can ask a model to use an agent to reduce the impact on the context window, especially when using small models.
- A model can also query and install tools without you having to pre-load them all the team. Caveat: tool calling models really want to call tools and the idea of installing before using a tool is not well represented in many models’ latent spaces.
Each tool is described below, including its purpose, parameters, and usage notes.
Portions generated byAICaveats#
Some local models don’t seem to be able to make good judgement calls about when to spawn an agent. If you’ve allowed sub-agents, try appending Use an agent to your prompt to guide the model.
Similarly, if you’ve allowed tool discovery, append “install tools you need” if you find the model isn’t able to install tools it needs after getting the list of installable tools.
Tool Discovery#
Tool discovery must be allowed by enabling the session configuration allow_tool_discovery.
install_tools#
Install one or more tools from the list of installable tools. Tool names are unique across toolsets.
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
tools |
List of strings | Yes | List of one or more tools to install so they are available to call afterwards |
Notes#
- The user must confirm the installation before the tools are loaded.
- Installation is performed across toolsets, and the function returns a JSON payload indicating success or partial success.
list_installable_tools#
Obtain a list of available tools that you can install. Use the list to determine the tools that will help with your task. IMPORTANT: YOU MUST install a tool from this list BEFORE you can call it.
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) | — | — | — |
Notes#
- The response includes the catalog of installable tools and a reminder about installing them prior to use.
Sub-Agents#
Use of sub-agents must be allowed by enabling the session configuration allow_sub_agents.
spawn_agent#
Run a prompt in a completely fresh, isolated context window and receive the result as [query, response]. Ideal for consuming large amounts of tokens, handling self‑contained tasks, or avoiding context pollution.
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt |
String | Yes | The full instruction for the sub‑agent; be explicit, especially when not including history. |
include_caller_history |
Boolean | No | Set to true only when the task requires awareness of the current session (e.g., summarizing, continuing a thread). Defaults to false. |
Notes#
- The tool spawns a temporary session, executes the prompt, and returns the query‑response pair. It is useful for multi‑step research or large codebase analysis.
In-memory global state#
As of 0.9.10Use of in-memory global state via tool calling must be allowed by enabling the session configuration allow_global_state.
get_global_state#
Get the values for one or more keys within a namespace in the global state available across sessions and turns, including the monotonically increasing revision number for the namespace
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
namespace |
String | Yes | A namespace is a container of key/value pairs |
keys |
Array of Strings | Yes | An array of one or more keys for which to retrieve the values. Unknown keys will return a null value. |
set_global_state#
Set (or update) the value for one or more keys within a namespace in the global state available across sessions and turns.
A monotonically increasing revision counter per namespace is updated for every change to a key in that namespace.
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
namespace |
String | Yes | A namespace is a container of key/value pairs |
keys |
Array of Strings | Yes | An array of one or more keys with corresponding value entries in the values parameter |
values |
Array of Strings | Yes | An array of one or more values corresponding to entries in ‘keys’ parameter |