New260+ blocks and 240+ tools are now fully documented
DocumentationReferenceTool IntegrationsCore & Utilities
Tool

Table Tools

Create and manage user-defined data tables inside a Zelaxy workspace.

The Table provider lets a workflow create, query, and mutate structured user-defined data tables that live inside the current Zelaxy workspace. Use these tools whenever a workflow needs durable, schema-backed storage it can read and write across runs (lookups, accumulating records, dedup/upsert, bulk updates), rather than passing data only through block outputs.

Overview

PropertyValue
Providertable
Categoryblocks
AuthNone — these are internal Zelaxy API calls scoped to the workspace via the execution context (_context.workspaceId). No API key, OAuth, or bearer token is configured.

Every Table tool requires a workspaceId from the execution context. This is injected automatically by the executor at runtime, so you do not pass it as a block input. If it is missing, the tools throw Workspace ID is required in execution context.

Operations

OperationTool IDDescription
Query Rowstable_query_rowsQuery rows with filtering, sorting, and pagination
Insert Rowtable_insert_rowInsert a single new row
Upsert Rowtable_upsert_rowInsert or update a row based on unique column constraints
Batch Insert Rowstable_batch_insert_rowsInsert multiple rows in one call
Update Rows by Filtertable_update_rows_by_filterUpdate every row matching a filter
Delete Rows by Filtertable_delete_rows_by_filterDelete every row matching a filter
Update Row by IDtable_update_rowPartial-update a single row by its row ID
Delete Row by IDtable_delete_rowDelete a single row by its row ID
Get Row by IDtable_get_rowRetrieve a single row by its row ID
Get Schematable_get_schemaRetrieve a table's name and column definitions
Create Tabletable_createCreate a new table with a column schema
List Tablestable_listList all tables in the workspace

The Table block UI exposes the first 10 operations (table_query_rows through table_get_schema). table_create and table_list are registered tools but are not selectable as block operations — they are available to agents/tools at the registry level.

Configuration

table_query_rows

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
filterobjectNoFilter conditions using MongoDB-style operators: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $contains
sortobjectNoSort order as {field: "asc" | "desc"}
limitnumberNoMaximum rows to return (default 100, max 1000)
offsetnumberNoNumber of rows to skip (default 0)

table_insert_row

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
dataobjectYesRow data as a JSON object. Must use the data parameter name (not values, row, or fields)

table_upsert_row

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
dataobjectYesRow data to insert or update. If a row with a matching unique field exists it is updated, otherwise inserted. Must use the data parameter name

table_batch_insert_rows

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
rowsarrayYesArray of row data objects (max 1000 rows per batch)

table_update_rows_by_filter

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
filterobjectYesFilter criteria using operators like $eq, $ne, $gt, $lt, $contains, $in, etc.
dataobjectYesFields to update (merged with existing row data)
limitnumberNoMaximum number of rows to update (default: no limit, max 1000)

table_delete_rows_by_filter

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
filterobjectYesFilter criteria using operators like $eq, $ne, $gt, $lt, $contains, $in, etc.
limitnumberNoMaximum number of rows to delete (default: no limit, max 1000)

table_update_row

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
rowIdstringYesRow ID to update
dataobjectYesUpdated fields — partial updates supported, only include fields you want to change. Must use the data parameter name

table_delete_row

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
rowIdstringYesRow ID to delete

table_get_row

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)
rowIdstringYesRow ID to retrieve

table_get_schema

ParameterTypeRequiredDescription
tableIdstringYesTable ID (user-only)

table_create

ParameterTypeRequiredDescription
namestringYesTable name (alphanumeric, underscores, 1-50 chars)
descriptionstringNoOptional table description
schemaobjectYesTable schema with column definitions

table_list

This tool takes no parameters (the workspace is resolved from execution context).

Outputs

table_query_rows

  • success (boolean) — Whether the query succeeded
  • rows (array) — Query result rows
  • rowCount (number) — Number of rows returned
  • totalCount (number) — Total rows matching the filter
  • limit (number) — Limit used in the query
  • offset (number) — Offset used in the query

table_insert_row

  • success (boolean) — Whether the row was inserted
  • row (json) — Inserted row data
  • message (string) — Status message

table_upsert_row

  • success (boolean) — Whether the row was upserted
  • row (json) — Upserted row data
  • operation (string) — Operation performed: insert or update
  • message (string) — Status message

table_batch_insert_rows

  • success (boolean) — Whether the rows were inserted
  • rows (array) — Inserted rows data
  • insertedCount (number) — Number of rows inserted
  • message (string) — Status message

table_update_rows_by_filter

  • success (boolean) — Whether the rows were updated
  • updatedCount (number) — Number of rows updated
  • updatedRowIds (array) — IDs of updated rows
  • message (string) — Status message

table_delete_rows_by_filter

  • success (boolean) — Whether the rows were deleted
  • deletedCount (number) — Number of rows deleted
  • deletedRowIds (array) — IDs of deleted rows
  • message (string) — Status message

table_update_row

  • success (boolean) — Whether the row was updated
  • row (json) — Updated row data
  • message (string) — Status message

table_delete_row

  • success (boolean) — Whether the row was deleted
  • deletedCount (number) — Number of rows deleted
  • message (string) — Status message

table_get_row

  • success (boolean) — Whether the row was retrieved
  • row (json) — Row data
  • message (string) — Status message

table_get_schema

  • success (boolean) — Whether the schema was retrieved
  • name (string) — Table name
  • columns (array) — Column definitions
  • message (string) — Status message

table_create

  • success (boolean) — Whether the table was created
  • table (json) — Created table metadata
  • message (string) — Status message

table_list

  • success (boolean) — Whether the operation succeeded
  • tables (array) — List of tables
  • totalCount (number) — Total number of tables

YAML Example

table_1:
  type: table
  name: "Table"
  inputs:
    operation: "query_rows"
    tableId: "tbl_customers"
    filter: '{"status": {"$eq": "active"}, "age": {"$gte": 18}}'
    sort: '{"createdAt": "desc"}'
    limit: 100
    offset: 0
  connections:
    outgoing:
      - target: next-block-id

Insert example:

table_insert:
  type: table
  name: "Table"
  inputs:
    operation: "insert_row"
    tableId: "tbl_customers"
    data: '{"email": "{{trigger.email}}", "name": "Jane", "age": 30}'
  connections:
    outgoing:
      - target: next-block-id

Tips

  • No external auth is needed — the table lives inside your Zelaxy workspace and is resolved from the run's _context.workspaceId. There is no TABLE_API_KEY; do not add one.
  • Always use the exact data parameter name for row contents (insert/upsert/update). The tools explicitly reject values, row, or fields aliases.
  • In the block UI, data, rows, filter, and sort are JSON fields. When embedding block references inside JSON, wrap them in double quotes — {"field": "{{blockName.field}}"}, never {"field": {{blockName.field}}} — or parsing fails.
  • Filters use MongoDB-style operators ($eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $contains). A bare {"column": "value"} is shorthand for $eq.
  • query_rows defaults to a limit of 100 (max 1000); batch insert and bulk filter operations are capped at 1000 rows. Use limit on delete_rows_by_filter as a safety guard before deleting large sets.
  • Use upsert_row for idempotent writes keyed on a unique column instead of querying-then-inserting; check the returned operation field to see whether an insert or update happened.