When to use one
Use Custom Data when:- The agent needs to look something up during the conversation — “what’s the price of the Pro plan in the EU?”, “where’s my nearest store?”
- The answer is structured: rows and columns, not prose
- You want exact answers, not the closest-sounding passage
- Prose your agent should paraphrase — policies, FAQs, manuals. Use a knowledge base; it’s built for meaning-based search, and Custom Data is not.
- Live data owned by another system — today’s order status, a live inventory count. Call that system with an HTTP step in a workflow.
- Per-call state — the caller’s name, what they said two turns ago. That’s conversation context.
The line between Custom Data and a knowledge base is shape, not size. “What are your opening hours?” answered from a paragraph is a knowledge base. “What are the opening hours of store 4?” answered from a row is Custom Data.
How it works
1
Define the table
Name it and declare its columns — the name, the type, and which one identifies a row. See Defining a table.
2
Load rows
Paste or drop a CSV, or point a workflow at your source system to keep it current. See Loading rows.
3
Give an agent the tools
The platform generates the lookup and search tools from your column definitions. Copy them into the agent. See Agent tools.
- Stored queries — write SQL when filters aren’t enough. Distance calculations, bucketed totals, anything with arithmetic.
- Claiming rows — hand out one-time values like discount codes, with a guarantee that two simultaneous conversations never get the same one.
An example
A table calledplans:
plan_id is the row key — the column that identifies a row. From that definition the platform generates two tools:
lookup_plans— fetch one row by itsplan_idsearch_plans— filter by any column, sort, and return several rows
search_plans with name = Pro and region = EU, and gets the row back. You wrote no code.
What it is not
Custom Data is deliberately narrow, and it’s worth knowing the edges:- One table at a time. There are no joins. If you need a store’s country name and the country’s tax rate together, put both on the store row.
- Flat columns. Text, numbers, yes/no, dates. No nested objects or lists.
- Agents read; they don’t write. The one exception is claiming a row, which is narrow by design.
- Not a database you connect to. It’s reached through agents, workflows, and the API — there’s no connection string.
Limits
Permissions
Stored queries have their own permission because writing SQL that runs during a live call is a different act from editing reference data — the people who may do one aren’t automatically the people who may do the other.
Next
Defining a table
Columns, types, and choosing a row key.
Loading rows
CSV, JSON, and what replace vs add really do.
Agent tools
The tools generated from your table.
Stored queries
SQL, for when filters aren’t enough.

