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.
/^[a-z][a-z0-9_]*$/, lowercase letters, digits, and underscores only, starting with a letter. Names cannot start with _ht_ (reserved for system columns).List Tables
/api/tableshypertab_list_tablesReturns all tables in the workspace with row counts, column counts, and descriptions. Soft-deleted tables are excluded.
No parameters required.
{
"tool": "hypertab_list_tables"
}Create Table
/api/tableshypertab_create_tableCreate 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.
| Parameter | Type | Description |
|---|---|---|
namerequired | string | Table name. Must match /^[a-z][a-z0-9_]*$/. Cannot start with _ht_. Max 64 chars. |
description | string | Human-readable description. Max 500 chars. |
columnsrequired | Column[] | Array of column definitions. Each entry has name (string), type (string), and optional config (object). |
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_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
/api/tables/:tableIdhypertab_get_table_schemaReturns 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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
_ht_ and cannot be modified.{
"tool": "hypertab_get_table_schema",
"arguments": {
"table": "companies"
}
}Add Column
/api/tables/:tableId/columnshypertab_add_columnAdd a new static data column to an existing table. For smart columns (AI, HTTP, formula, etc.), use hypertab_add_smart_column instead.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
namerequired | string | Column name. Must match /^[a-z][a-z0-9_]*$/. Cannot start with _ht_. Max 64 chars. |
typerequired | string | One of: text, number, boolean, email, url, phone, datetime, json, select, multi_select, relation, currency, image_url. |
config | object | Type-specific config. For select/multi_select: { options: ["a", "b"] }. For relation: { table: "other_table" }. |
text, free-form stringnumber, numeric valueboolean, true/falseemail, validated email addressurl, validated URL stringphone, phone numberdatetime, ISO 8601 timestampjson, arbitrary JSON objectselect, 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 valueimage_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_ALREADY_EXISTS error.{
"tool": "hypertab_add_column",
"arguments": {
"table": "companies",
"name": "status",
"type": "select",
"config": {
"options": ["Active", "Churned", "Prospect"]
}
}
}Update Table
/api/tables/:tableIdhypertab_update_tableRename a table or update its description. At least one of new_name or description must be provided.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Current table name or ID. |
new_name | string | New table name. Must match /^[a-z][a-z0-9_]*$/. Max 64 chars. |
description | string | null | New 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.
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
/api/tables/:tableId/columns/:colhypertab_update_columnRename 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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
columnrequired | string | Current column name. |
new_name | string | New column name. Must match /^[a-z][a-z0-9_]*$/. Max 64 chars. |
new_type | string | New column type. One of: text, number, boolean, email, url, phone, datetime, json, select, multi_select, relation, currency, image_url. |
config | object | null | Updated type config (e.g. select options). Pass null to clear. |
position | integer | New display position (0-indexed). |
json to number will set non-numeric values to null. Review your data before changing types.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
/api/tables/:tableId/columns/:colhypertab_delete_columnPermanently 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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
columnrequired | string | Column name to delete. |
confirmrequired | boolean | Must be true to confirm deletion. |
_ht_id, _ht_created_at, etc.) cannot be deleted.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
/api/tables/:tableIdhypertab_delete_tableSoft-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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
confirmrequired | boolean | Must be true to confirm deletion. |
hypertab_list_tables and cannot be queried. Associated webhooks, functions, and smart column runs are paused. Restore within 30 days to recover everything.confirm: true, the request is rejected.{
"tool": "hypertab_delete_table",
"arguments": {
"table": "old_leads",
"confirm": true
}
}Restore Table
/api/tables/:tableId/restorehypertab_restore_tableRestore 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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Deleted table name or ID. |
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
/api/tables/:tableId/columns/:col/statshypertab_describe_columnGet 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.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID. |
columnrequired | string | Column name. |
{
"tool": "hypertab_describe_column",
"arguments": {
"table": "companies",
"column": "employees"
}
}