pinecallDocs
Key concepts / Overview

Overview

What the agent knows by heart, what it looks up on every turn, and what it remembers about a caller.

An agent can answer from three kinds of information: what it knows by heart, what it looks up on each turn, and what it remembers about the caller. Each one lives in a different place, reaches the model in a different way, and is tested differently.

What is knowledge and memory?#

None of the three is written in your class. All three are kept by the gateway, are part of the agent's settings in sandbox and in production, and change without a deploy.

How they compare#

Knowledge Knowledge base Memory
What it holds one page, small and always relevant many documents, the long tail facts about one caller
Who writes it your team, on the agent's Configure ▸ Knowledge in the console or with pinecall agent knowledge edit; a setting, never a file of the class your team, on the agent's Knowledge ▸ Docs, or pinecall docs push one model call at hang-up, under the policy in Configure ▸ Memory
When the model sees it every turn, in the cached knowledge block each turn, the chunks a search found each turn, the facts recall found
How it arrives part of the prompt a tool_result a tool_result
How you test it goldens and the grounded judge pinecall docs eval pinecall remember and pinecall memory eval

Use knowledge for what every call needs: who the business is, its hours, what the agent may promise. A page is fine; a hundred documents are not. Use a knowledge base for everything too long to read whole. Use memory for what a caller told you that the next call should not ask again.

How it works#

On every turn of a call, while the caller is still speaking, the platform runs two lookups at once:

  • search asks the bases attached to the agent, once the caller has said four words, on a turn that has at least one letter in it. A turn of digits alone (a number being read out) searches nothing.
  • recall asks the caller's memory, when the agent has a memory policy and the platform knows who is on the line.

Both usually finish before the caller stops talking. A lookup that is late is cancelled, and the turn goes on without it. The model then reads what came back as tool results, after the conversation so far:

system:   identity · knowledge · tools        cached, unchanged while the call runs
messages: …the turns…
          assistant tool_use   recall  {…}
          user      tool_result        {"facts":[{"text":"Prefers mornings.","source":"call_8f5a…","since":"2026-09-10"}]}
          assistant tool_use   search  {"query":"how much is a check-up?"}
          user      tool_result        {"chunks":[{"path":"prices.md","heading":"Prices › Check-up","text":"…"}]}

Neither result carries a score. A score means something to the ranking and nothing to the model.

A chunk of a document and a fact remembered from an earlier caller were written by someone other than you. They reach the model as JSON inside a tool_result, never inside the words of your prompt, so a sentence planted in a document cannot speak with your authority. Prompt injection has the whole rule.

What the call's log keeps#

Every lookup is written into the call's log, joined to the turn it served:

entry what it says
docs.sources the query, every chunk with its base, path, heading and score, and how long it took
memory.ops the facts recalled on a turn, and at hang-up what was added or superseded
error search_skipped or recall_skipped when a lookup could not run, remember_failed when memory was not written

The console's Calls screen shows the same thing on each turn, for example search · 3 chunks · 181 ms.

Next steps#