Tools
Tools extend what agents can do. Octavus supports multiple types:
- External Tools — Defined in the protocol, implemented in your backend (this page)
- Provider Tools — Built-in tools executed server-side by the provider (e.g., Anthropic's web search)
- Skills — Code execution and knowledge packages (see Skills)
This page covers external tools. For provider tools, see Provider Options. For code execution capabilities, see Skills.
External Tools
External tools are defined in the tools: section and implemented in your backend.
Defining Tools
Tool Fields
| Field | Required | Description |
|---|---|---|
description | Yes | What the tool does (shown to LLM and optionally user) |
display | No | How to show in UI: hidden, name, description, stream |
parameters | No | Input parameters the tool accepts |
Display Modes
| Mode | Behavior |
|---|---|
hidden | Tool runs silently, user doesn't see it |
name | Shows tool name while executing |
description | Shows description while executing (default) |
stream | Streams tool progress if available |
Parameters
Parameter Fields
| Field | Required | Description |
|---|---|---|
type | Yes | Data type: string, number, boolean, unknown |
description | No | Describes what this parameter is for |
optional | No | If true, parameter is not required (default: false) |
Optional Parameters
Parameters are required by default. Use optional: true to make a parameter optional:
Making Tools Available
Tools defined in tools: are available. To make them usable by the LLM, add them to agent.tools:
Tool Invocation Modes
LLM-Decided (Agentic)
The LLM decides when to call tools based on the conversation:
Deterministic (Block-Based)
Force tool calls at specific points in the handler:
Tool Results
In Prompts
Tool results are stored in variables. Reference the variable in prompts:
When the TICKET variable contains an object, it's automatically serialized as JSON in the prompt:
Note: Variables use {{VARIABLE_NAME}} syntax with UPPERCASE_SNAKE_CASE. Dot notation (like {{TICKET.ticketId}}) is not supported. Objects are automatically JSON-serialized.
In Variables
Store tool results for later use:
Implementing Tools
Tools are implemented in your backend: