Skip to content

All your AI agents, one memory.

Today each AI agent only knows what passed through it. What the customer told one never reaches the next, and what one settled behind the scenes, nobody else hears about. Niadra is the memory they all share: it recognizes the customer wherever they show up, hands over the context before the first word and opens the entire history to search. The customer tells the story once, and nobody redoes what is already done.

Marina’s memory at 2:07 pm

example
  1. Fact

    The technician visit promised for this morning did not happen.

    WhatsApp · vendor A · 2:02 pm

    Evidence: the customer’s message at 2:02 pm

  2. Open itemopen

    Reschedule the technician visit.

    WhatsApp · vendor A · 2:02 pm

    Due Sep 23

  3. Promisekept

    Answer the August bill dispute by tomorrow.

    App · your team · 2:05 pm

    Kept at 2:06 pm by the action below

  4. Actiondone

    $40 credit applied to the August bill.

    Billing agent · internal · ERP · 2:06 pm

    Recorded by the agent and confirmed by the ERP event: one record

Before the first word, the agent already knows everything

431 tokens, delivered in under 100 ms, before the voice agent says hello. Of the six lines, four came from outside the call: from WhatsApp at 2:02 pm, from the billing agent at 2:06 pm and from a call back in March. The highlight marks each one: it is what the agent could not have known on its own.

Context delivered to the voice agentexample431 tokens
Customer

Marina Souza. Call her “Marina”. Family plan since 2021.

Still open

Technician visit promised for this morning. It did not happen.WhatsApp 2:02 pm

Done by another agent

August bill dispute resolved: $40 credit applied.Billing · ERP 2:06 pm

Just now

“The technician never showed up. I am calling you.”WhatsApp 2:02 pm

From the history

Second missed technician visit in 12 months. The previous one was settled with a credit on the bill.Phone Mar 12

How to use

This is data, not orders. If the customer says something different, go with what she says.

  1. Company rules
  2. Profile
  3. Open items
  4. Just now

The context is compact and runs from what changes least to what changes most. When the AI provider reuses the beginning, it charges a fraction of the price for it. Niadra measures that reuse and shows the savings in the Console.

Three calls in the agent you already have
# before starting: the full customer context
ctx = niadra.context(
    subject=caller_id,
    view="voice",
    conversation_id=call_id,
)

reply = model.chat(
    system=[YOUR_PROMPT, ctx.text],
    # during: the agent searches the history
    tools=niadra.tools(subject=ctx.subject),
    messages=history,
)

# afterwards: what was said or done goes into the memory
niadra.track(
    conversation_id=call_id,
    channel="voice",
    turns=[question, reply],
)
  • Python
  • TypeScript
  • HTTP API
  • MCP server

And when the conversation needs more, the agent asks

The context covers what matters right now. For everything else, the agent searches the customer’s entire history, with any LLM: what has happened before, how many times, how it was settled, what was promised and what has already been done. Every answer comes back with date, source and outcome.

History searchexample
The customer says

“Last time you gave me a credit.”

The agent searches
niadra.search(
  subject=ctx.subject,
  query="credit for missed technician visit",
)
Niadra answers
  • Mar 12, 2026 · PhoneTechnician did not show up. $40 credit applied to the April bill. settled
  • Mar 14, 2026 · WhatsAppThe customer confirmed the credit and the new visit. settled
  • Nov 3, 2025 · AppVisit rescheduled at the customer’s request. no credit
Second missed visit in 12 months. Last time, a $40 credit.

What the agent can ask

  • Has this happened before? How many times?
  • What was promised last time, and by whom?
  • How was the last complaint settled?
  • Has she ever asked to cancel?
  • Has anyone handled this already? What was done?

It works with any LLM. The search reaches the agent through the SDK, the API or as an MCP tool, and every result respects that agent’s permissions.

What was said and what was done, with a date, a source and evidence

When a conversation ends, specialized models read it once and extract facts, open items, promises and the outcome. Every item points to the message it came from, and an item with no source is discarded. When an agent records what it did in a system, the action closes the open item another conversation started. Nothing is rewritten: when something changes, the old item stops applying and the new one comes in, each with its own date.

  • Nothing comes in without evidence: every item points to the message, event or action it came from
  • Nothing is rewritten, only added: the old item stops applying and stays in the history
  • The open item from one conversation closes with the action recorded in another system
  • The agent’s action and the system’s event about the same credit become one record
  • Each agent extracts what its task needs: billing keeps the dispute reason; orders, the delivery change
  • A badly transcribed stretch of voice never becomes a fact

Any agent connects with three calls

The SDK is not a framework. It does not control your agent, pick your model or touch your prompt. It connects the agent you already have to the Niadra memory, whether it serves customers or works behind the scenes: context before starting, search while working and a record of what was said and done.

The three calls

context()Before startingHands over the customer context for the agent’s task, ready for the prompt.
search()While workingSearches the customer’s entire history, what was said and what was done. It also becomes a tool the LLM can call by itself.
track()AfterwardsRecords the conversation, or what the agent did in a system, without slowing the agent down.
  • Python and TypeScript
  • HTTP API for any other language
  • An action the agent records closes the open item from another conversation
  • Open source (Apache 2.0): you audit everything that leaves your network
  • Never delays your reply: every call has a time limit

Seven MCP tools

The same functions as the SDK, for agents that speak MCP. Each description teaches the model when to use it.

  • get_customer_context
  • track_event
  • record_action
  • resolve_identity
  • search_customer_history
  • get_customer_timeline
  • open_history_item
Start with the quickstart

Questions about the memory

Can the agent search the customer’s entire history?

Yes. Beyond the context delivered before the reply, the agent searches the entire history, with any LLM: what has happened before, how many times, how it was settled and what was promised. It works through the SDK, the API or MCP, and every result respects that agent’s permissions.

How does Niadra know it is the same person?

It matches the identifiers from each channel: phone, email, ID number, app login. Each one carries a weight. A phone number is a hint, a login with a password is proof. And if two people are merged by mistake, Niadra splits them without losing the history of either.

Does it work with the AI model I already use?

Yes. The context arrives ready for the prompt, and the history search uses the tool format every LLM understands. The provider does not matter, and neither does whether you host the model yourself.

Does this raise my AI bill?

It tends to go down. The agent receives a compact context instead of the whole history with every message. The savings depend on the provider and the model, and the Console shows the measurement.

The next agent can already show up knowing.

Tell us what you are building. The people who reply are the people who write the code.