Agent With Tool Loop hero
Strongly Certified · Streaming Workflow

Agent With Tool Loop

Voice agent that picks a tool, runs it, and reads the result back.

The agent reads a registered tool catalogue, the LLM picks the tool, the tool-executor calls it through your STRONGLY_SERVICES, the result comes back as voice. No raw URLs in node configs.

Catalogue
Tools registered, not hard-coded
Routed
All calls via STRONGLY_SERVICES
Audited
Tool-call + result on every turn

The voice loop, end-to-end.

No black box. Each step is a typed-frame node you can edit, monitor, and replace.

01

User speaks the request. STT transcribes.

02

The LLM is given the tool catalogue (datasource queries, REST endpoints, internal APIs). It returns a tool call with arguments.

03

streaming-tool-router validates the call against the catalogue. streaming-tool-executor runs it through STRONGLY_SERVICES - never against a raw URL.

04

The result feeds streaming-tool-result-formatter. The formatter shapes it into prose. TTS reads it back.

Built for production. Day Two-ready.

Streaming graph contract, observability, and cost discipline come standard. The agent ships with a full test suite that runs in CI on every node version bump.

Catalogue-driven tools

The tool-router only invokes tools the LLM is allowed to call. The catalogue lives in node config - versioned, reviewable, auditable. No prompt-injected tool names execute.

Allow-listedVersionedReviewable

STRONGLY_SERVICES routing

Every tool call resolves through STRONGLY_SERVICES. The agent never holds a database URL, an API key, or a service hostname directly. Rotation, RBAC, and audit happen at the platform layer.

No raw URLsCentralised authRotatable

Result formatter

The raw tool response (JSON, rows, blobs) goes through streaming-tool-result-formatter. The formatter renders human-readable prose for TTS - and a structured side-channel for downstream nodes.

Prose for TTSStructured side-channelEditable template

Streaming voice loop

STT, LLM, tool-router, tool-executor, formatter, and TTS all run behind the typed-frame contract. The user hears 'looking that up…' before the tool returns.

ConcurrentTyped framesADR-S11

Single-shot today, loop next

The current pattern is single-shot: one tool call per turn. Multi-step loops await runtime cycle support - same graph contract, just unblocked when ADR-S16 cycles ship.

Single-shotADR-S16-readyHonest scope

Live span tree

Tool name, argument shape, latency, and result size land on every span. Find slow tools, broken endpoints, or arg drift in the canvas overlay.

ADR-S14Per-toolArgument trace

Real services. Your stack.

Every dependency is a registered Strongly service or a model you control. Swap any one of them in the install wizard. The graph stays intact.

Tool router
streaming-tool-router - catalogue-validated
Tool executor
streaming-tool-executor - STRONGLY_SERVICES-routed
Formatter
streaming-tool-result-formatter - editable templates
LLM model
Function-calling chat model (gpt-4o default)

Tune it. Don't fork it.

The marketplace template is the graph. Every customisation below is a config change or a single-node addition - never a rewrite.

Add a tool

Drop a new datasource into the workflow's STRONGLY_SERVICES, register it in the tool catalogue, redeploy. The LLM picks it up on the next session.

Restrict callable tools

Per-org or per-role allow-lists in the tool-router config. The same workflow can serve admins (full catalogue) and end-users (read-only subset).

Custom result format

Edit the tool-result-formatter template per tool. Tabular results → 'top three ranked by X'. Single-row results → narrative. Errors → graceful apology.

Caching

Insert streaming-tool-cache between the router and the executor. Repeated calls within the TTL skip the network hop entirely.

Audit-first deploy

Add streaming-conversation-store tagged with tool name and result hash. Compliance teams replay every tool invocation.

Production. Not pilots.

We don't leave until it runs. Talk to a forward-deployed engineer about deploying Agent With Tool Loop into your environment with your STT, your LLM, your TTS, your data.

Schedule a Demo