Append a new row to a workspace's table surface. The data field is a JSON object with column-name keys. Status column accepts: drafted, queued, sealed, active, blocked. Works on any workspace; columns auto-seed on the first row if the table surface is empty. Multi-surface workspaces accept `surface_slug` to target a specific sheet (use `list_surfaces` to enumerate); omit it to fall through to the workspace's primary table surface.
**Unmapped data fields:** Keys in `data` that don't match any existing column are still STORED on the row (nothing is dropped), but they won't render in the table UI until the column exists. The response carries an `unmapped_fields` array listing those keys plus a human-readable `warning` so an agent can decide whether to surface them, call `add_column`, or retry with `auto_create_columns: true`.
**Auto-create columns:** Pass `auto_create_columns: true` to have the server append a fresh text column for every unmapped key in one atomic step (humanised label from the key, type `text`). The response then includes `created_columns: ColumnDef[]` with the new column metadata. Use this when you're appending machine-emitted rows whose shape you can't predict ahead of time; leave it omitted (default false) when you want explicit schema control.
Connector