Tables

Tables are the core data structure in hypertab. Each table has columns (static or smart) and rows. Every row automatically gets five system columns: _ht_id, _ht_created_at, _ht_updated_at, _ht_status, _ht_error.

i
Naming Rules
Table and column names must match /^[a-z][a-z0-9_]*$/, lowercase letters, digits, and underscores only, starting with a letter. Names cannot start with _ht_ (reserved for system columns).
*
Table Workspace
The web table view includes persistent server-side search, saved views, a table-wide auto-run toggle for smart columns, sticky two-line column headers, and inline filter chips. Each column header also exposes a direct menu for sorting, clearing sort, filtering that column, pinning, hiding, and smart-column run actions.

List Tables

GET/api/tableshypertab_list_tables

Returns all tables in the workspace with row counts, column counts, and descriptions. Soft-deleted tables are excluded.

No parameters required.

AI
AI Agents
Call this first to discover available tables before querying rows or modifying schemas.
{
  "tool": "hypertab_list_tables"
}

Create Table

POST/api/tableshypertab_create_table

Create a new table with one or more columns. The five system columns are added automatically. You can mix static data columns and smart columns in the same call.

ParameterTypeDescription
namerequiredstringTable name. Must match /^[a-z][a-z0-9_]*$/. Cannot start with _ht_. Max 64 chars.
descriptionstringHuman-readable description. Max 500 chars.
columnsrequiredColumn[]Array of column definitions. Each entry has name (string), type (string), and optional config (object).
i
Column Types
Available types: text, number, boolean, email, url, phone, datetime, json, select, multi_select, relation, currency, image_url. For select and multi_select, pass a config object with an options array.

Each column definition requires name and type. The optional config object holds type-specific settings like select options or relation targets.

!
Table names must be unique within a workspace. Creating a table with a duplicate name returns a TABLE_ALREADY_EXISTS error.
{
  "tool": "hypertab_create_table",
  "arguments": {
    "name": "companies",
    "description": "Target companies for outreach",
    "columns": [
      { "name": "name", "type": "text" },
      { "name": "website", "type": "url" },
      { "name": "employees", "type": "number" },
      { "name": "annual_revenue", "type": "currency" },
      { "name": "industry", "type": "select", "config": { "options": ["SaaS", "Finance", "Healthcare"] } },
      { "name": "tags", "type": "multi_select", "config": { "options": ["enterprise", "mid-market", "startup"] } }
    ]
  }
}

Get Table Schema

GET/api/tables/:tableIdhypertab_get_table_schema

Returns the full schema of a table including all columns, their types, kinds (static or smart), configs, and positions. Use this to understand a table's structure before inserting or querying rows.

ParameterTypeDescription
tablerequiredstringTable name or ID.
AI
AI Agents
Always read the schema before querying or updating rows. Column names are case-sensitive and must match exactly. Smart columns include their kind, config, and auto_run settings.
*
The response includes both user-defined columns and system columns. System columns are prefixed with _ht_ and cannot be modified.
{
  "tool": "hypertab_get_table_schema",
  "arguments": {
    "table": "companies"
  }
}

Add Column

POST/api/tables/:tableId/columnshypertab_add_column

Add a new static data column to an existing table. For smart columns (AI, HTTP, formula, etc.), use hypertab_add_smart_column instead.

ParameterTypeDescription
tablerequiredstringTable name or ID.
namerequiredstringColumn name. Must match /^[a-z][a-z0-9_]*$/. Cannot start with _ht_. Max 64 chars.
typerequiredstringOne of: text, number, boolean, email, url, phone, datetime, json, select, multi_select, relation, currency, image_url.
configobjectType-specific config. For select/multi_select: { options: ["a", "b"] }. For relation: { table: "other_table" }.
i
Column Types Reference
  • text, free-form string
  • number, numeric value
  • boolean, true/false
  • email, validated email address
  • url, validated URL string
  • phone, phone number
  • datetime, ISO 8601 timestamp
  • json, arbitrary JSON object
  • select, single choice from options (config: { options: [...] })
  • multi_select, multiple choices from options (config: { options: [...] })
  • relation, link to another table (config: { table: "other_table" })
  • currency, monetary value
  • image_url, image URL string

New columns are appended to the end of the table by default. Existing rows get null for the new column.

!
Column names must be unique within a table. Adding a column with a duplicate name returns a COLUMN_ALREADY_EXISTS error.
{
  "tool": "hypertab_add_column",
  "arguments": {
    "table": "companies",
    "name": "status",
    "type": "select",
    "config": {
      "options": ["Active", "Churned", "Prospect"]
    }
  }
}

Update Table

PATCH/api/tables/:tableIdhypertab_update_table

Rename a table or update its description. At least one of new_name or description must be provided.

ParameterTypeDescription
tablerequiredstringCurrent table name or ID.
new_namestringNew table name. Must match /^[a-z][a-z0-9_]*$/. Max 64 chars.
descriptionstring | nullNew description. Pass null to clear.

Renaming a table updates all internal references. Existing webhooks, functions, and smart columns that reference this table continue to work because they use the table ID internally.

*
Pass description: null to clear the description entirely.
{
  "tool": "hypertab_update_table",
  "arguments": {
    "table": "companies",
    "new_name": "target_accounts",
    "description": "Enterprise target accounts for Q2"
  }
}

Update Column

PATCH/api/tables/:tableId/columns/:colhypertab_update_column

Rename a column, change its type, update its config (e.g. select options), or reorder it. All fields are optional, provide only the ones you want to change.

ParameterTypeDescription
tablerequiredstringTable name or ID.
columnrequiredstringCurrent column name.
new_namestringNew column name. Must match /^[a-z][a-z0-9_]*$/. Max 64 chars.
new_typestringNew column type. One of: text, number, boolean, email, url, phone, datetime, json, select, multi_select, relation, currency, image_url.
configobject | nullUpdated type config (e.g. select options). Pass null to clear.
positionintegerNew display position (0-indexed).
!
Type Changes
Changing a column's type may cause data loss. For example, converting from json to number will set non-numeric values to null. Review your data before changing types.
*
Use position to reorder columns in the table display. Position is 0-indexed. Other columns shift automatically.
{
  "tool": "hypertab_update_column",
  "arguments": {
    "table": "companies",
    "column": "employees",
    "new_name": "employee_count"
  }
}

Delete Column

DELETE/api/tables/:tableId/columns/:colhypertab_delete_column

Permanently remove a column from a table. All data in the column is lost. This action cannot be undone. Requires confirm: true as a safety guard.

ParameterTypeDescription
tablerequiredstringTable name or ID.
columnrequiredstringColumn name to delete.
confirmrequiredbooleanMust be true to confirm deletion.
!
Destructive Action
This permanently deletes the column and all its data. There is no recovery. System columns (_ht_id, _ht_created_at, etc.) cannot be deleted.
AI
AI Agents
Always confirm with the user before deleting a column. If confirm is missing or false, the request is rejected with a CONFIRMATION_REQUIRED error.
{
  "tool": "hypertab_delete_column",
  "arguments": {
    "table": "companies",
    "column": "old_notes",
    "confirm": true
  }
}

Delete Table

DELETE/api/tables/:tableIdhypertab_delete_table

Soft-delete a table. The table and all its data are hidden but recoverable for 30 days using hypertab_restore_table. After 30 days, the table is permanently purged. Requires confirm: true.

ParameterTypeDescription
tablerequiredstringTable name or ID.
confirmrequiredbooleanMust be true to confirm deletion.
!
Soft Delete
Deleted tables are excluded from hypertab_list_tables and cannot be queried. Associated webhooks, functions, and smart column runs are paused. Restore within 30 days to recover everything.
AI
AI Agents
Always confirm with the user before deleting a table. Without confirm: true, the request is rejected.
{
  "tool": "hypertab_delete_table",
  "arguments": {
    "table": "old_leads",
    "confirm": true
  }
}

Restore Table

POST/api/tables/:tableId/restorehypertab_restore_table

Restore a soft-deleted table within the 30-day recovery window. All data, columns, webhooks, and functions are restored to their state at the time of deletion.

ParameterTypeDescription
tablerequiredstringDeleted table name or ID.
i
30-Day Window
Tables can only be restored within 30 days of deletion. After that, the table and all associated data are permanently purged. Check recoverable_until in the delete response for the exact deadline.

If a new table with the same name was created after deletion, the restore will fail with a TABLE_ALREADY_EXISTS error. Rename or delete the conflicting table first.

{
  "tool": "hypertab_restore_table",
  "arguments": {
    "table": "old_leads"
  }
}

Describe Column

GET/api/tables/:tableId/columns/:col/statshypertab_describe_column

Get data statistics for a column: null count, distinct values, min/max values, and top value distribution. Useful for understanding data quality and distribution before building filters or scoring logic.

ParameterTypeDescription
tablerequiredstringTable name or ID.
columnrequiredstringColumn name.
*
When to Use
Use this before writing filter or scoring logic to understand the data distribution. For select/multi_select columns, the top values show the most common choices. For number columns, you get min, max, average, and percentiles.
AI
AI Agents
Call this on key columns before building queries. Knowing the min/max range and null count helps you write accurate filters and avoid empty results.
{
  "tool": "hypertab_describe_column",
  "arguments": {
    "table": "companies",
    "column": "employees"
  }
}