set_record_template_cell
Pre-fill a specific field on an Airtable record template with a static value or linked record.
Instructions
Pre-fill a field value on a record template.
CELL OBJECT TYPES (verified via API capture 2026-05-01):
Static value (text, number, boolean, single-select choice ID): { "type": "static", "value": "some text" } { "type": "static", "value": 42 } { "type": "static", "value": true } { "type": "static", "value": "selXXXXXXXXXXXXXX" } ← single-select: pass choice ID
Linked record(s): { "type": "linkedRows", "value": [{ "foreignRowId": "recXXX", "foreignRowDisplayName": "Record Name" }] }
To clear a field, omit the cellObject or pass null value.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The Airtable base/application ID | |
| templateId | Yes | The template ID (rtpXXX) | |
| columnId | Yes | Field ID (fldXXX) | |
| cellObject | Yes | Cell value object. Must have "type" ("static" or "linkedRows") and "value". | |
| debug | No | When true, include raw Airtable response in output for diagnostics |
Implementation Reference
- The tool handler function that receives the request and delegates to the AirtableClient's setRowTemplateCell method.
async set_record_template_cell({ appId, templateId, columnId, cellObject, debug }) { const result = await client.setRowTemplateCell(appId, templateId, columnId, cellObject); return ok({ updated: true, templateId, columnId }, result, debug); }, - The tool definition including description, annotations, and input schema (defines appId, templateId, columnId, and cellObject with type/value).
name: 'set_record_template_cell', description: `Pre-fill a field value on a record template. CELL OBJECT TYPES (verified via API capture 2026-05-01): Static value (text, number, boolean, single-select choice ID): { "type": "static", "value": "some text" } { "type": "static", "value": 42 } { "type": "static", "value": true } { "type": "static", "value": "selXXXXXXXXXXXXXX" } ← single-select: pass choice ID Linked record(s): { "type": "linkedRows", "value": [{ "foreignRowId": "recXXX", "foreignRowDisplayName": "Record Name" }] } To clear a field, omit the cellObject or pass null value.`, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }, inputSchema: { type: 'object', properties: { appId: { type: 'string', description: 'The Airtable base/application ID' }, templateId: { type: 'string', description: 'The template ID (rtpXXX)' }, columnId: { type: 'string', description: 'Field ID (fldXXX)' }, cellObject: { type: 'object', description: 'Cell value object. Must have "type" ("static" or "linkedRows") and "value".', properties: { type: { type: 'string', enum: ['static', 'linkedRows'], description: '"static" for text/number/bool/select, "linkedRows" for linked record fields' }, value: { description: 'The field value. String/number/boolean for static. Array of {foreignRowId, foreignRowDisplayName} for linkedRows.' }, }, required: ['type', 'value'], }, debug: debugProp, }, required: ['appId', 'templateId', 'columnId', 'cellObject'], }, - The AirtableClient helper method that makes the actual HTTP POST to /v0.3/rowTemplate/{templateId}/updateCell with columnId and cellObject.
async setRowTemplateCell(appId, templateId, columnId, cellObject) { assertAirtableId(appId, 'appId'); assertAirtableId(columnId, 'columnId'); const url = `https://airtable.com/v0.3/rowTemplate/${templateId}/updateCell`; const res = await this.auth.postForm(url, this._mutationParams({ columnId, cellObject }, appId), appId); if (!res.ok) { const errBody = await res.text().catch(() => ''); throw new Error(`setRowTemplateCell failed (${res.status}): ${errBody}`); } return res.json(); } - packages/mcp-server/src/tool-config.js:37-37 (registration)Registration in TOOL_CATEGORIES mapping: 'set_record_template_cell' is categorized as 'table-write' (non-destructive write).
set_record_template_cell: 'table-write', - packages/extension/src/mcp/tool-profile.ts:48-48 (registration)Duplicate registration in extension's TOOL_CATEGORIES mirror (must stay in sync with mcp-server).
set_record_template_cell: 'table-write',