Skip to main content
Enable the standard toolbox — the shipped default tools and their wrapper and transformer extensions — from a manifest. The standard toolbox is a batteries-included default set of generic tools and tool extensions. Nothing loads automatically — you opt in per module by naming it in the manifest, exactly like your own code. The tools are self-contained utilities; the extensions are the live demonstration of the clip-on-powers model — memoize, batch, proxy, chain, and meter any tool.

When to reach for it

  • A tool from the toolbox gives you a ready-made capability — the current time as a structured object, a random UUID, an HTTP request, embedding vectors.
  • An extension from the toolbox clips a power onto an existing tool without changing it — cache memoizes results, batch fans one tool over many inputs, chain pipes one tool’s output into another, output_schema forces a tool’s output to a JSON Schema, proxy routes its connections through a forward proxy, prometheus_metrics meters it.

Enable the modules

Load a tool module under tools[].module and an extension module under extensions_modules. Import paths are the module names; the base install stays light, and each heavier module is gated behind an optional dependency that fails loudly at import if missing.
manifest.yml
With an extension loaded, attach it to a tool through that tool’s extensions map or tai tools apply — see Apply an extension.

Run a tool with --kw

Run any registered tool synchronously with tai tools run <name>. Pass its arguments as repeatable --kw key=value pairs — each value is parsed as JSON, falling back to the literal string — or as one JSON object with --kwargs:
examples/toolbox/run_tool_kw.sh
The tools that take no arguments run bare:
The rest take their arguments by name — inspect any tool’s exact input schema with tai tools schema <name>:
The request tool fetches URLs server-side, so it passes tai’s URL guard — private, loopback, and link-local addresses are refused by default. On a self-hosted deployment, reaching a service on the Compose network is an explicit opt-in: see Reaching a service on the Compose network.

Judge state with classify

The classify tool judges JSON state against typed questions and returns typed answers with probabilities — the classifier model type as a tool. It needs the classifier extra (pip install 'tai42-toolbox[classifier]') and a classifier provider configured through LLM_PROVIDER_CLASSIFIER and the CLASSIFIER_* variables. Call it with a state to judge and a named map of questions, one of each kind — a noul (yes/no), a choice (pick one), and a score (rate over a rubric):
The result carries one answer per question, keyed by the question name, each naming its kind in a type discriminator — the noul probability, the choice label with its per-label probabilities, and the score expected value with its per-level distribution — alongside the model, usage, and request_id:
Every answer stays inside what its question declares: one answer per question, of its kind, a choice label from its criteria, and a score within its levels. A response outside them fails the call (see Answers stay inside what the request declares). Pass classifier_provider and classifier_kwargs to override the configured provider and its options for one call. See the classifiers concept for the question kinds and answer shapes in full.

The standard set

The tools and extensions the toolbox ships. This table is generated from the plugin registry, so it never drifts from the package. A preset or hook over the batch or chain branch has its stored kwargs checked at save, like any stored reference. A batch’s params[i] is checked against the extended tool’s own fields, so a missing template id in a field the extended tool types TemplatedText is refused: stored id 'prompts/missing' at tool_kwargs > params[1].system_prompt is not a stored template. A chain’s next_tool_name is judged by the run, while a missing template id in the chain’s own jq_expression is refused at save: stored id 'jq/missing' at tool_kwargs > jq_expression is not a stored template.

Confirm what loaded

The full, always-current list of toolbox tools and extensions — names, kinds, and each item’s description — lives on the toolbox plugin page. Per-tool specifics (formats, session behavior, the extras to install) live in the toolbox package’s own documentation, linked from that page.

See also