TablesWriteDo not retry automatically

Add a table field

add_table_field

Add one field to a table: any basic kind (text, number, date, select, status, checkbox, rating, user, attachment, auto number, JSON …), or a COMPUTED field — a formula (`source`) or a Lookup / Rollup / Count (`preset`), which are lowered to the same formula language. Formula fields are referenced by ID — `{fld:<fieldId>}` — never by label. A relation is created with create_table_relation because both sides are written together. Feed-owned fields on a typed table keep following their resource contract.

Parameters

ParameterTypeRequiredDescription
tableIdstringrequiredTable ID — get from list_tables
labelstringrequiredHuman-readable field name
configobjectoptionalPer-kind configuration: { options: [{ id, label, color }] } for select/status, { maximum, icon } for rating, { multiple } for user, { prefix, digits } for auto number, { accept } for attachment.
formatobjectoptionalDisplay format — { kind: "number", variant: "currency", currency: "AUD", precision: 2 }, { kind: "date", preset: "medium" }. Presentation only; it never rewrites a stored value.
requiredbooleanoptionalReject a row that leaves this field blank
descriptionstringoptionalShown in the column tooltip and the API
iconstringoptionalIcon catalog id, e.g. emoji:store
kind"text" | "long_text" | "number" | "checkbox" | "date" | "datetime" | "single_select" | "multi_select" | "status" | "url" | "email" | "phone" | "rating" | "user" | "auto_number" | "attachment" | "json" | "relation" | "formula" | "created_time" | "last_edited_time" | "created_by" | "last_edited_by"requiredWhat the field holds. Use create_table_relation for a relation — a relation is two fields created together, never one.
sourcestringoptionalFormula source for kind "formula". Fields are referenced by ID in braces: `{fld:<fieldId>} * 1.1`, or across a relation `sum({fld:<relationFieldId>}.{fld:<targetFieldId>})`. Get the ids from get_table.
presetobjectoptionalA structured computed field. Lowered to formula source server-side.
positionintegeroptionalInsert here; appended when omitted
expectedSchemaVersionintegeroptionalAssert the table schema version you last read. Omit to let the call read it — the write still fails if someone changes the schema in between.

Example call

The tool call an MCP client sends (required arguments shown with placeholder values).

{
"tool": "add_table_field",
"arguments": {
"tableId": "tableId_123",
"label": "value",
"kind": 0
}
}

Use this tool in

Related Tables tools