Tables
Structured data tables scoped to your project — create, query, and manage tabular data that playbooks and agents can read and write.
Tables are structured tabular databases scoped to your project. Use them to store, query, and manage structured data that your playbooks and AI agents can read and write programmatically.
Creating a table
Open the Creation Picker (Cmd+N) and select Table, or use the create_data_store MCP tool from an agent session.
Each table has typed columns. Data is persisted in a per-project SQLite database.
Column types
| Type | Description |
|---|---|
text | Plain text |
number | Numeric values |
date | Date/time values |
bool | True/false |
relation | Foreign key to another table |
Columns also support format sub-types for richer display: email, currency, percent, rating, singleSelect, multiSelect, and rank. Select formats carry options with id, label, and color.
Natural keys
An optional natural key column enables upsert semantics — inserts update existing rows that match the key instead of creating duplicates. This is essential for playbooks that run periodically and need idempotent writes.
Views
Tables support alternate view modes:
- Table — the default spreadsheet-style view.
- Kanban — cards grouped by a
singleSelectcolumn. - Gantt — timeline view using start and end date columns.
Create and manage views via the UI or create_data_store_view / update_data_store_view MCP tools.
Querying data
Use the run_data_query MCP tool to query a table with filters, sorting, and projections. Results are returned as JSON.
Queries can also be embedded directly into notes as live chart/table blocks — the note auto-refreshes when the underlying data changes.
MCP tools
| Tool | Description |
|---|---|
create_data_store | Create a new table |
get_data_store | Get a table's schema and metadata |
list_data_stores | List all tables in the project |
add_data_store_column | Add a column |
update_data_store_column | Modify a column's type or options |
delete_data_store_column | Remove a column |
insert_data_store_rows | Insert or upsert rows |
update_data_store_row | Update a specific row |
update_data_store_rows | Bulk-update rows — a list of per-row changes, or where+set to change every matching row |
delete_data_store_row | Delete a row |
run_data_query | Query with filters, sort, and projection |
create_data_store_view | Create a Kanban or Gantt view |
Playbook integration
Two dedicated playbook step types work with tables:
- writeToStore — upserts rows with natural-key-aware writes. Validates column IDs against the live schema.
- readFromStore — queries with column filters and limits. Returns rows as step output for downstream steps to consume.