You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`src/client.js` — `AirtableClient`, wraps internal API with caching
59
+
-`src/client.js` — `AirtableClient`, wraps internal API with caching. `normalizeFieldType()` translates public-API type names to internal names before every request: `multipleSelects` → `multiSelect`, `singleSelect` → `select`. Always use the public names (`singleSelect`, `multipleSelects`) in tool calls — never the internal names. Choices arrays are also normalised here from `[{ name, color }]` to the keyed-object format the internal API requires.
60
60
-`src/cache.js` — request cache
61
61
-`src/login.js` — interactive CLI login
62
62
-`src/login-runner.js` — programmatic login spawned by extension host
Copy file name to clipboardExpand all lines: packages/extension/src/skills/templates/skillTemplates.ts
+17-1Lines changed: 17 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -428,7 +428,7 @@ Non-destructive field operations.
428
428
| \`create_field\` | Create any field type (text, number, checkbox, formula, rollup, lookup, count, …). |
429
429
| \`create_formula_field\` | Shorthand for creating a formula field. |
430
430
| \`update_formula_field\` | Update the formula text of an existing formula field. |
431
-
| \`update_field_config\` | Update config of any computed field (rollup, lookup, count, formula). |
431
+
| \`update_field_config\` | Update config of any field type — computed (rollup, lookup, count, formula) or non-computed (singleSelect, multipleSelects, number, date, …). |
432
432
| \`rename_field\` | Rename a field. |
433
433
| \`update_field_description\` | Set or clear a field's description/documentation. |
434
434
| \`duplicate_field\` | Clone a field. Pass \`duplicateCells: true\` to copy values too. |
@@ -454,8 +454,22 @@ Non-destructive field operations.
Choices **not** in the list are deleted. Omitting \`id\` creates a new choice.
472
+
459
473
---
460
474
461
475
### Category 6: Field Destructive (2 tools)
@@ -797,4 +811,6 @@ and use airtable-user-mcp \`query_records\` to read/search data (especially when
797
811
7. **Using \`emptyGroupState: "visible"\` in \`update_view_group_levels\`** — the API rejects this value; omit the field (defaults to "hidden")
798
812
8. **Using REST API \`filterByFormula\` with \`FIND()\`/\`SEARCH()\` on lookup fields** — returns wrong/empty results; use \`query_records\` with \`search\` instead
799
813
9. **Using Official MCP to read records when lookup field values matter** — Official MCP may return unresolved IDs; \`query_records\` returns fully resolved strings
814
+
10. **Passing \`fieldType: "singleSelect"\` to \`create_field\` / \`update_field_config\` and expecting raw API type matching** — the internal Airtable API uses \`"select"\` (not \`"singleSelect"\`); airtable-user-mcp normalises this automatically so always pass \`"singleSelect"\` — never pass \`"select"\` directly
815
+
11. **Passing a partial choices list to \`update_field_config\` on a select field** — choices NOT included are deleted; always fetch existing choice IDs first with \`get_table_schema\` and include them in the list
0 commit comments