Three calls
Every integration comes down to three calls. The agent reads the context before it speaks or acts, searches the history when the conversation asks for more, and tracks what was said or done so every other agent knows it too.conversation() pins the context and captures turns, task() does the same for an internal agent, action() records what an agent did in a system of record, and tools() hands the history search to your LLM as function calls.
What the agent receives
At 2:07 pm Marina calls. She complained on WhatsApp at 2:02 pm, and the billing agent credited her invoice at 2:06 pm. Before the voice agent says hello,context() returns this, with no AI model and, with a warm context, no database statement:
Context Pack
slots, outside the pinned body. The bill dispute (“The August bill was charged twice”) is billing, which the starter policy releases from V2, and it is Marina’s at V1 all the same: she wrote it herself, and the policy hands back to the customer what they said themselves (the mirror); it waits in the reserve, as every complaint fact no conversation in the body says, for the turn in which Marina brings up the bill. A balance the company had stated would stay withheld until an OTP in this call, and the context would say how many items stayed out in withheld. The example is the output of Niadra’s compiler for a synthetic customer, in a new space with the starter policy. The pack is pinned to the conversation, so the next turns get the same bytes and your LLM provider can reuse the cached prompt prefix. What happens on other channels during the call arrives in live, outside the pinned body.
How it works
- Write. The SDK sends events in batches. Niadra stores the raw event before it answers, resolves the customer identity on the spot and makes the turn readable to every other agent in under a second after it reaches the API.
- Read.
context()resolves the handle, filters the memory by your policy and the verification level of the conversation, and returns the pack with an ETag. Each agent’s usual context is prepared ahead of time, and each task’s is ready from its first read on. No LLM and no vector search sit in that path. Every read leaves a receipt. - History.
search(),timeline()andopen()go through everything that happened with that customer, with the same policy, the same verification level and a token budget. The recurrence count (how many complaints about the same topic in the last 90 days) is a count over typed episodes, not a guess. - Systems and internal agents. CRM, ERP and help desk events come in through a webhook, a file batch or the API and become business objects tied to the right customer. What an agent does in a system comes in as an action and closes the open item that asked for it.
- Governance. Your team sees who read what, measures whether each agent used the context it received, gets signed webhooks when a rule of yours fires, and erases or exports a customer’s data through the API.
What each path does
The times measured in the region are on the benchmark.
| Derived memory after the session ends | under 60 s |
Niadra is memory. It never answers the customer, never executes an action in your systems and never orchestrates steps between them. Your agents act with their own credentials; Niadra keeps what they need to remember and what they did.
Next steps
Quickstart
From an API key to the first delivered context.
Context and views
What goes into the pack, in which order, and why.
History navigation
Search, timeline and open, with any LLM.
API reference
Every route, with schemas and examples.

