Rows
Insert, query, update, and delete rows. Column names are fuzzy-matched on insert, so typos are auto-corrected within 2 character edits (Levenshtein distance). Every row automatically gets system columns: _ht_id, _ht_created_at, _ht_updated_at, _ht_status, _ht_error.
Insert Rows
/api/tables/:tableId/rowshypertab_insert_rowsInsert up to 10,000 rows per call. Column names are fuzzy-matched, if you pass companey instead of company, it auto-corrects and notes the correction in the response. If smart columns have auto-run enabled, they trigger automatically after insert.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
rowsrequired | object[] | Array of row objects with column: value pairs. Max 10,000 rows per call. |
_ht_id, _ht_created_at, etc.) are auto-generated. Do not include them in your row objects.{
"tool": "hypertab_insert_rows",
"arguments": {
"table": "leads",
"rows": [
{ "company": "Acme Corp", "website": "https://acme.com", "size": 500 },
{ "company": "Globex Inc", "website": "https://globex.com", "size": 1200 },
{ "company": "Initech", "website": "https://initech.com", "size": 80 }
]
}
}Query Rows
/api/tables/:tableId/rowshypertab_query_rowsQuery rows with filters, sorting, and pagination. Returns a maximum of 100 rows per page via MCP. The REST API supports limit=0 to return all matching rows without pagination.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
where | object | Filter conditions: { column: { operator: value } }. See Filter Syntax. |
order_by | object | Sort specification: { column: "asc" | "desc" } |
limit | integerdefault: 25 | Rows per page (1-100 via MCP, 0 for all via REST) |
offset | integerdefault: 0 | Number of rows to skip for pagination |
columns | string[] | Specific columns to return. Omit to return all columns. |
See Filter Syntax for all available operators including eq, neq, gt, gte, lt, lte, contains, starts_with, in, between, is_null, and more.
limit=0 to get all matching rows in a single call (not available through MCP).{
"tool": "hypertab_query_rows",
"arguments": {
"table": "leads",
"where": {
"size": { "gte": 500 },
"industry": { "eq": "SaaS" }
},
"order_by": { "size": "desc" },
"columns": ["company", "website", "size", "industry"],
"limit": 50,
"offset": 0
}
}Get Row
/api/tables/:tableId/rows/:rowIdhypertab_get_rowGet a single row by its _ht_id. Returns all columns including system columns and smart column cell states.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
row_idrequired | string | The _ht_id of the row to retrieve |
{
"tool": "hypertab_get_row",
"arguments": {
"table": "leads",
"row_id": "d54e84ca-1a2b-4c3d-8e9f-1234567890ab"
}
}Update Rows
/api/tables/:tableId/rowshypertab_update_rowsBulk update rows by filter or specific row IDs. Provide at least one of where or row_ids to target rows. The set object specifies column values to update.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
setrequired | object | Column values to set: { column: value } |
where | object | Filter to match rows: { column: { operator: value } } |
row_ids | string[] | Specific row IDs to update |
where or row_ids is required. Omitting both will return an error, there is no "update all rows" shortcut._ht_updated_at, _ht_status) are updated automatically. You cannot set them directly.{
"tool": "hypertab_update_rows",
"arguments": {
"table": "leads",
"where": { "status": { "eq": "prospect" } },
"set": { "status": "qualified", "score": 85 }
}
}Delete Rows
/api/tables/:tableId/rowshypertab_delete_rowsSoft-delete rows by filter or specific row IDs. Rows are marked with _ht_status = 'deleted' and excluded from future queries. Requires confirm: true when deleting more than 10 rows as a safety measure.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
where | object | Filter to match rows for deletion |
row_ids | string[] | Specific row IDs to delete |
confirm | boolean | Required true if deleting more than 10 rows |
confirm: true. Without it, the operation returns an error showing the count of rows that would be affected.{
"tool": "hypertab_delete_rows",
"arguments": {
"table": "leads",
"where": { "status": { "eq": "spam" } },
"confirm": true
}
}Upsert Rows
/api/tables/:tableId/rows/upserthypertab_upsert_rowsInsert or update rows based on a unique column. If a row with the same value in the unique_on column already exists, it is updated with the new values. Otherwise, a new row is inserted. Max 10,000 rows per call.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
rowsrequired | object[] | Array of row objects to upsert. Max 10,000. |
unique_onrequired | string | Column name to check for uniqueness (e.g. "email", "domain") |
{
"tool": "hypertab_upsert_rows",
"arguments": {
"table": "leads",
"unique_on": "email",
"rows": [
{ "email": "[email protected]", "score": 85, "status": "qualified" },
{ "email": "[email protected]", "score": 72, "status": "prospect" },
{ "email": "[email protected]", "company": "Initech", "score": 60 }
]
}
}Count Rows
/api/tables/:tableId/rows/counthypertab_count_rowsCount rows matching a filter. Significantly faster than querying all rows when you only need the count. Supports the same filter syntax as query_rows.
| Parameter | Type | Description |
|---|---|---|
tablerequired | string | Table name or ID |
where | object | Filter conditions: { column: { operator: value } }. Omit for total row count. |
See Filter Syntax for all available operators.
{
"tool": "hypertab_count_rows",
"arguments": {
"table": "leads",
"where": { "status": { "eq": "qualified" } }
}
}