Data tables API

Data tables are structured datasets an agent can search — a price list, an inventory feed, an FAQ matrix. Each table becomes a search tool the agent can call. Reading is gated on integrations.read; writing on integrations.write.

List & create

GET  /api/v1/rest/datasets
POST /api/v1/rest/datasets
{
  "name": "Menu",
  "tool_name": "search",            // verb the agent tool is built from
  "columns": [
    { "key": "item", "searchable": true },
    { "key": "price", "type": "number" }
  ]
}

At least one column must be searchable.

Get, update, delete

GET    /api/v1/rest/datasets/:id           # schema + live row count
PATCH  /api/v1/rest/datasets/:id           # edit schema / tool config (slug is immutable)
DELETE /api/v1/rest/datasets/:id           # cascades rows — irreversible

Rows

GET    /api/v1/rest/datasets/:id/rows
POST   /api/v1/rest/datasets/:id/rows      # upsert: { row_key, data } or bulk { rows, replace? }
DELETE /api/v1/rest/datasets/:id/rows      # hard-delete one row by key

Attach to an agent

GET    /api/v1/rest/agents/:id/datasets
POST   /api/v1/rest/agents/:id/datasets            { "dataset_id": "uuid" }   // idempotent attach
PATCH  /api/v1/rest/agents/:id/datasets/:datasetId { "enabled": false }        // toggle without detaching
DELETE /api/v1/rest/agents/:id/datasets/:datasetId // detach (table untouched)

Attaching a table gives that agent its search tool. The MCP equivalents are attach_data_table, update_agent_data_table, detach_data_table.

Import / export & ingest webhook

POST   /api/v1/rest/datasets/import              # from an exported seny-data-table file
GET    /api/v1/rest/datasets/:id/export          # schema + every row, portable
POST   /api/v1/rest/datasets/:id/move            { "dest_org_id": "..." }   // to a client workspace (white-label)
POST   /api/v1/rest/datasets/:id/webhook-token   # mint/rotate a per-table ingest token (shown once)
DELETE /api/v1/rest/datasets/:id/webhook-token   # disable the ingest webhook

Full schemas are in the OpenAPI reference.