AI agents

Agents you can trace, budget and interrupt.

An agent node that works a support ticket or a document through its tools, keeps memory, and returns structured output the next step can read. Hosted models from Anthropic, OpenAI, Google and DeepSeek, a human approval where the risk is, and budgets you configure and monitor from one ledger.

Example

A support agent, from ticket to approved reply.

A ticket arrives. The agent looks up the order, checks the refund policy, and returns typed fields instead of prose. The refund waits for a person; if nobody answers in time, the run takes the fallback you set.

Agent run · support-agent · exampleWAITING ON A PERSONTRIGGERNew ticketAI.AGENT · TOOL LOOPThinkCall toolObserveuntil done or max iterationsTOOLSget_order · httprefund_policy · workflowMEMORYconversation window · by ticketSTRUCTURED OUTPUTintent: "refund"order: "SAMPLE-1042"amount: 84.00needs_approval: trueHUMAN.PROMPTApprove refund?timeout: 4 hon timeout: escalateBudget checked before each model call · actual tokens and USD reconciled after
A support agent’s run: tool loop, memory, structured output and the approval it waits on. Illustration with sample data.
Agent node

Tools, memory and structured output, with a trace.

The agent node takes a goal, a model and a list of tools. It loops through think → call → observe until it is done or reaches the iteration limit you set, and every iteration is written to the run’s trace.

builtin
Think, calculate, current time, structured recall.
HTTP
A REST endpoint, with a saved connection for auth.
node
A node type from the catalog, exposed as a callable tool.
code
A Python function the agent can invoke with arguments.
workflow
A published workflow. The agent sees its input schema as the tool signature.
MCP
A remote Model Context Protocol server and the tools it lists.

Memory

Per run by default, or a stored conversation window that carries across runs for the same conversation key, such as a ticket or a document id.

Structured output

Declare a JSON schema and the node checks the model’s reply against it, so the next step reads typed fields such as intent, amount or invoice total.

AGENT TRACE · SAMPLE RUN
4 iterations
  1. 1builtin.thinkplan: look up the order, check the refund policy1,204 tok · 812 ms · $0.0041
  2. 2http.get_orderorder SAMPLE-1042 · delivered 2 days ago388 tok · 1,290 ms · $0.0013
  3. 3workflow.refund_policyrefund window 14 days · eligible961 tok · 640 ms · $0.0032
  4. 4outputintent refund · needs_approval true142 tok · 0 ms · $0.0005
state: waiting for approval2,695 tok · 2,742 ms · $0.0091

Sample trace with synthetic figures.

The AI support agent with order lookup template: a webhook hands the message to the agent, the agent works through its tools, and the reply goes out through mail.send.
Models

Hosted models from Anthropic, OpenAI, Google and DeepSeek.

Connect a provider with your own key, pick a model per node, or set a default for the workspace. New agent, classify and extract nodes inherit the default; any node can override it.

  • Anthropic
  • OpenAI
  • Google
  • DeepSeek

Source: coax-backend AI vendor factory · checked 2026-09-27.

Human approval

A person decides before the risky step, with a timeout and a fallback.

Put a human.prompt node after the agent, or give the agent one as a tool. The run pauses and shows the approver the payload: the refund, the extracted invoice, the message about to go out.

Configured per step

You choose which steps need a person, who can approve, and what they see. Steps without an approval node run without one.

Timeout

Each approval step carries a timeout you set, so a paused run does not wait indefinitely for an answer.

Fallback

When the timeout passes, the run follows the fallback path you configured on the step, for example rejecting the request or escalating it to someone else.

Budgets

Configure a budget, then watch spend against it.

AI spend is recorded per model call in tokens and in USD. Budgets are checked before a call and reconciled after it, so you can see where spend is going while a month is still running.

  1. 1

    Configure

    Set a monthly token and USD budget for the workspace and per provider; on Embedded, per tenant as well.

  2. 2

    Check before the call

    Before each model call the router estimates its cost and compares it with what is left. A call the budget cannot cover is not sent, and the run takes the path you configured.

  3. 3

    Reconcile after the call

    When the provider answers, the actual tokens and USD it reports are written to the ledger and replace the estimate.

  4. 4

    Monitor

    Spend against budget, by provider and by workflow, from the same ledger the trace reads.

The pre-call check works from an estimate. A reply can use more or fewer tokens than estimated, so the reconciled total can differ from the estimate and a budget is a limit you monitor, not an exact ceiling; the ledger shows the actual figure. When a budget is used up or a provider keeps failing, a circuit breaker holds further calls to that provider with a clear reason.

RAG

Retrieval as three nodes and a vector store.

Load documents, chunk them, embed them, and write them to a vector store. Query the same store from an agent tool or a dedicated search node.

  1. ai.load→
  2. ai.chunk→
  3. ai.embed
  4. →
  5. vector store

Loaders cover files, URLs and the data nodes in the catalog. Chunking is size- or structure-based. Embeddings use a model from a connected provider.

MCP

Model Context Protocol in both directions.

Your workflows become tools for the MCP clients your team already uses, and your agents can call an MCP server you point them at.

MCP server

Every published workflow is a tool.

The workspace exposes a Streamable HTTP MCP endpoint. An MCP client lists your published workflows with their input schemas. The client calls the tool; OCNORA runs the workflow under the caller’s API key, with the same budgets, permissions and audit log.

MCP client

Agents call external MCP servers.

Add an MCP server as a tool of kind mcp and the agent sees the tools it publishes. Calls appear in the trace like any other tool call, with tokens, latency and cost.

Build with AI

Describe the workflow. Review the graph it drafts.

Type what you want in plain language. The builder plans the workflow, maps each requirement to real node types, generates the graph, and runs it through the validator, repairing what it can and reporting what it cannot.

  1. 1. plan
  2. 2. node plan
  3. 3. coverage matrix
  4. 4. generate
  5. 5. validate
  6. 6. repair
  7. 7. lint
  8. 8. layout

Coverage matrix

Each requirement in your description is mapped to the node that satisfies it. Anything unmapped is reported, not silently dropped.

Validation report

The result is marked VALID, INVALID or NEEDS_CLARIFICATION. The last one comes with the question the builder needs you to answer.

Same checks as hand-built workflows

Generated workflows go through the same static validation, pre-flight and dry run as hand-built ones, and you review the draft before it is published.

See an agent run inside a workflow.

In a technical demo we start from the support-agent example, set a budget, add a human approval with a timeout, and read the trace of the first run with you.