Tables & data
Define structured tables and manage their rows from chat. These scenarios use the table functions.
Reading flow:
table-read(schema + views) →table-read-rows(a page of rows) ortable-value-counts(counts per column value) →table-read-row(one row). Writing flow:table-row-create/table-row-update→table-read-rowto confirm. Filters: TableRecordFilter.
Create a table and define its columns
Goal — Create a table, then describe its row shape and metadata.
Example prompt
"Create a table Tasks. … Give it columns
title(text, required) andstatus(text), and set the description to 'project task tracker'."
Functions used
table-create— creates the table (with or without an initialschema).folder-list— finds the table id (t_…).table-update-interface— sets theschemaanddescription.table-read— reads back the schema to confirm.
What you get — A table with a defined JSON Schema, ready for rows.
You can also pass the full
schemadirectly ontable-createin one step, e.g.{"type":"object","properties":{"title":{"type":"string"},"status":{"type":"string"}},"required":["title"]}.
Add a row, verify it, then update it
Goal — Insert a record, confirm it persisted, and change a field later.
Example prompt
"Add a task titled 'Onboard new hire' with status 'open'. … Confirm it saved. … Now mark it 'done'."
Functions used
folder-list— finds the table id.table-row-create— inserts\{ title: "Onboard new hire", status: "open" \}; returns arecordId.table-read-row— reads thatrecordIdto confirm persistence.table-row-update— merges\{ status: "done" \}into the row.table-read-row— confirms the update.
What you get — A row created, verified, updated, and verified again — addressed throughout by its __record_id.
Browse and filter rows
Goal — Review what's in a large table without loading everything.
Example prompt
"Show me the first 20 open tasks, sorted by title."
Functions used
table-read— fetches the schema and any saved views.table-read-rows— pages through rows withpageSize: 20, afilteronstatus = open(or a savedviewId), andsortBy: "title".
What you get — A paginated slice of rows plus pagination metadata (totalRows, hasNextPage), so you can ask for the next page when needed.
Example filter:
\{ "field": "status", "op": "eq", "value": "open" \}or shorthand\{ "status": "open" \}.
Create a saved view for open rows
Goal — Persist a reusable filter (and optional column layout) so later reads can pass viewId instead of repeating the filter.
Example prompt
"On the Tasks table, create a view Open that only shows rows where status is open."
Functions used
table-create— creates the table with astatuscolumn (or use an existing table).table-read— confirms schema and lists existing views.table-view-create— saves the view, e.g.filter: \{ "field": "status", "op": "eq", "value": "open" \}.table-read— confirms the newviewIdappears underviews.
What you get — A saved view you can pass to table-read-rows or table-value-counts via viewId.
Rank or summarize by column value
Goal — Answer "how many per X" or "which X has the most rows" without loading every row.
Example prompt
"On Contracts, which seller has the most rows? Break down counts by
VerkaeuferNr."
Functions used
table-read— loads schema socolumnis a real property name.table-value-counts—column: "VerkaeuferNr"; returnsgroupssorted by count andtopGroupfor the leader.
What you get — Up to 100 distinct values with counts. Add filter or viewId when the question is scoped (e.g. only contracts ending next week).
Prefer
table-value-countsover pagingtable-read-rowsfor distributions and rankings. Usetable-read-rowswhen you need actual row payloads or to edit specific records.