What are Tools?

Tools are the mechanism by which Contenox gives a model access to real-world actions. Instead of generating text, the model calls a tools to read files, run commands, query APIs, or fire HTTP requests — and gets the result back as context for its next reply.

How it works

Chain starts
  └─ FetchTools: each listed tools returns its tool schemas
       └─ Schemas are sent to the model alongside the prompt
            └─ Model returns a tool call
                 └─ execute_tool_calls runs the tools
                      └─ Result appended to history → model continues

In your chain JSON, specify which tools the task can use via the execute_config.tools allowlist:

"execute_config": {
  "model": "qwen2.5:7b",
  "provider": "ollama",
  "tools": ["local_fs", "nws", "local_shell"]
}

Pattern support:

ValueMeaning
field absentAll registered tools
[]No tools exposed to the model
["*"]All registered tool (explicit)
["a", "b"]Only the named tools
["*", "!plan_manager"]All except plan_manager

Unknown names in an exact list are silently ignored — if local_shell is disabled the chain still runs.

Use {{toolsservice:list}} in your system_instruction to inject the live tool manifest. This macro respects the task's tools allowlist — the model only sees what the task permits:

"system_instruction": "You are a helpful assistant. Available tools: {{toolsservice:list}}."

Template variables

System instructions and prompt_template fields support the following macros:

MacroReturns
{{var:<name>}}Value of the named template variable supplied by the caller
{{now}}Current time in RFC3339 format
{{now:<layout>}}Current time in Go time layout (e.g. {{now:2006-01-02}})
{{chain:id}}ID of the currently executing chain
{{toolsservice:list}}JSON object mapping tools name → array of tool names (respects task tools allowlist)
{{toolsservice:tools}}JSON array of tools names available to the task
{{toolsservice:tools <name>}}JSON array of tool names for a specific tool

Tools types

Contenox ships with built-in local tools and supports unlimited remote tools:

Tools nameTypeAlways availableWhat it does
local_fsLocalRead, write, and search files within a configured directory
webhookLocalCall any HTTP endpoint
local_shellLocalOpt-in (--shell)Run arbitrary shell commands
sshLocalRun a command on a remote host over SSH
plan_managerLocalCreate and drive multi-step plans
plan_summaryLocalPersist plan step results to the local database
printLocalAppend a message to the chat history or return it as a string
echoLocalEcho the input back (useful for debugging chains)
your nameRemoteRegister with contenox tools addAny OpenAPI v3 service

Choosing the right tools

  • local_fs — best for code analysis, file editing, report generation
  • webhook — when the model needs to call a specific URL you control
  • local_shell — full power; use only in trusted, sandboxed environments
  • ssh — run commands on remote machines from within a chain
  • plan_manager + plan_summary — structured multi-step execution with local persistence
  • print / echo — inject messages or inspect task output during development
  • Remote tools — turn any OpenAPI service into an agent tool; ideal for internal APIs, SaaS integrations, and team-shared tools

Further reading