airtable-automation
Automate Airtable tasks via Rube MCP (Composio): records, bases, tables, fields, views. Always search tools first for current schemas.
Install
npx skills add https://github.com/davepoon/buildwithclaude/tree/main/plugins/all-skills/skills/airtable-automation
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install davepoon-buildwithclaude@llmmart
git clone https://github.com/davepoon/buildwithclaude.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole davepoon/buildwithclaude collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Airtable Automation via Rube MCP
Automate Airtable operations through Composio's Airtable toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/airtable
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Airtable connection via
RUBE_MANAGE_CONNECTIONSwith toolkitairtable - Always call
RUBE_SEARCH_TOOLSfirst to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith toolkitairtable - If connection is not ACTIVE, follow the returned auth link to complete Airtable auth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Records
When to use: User wants to create, read, update, or delete records
Tool sequence:
AIRTABLE_LIST_BASES- Discover available bases [Prerequisite]AIRTABLE_GET_BASE_SCHEMA- Inspect table structure [Prerequisite]AIRTABLE_LIST_RECORDS- List/filter records [Optional]AIRTABLE_CREATE_RECORD/AIRTABLE_CREATE_RECORDS- Create records [Optional]AIRTABLE_UPDATE_RECORD/AIRTABLE_UPDATE_MULTIPLE_RECORDS- Update records [Optional]AIRTABLE_DELETE_RECORD/AIRTABLE_DELETE_MULTIPLE_RECORDS- Delete records [Optional]
Key parameters:
baseId: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX')tableIdOrName: Table ID (starts with 'tbl') or table namefields: Object mapping field names to valuesrecordId: Record ID (starts with 'rec') for updates/deletesfilterByFormula: Airtable formula for filteringtypecast: Set true for automatic type conversion
Pitfalls:
- pageSize capped at 100; uses offset pagination; changing filters between pages can skip/duplicate rows
- CREATE_RECORDS hard limit of 10 records per request; chunk larger imports
- Field names are CASE-SENSITIVE and must match schema exactly
- 422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues
- INVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true
2. Search and Filter Records
When to use: User wants to find specific records using formulas
Tool sequence:
AIRTABLE_GET_BASE_SCHEMA- Verify field names and types [Prerequisite]AIRTABLE_LIST_RECORDS- Query with filterByFormula [Required]AIRTABLE_GET_RECORD- Get full record details [Optional]
Key parameters:
filterByFormula: Airtable formula (e.g.,{Status}='Done')sort: Array of sort objectsfields: Array of field names to returnmaxRecords: Max total records across all pagesoffset: Pagination cursor from previous response
Pitfalls:
- Field names in formulas must be wrapped in
{}and match schema exactly - String values must be quoted:
{Status}='Active'not{Status}=Active - 422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields
- Airtable rate limit: ~5 requests/second per base; handle 429 with Retry-After
3. Manage Fields and Schema
When to use: User wants to create or modify table fields
Tool sequence:
AIRTABLE_GET_BASE_SCHEMA- Inspect current schema [Prerequisite]AIRTABLE_CREATE_FIELD- Create a new field [Optional]AIRTABLE_UPDATE_FIELD- Rename/describe a field [Optional]AIRTABLE_UPDATE_TABLE- Update table metadata [Optional]
Key parameters:
name: Field nametype: Field type (singleLineText, number, singleSelect, etc.)options: Type-specific options (choices for select, precision for number)description: Field description
Pitfalls:
- UPDATE_FIELD only changes name/description, NOT type/options; create a replacement field and migrate
- Computed fields (formula, rollup, lookup) cannot be created via API
- 422 when type options are missing or malformed
4. Manage Comments
When to use: User wants to view or add comments on records
Tool sequence:
AIRTABLE_LIST_COMMENTS- List comments on a record [Required]
Key parameters:
baseId: Base IDtableIdOrName: Table identifierrecordId: Record ID (17 chars, starts with 'rec')pageSize: Comments per page (max 100)
Pitfalls:
- Record IDs must be exactly 17 characters starting with 'rec'
Common Patterns
Airtable Formula Syntax
Comparison:
{Status}='Done'- Equals{Priority}>1- Greater than{Name}!=''- Not empty
Functions:
AND({A}='x', {B}='y')- Both conditionsOR({A}='x', {A}='y')- Either conditionFIND('test', {Name})>0- Contains textIS_BEFORE({Due Date}, TODAY())- Date comparison
Escape rules:
- Single quotes in values: double them (
{Name}='John''s Company')
Pagination
- Set
pageSize(max 100) - Check response for
offsetstring - Pass
offsetto next request unchanged - Keep filters/sorts/view stable between pages
Known Pitfalls
ID Formats:
- Base IDs:
appXXXXXXXXXXXXXX(17 chars) - Table IDs:
tblXXXXXXXXXXXXXX(17 chars) - Record IDs:
recXXXXXXXXXXXXXX(17 chars) - Field IDs:
fldXXXXXXXXXXXXXX(17 chars)
Batch Limits:
- CREATE_RECORDS: max 10 per request
- UPDATE_MULTIPLE_RECORDS: max 10 per request
- DELETE_MULTIPLE_RECORDS: max 10 per request
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List bases | AIRTABLE_LIST_BASES | (none) |
| Get schema | AIRTABLE_GET_BASE_SCHEMA | baseId |
| List records | AIRTABLE_LIST_RECORDS | baseId, tableIdOrName |
| Get record | AIRTABLE_GET_RECORD | baseId, tableIdOrName, recordId |
| Create record | AIRTABLE_CREATE_RECORD | baseId, tableIdOrName, fields |
| Create records | AIRTABLE_CREATE_RECORDS | baseId, tableIdOrName, records |
| Update record | AIRTABLE_UPDATE_RECORD | baseId, tableIdOrName, recordId, fields |
| Update records | AIRTABLE_UPDATE_MULTIPLE_RECORDS | baseId, tableIdOrName, records |
| Delete record | AIRTABLE_DELETE_RECORD | baseId, tableIdOrName, recordId |
| Create field | AIRTABLE_CREATE_FIELD | baseId, tableIdOrName, name, type |
| Update field | AIRTABLE_UPDATE_FIELD | baseId, tableIdOrName, fieldId |
| Update table | AIRTABLE_UPDATE_TABLE | baseId, tableIdOrName, name |
| List comments | AIRTABLE_LIST_COMMENTS | baseId, tableIdOrName, recordId |
Powered by Composio
Files (buildwithclaude)
-
SKILL.md 6.6 KB
--- name: airtable-automation description: "Automate Airtable tasks via Rube MCP (Composio): records, bases, tables, fields, views. Always search tools first for current schemas." requires: mcp: [rube] category: storage-docs --- # Airtable Automation via Rube MCP Automate Airtable operations through Composio's Airtable toolkit via Rube MCP. **Toolkit docs**: [composio.dev/toolkits/airtable](https://composio.dev/toolkits/airtable) ## Prerequisites - Rube MCP must be connected (RUBE_SEARCH_TOOLS available) - Active Airtable connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable` - Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas ## Setup **Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works. 1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds 2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `airtable` 3. If connection is not ACTIVE, follow the returned auth link to complete Airtable auth 4. Confirm connection status shows ACTIVE before running any workflows ## Core Workflows ### 1. Create and Manage Records **When to use**: User wants to create, read, update, or delete records **Tool sequence**: 1. `AIRTABLE_LIST_BASES` - Discover available bases [Prerequisite] 2. `AIRTABLE_GET_BASE_SCHEMA` - Inspect table structure [Prerequisite] 3. `AIRTABLE_LIST_RECORDS` - List/filter records [Optional] 4. `AIRTABLE_CREATE_RECORD` / `AIRTABLE_CREATE_RECORDS` - Create records [Optional] 5. `AIRTABLE_UPDATE_RECORD` / `AIRTABLE_UPDATE_MULTIPLE_RECORDS` - Update records [Optional] 6. `AIRTABLE_DELETE_RECORD` / `AIRTABLE_DELETE_MULTIPLE_RECORDS` - Delete records [Optional] **Key parameters**: - `baseId`: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX') - `tableIdOrName`: Table ID (starts with 'tbl') or table name - `fields`: Object mapping field names to values - `recordId`: Record ID (starts with 'rec') for updates/deletes - `filterByFormula`: Airtable formula for filtering - `typecast`: Set true for automatic type conversion **Pitfalls**: - pageSize capped at 100; uses offset pagination; changing filters between pages can skip/duplicate rows - CREATE_RECORDS hard limit of 10 records per request; chunk larger imports - Field names are CASE-SENSITIVE and must match schema exactly - 422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues - INVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true ### 2. Search and Filter Records **When to use**: User wants to find specific records using formulas **Tool sequence**: 1. `AIRTABLE_GET_BASE_SCHEMA` - Verify field names and types [Prerequisite] 2. `AIRTABLE_LIST_RECORDS` - Query with filterByFormula [Required] 3. `AIRTABLE_GET_RECORD` - Get full record details [Optional] **Key parameters**: - `filterByFormula`: Airtable formula (e.g., `{Status}='Done'`) - `sort`: Array of sort objects - `fields`: Array of field names to return - `maxRecords`: Max total records across all pages - `offset`: Pagination cursor from previous response **Pitfalls**: - Field names in formulas must be wrapped in `{}` and match schema exactly - String values must be quoted: `{Status}='Active'` not `{Status}=Active` - 422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields - Airtable rate limit: ~5 requests/second per base; handle 429 with Retry-After ### 3. Manage Fields and Schema **When to use**: User wants to create or modify table fields **Tool sequence**: 1. `AIRTABLE_GET_BASE_SCHEMA` - Inspect current schema [Prerequisite] 2. `AIRTABLE_CREATE_FIELD` - Create a new field [Optional] 3. `AIRTABLE_UPDATE_FIELD` - Rename/describe a field [Optional] 4. `AIRTABLE_UPDATE_TABLE` - Update table metadata [Optional] **Key parameters**: - `name`: Field name - `type`: Field type (singleLineText, number, singleSelect, etc.) - `options`: Type-specific options (choices for select, precision for number) - `description`: Field description **Pitfalls**: - UPDATE_FIELD only changes name/description, NOT type/options; create a replacement field and migrate - Computed fields (formula, rollup, lookup) cannot be created via API - 422 when type options are missing or malformed ### 4. Manage Comments **When to use**: User wants to view or add comments on records **Tool sequence**: 1. `AIRTABLE_LIST_COMMENTS` - List comments on a record [Required] **Key parameters**: - `baseId`: Base ID - `tableIdOrName`: Table identifier - `recordId`: Record ID (17 chars, starts with 'rec') - `pageSize`: Comments per page (max 100) **Pitfalls**: - Record IDs must be exactly 17 characters starting with 'rec' ## Common Patterns ### Airtable Formula Syntax **Comparison**: - `{Status}='Done'` - Equals - `{Priority}>1` - Greater than - `{Name}!=''` - Not empty **Functions**: - `AND({A}='x', {B}='y')` - Both conditions - `OR({A}='x', {A}='y')` - Either condition - `FIND('test', {Name})>0` - Contains text - `IS_BEFORE({Due Date}, TODAY())` - Date comparison **Escape rules**: - Single quotes in values: double them (`{Name}='John''s Company'`) ### Pagination - Set `pageSize` (max 100) - Check response for `offset` string - Pass `offset` to next request unchanged - Keep filters/sorts/view stable between pages ## Known Pitfalls **ID Formats**: - Base IDs: `appXXXXXXXXXXXXXX` (17 chars) - Table IDs: `tblXXXXXXXXXXXXXX` (17 chars) - Record IDs: `recXXXXXXXXXXXXXX` (17 chars) - Field IDs: `fldXXXXXXXXXXXXXX` (17 chars) **Batch Limits**: - CREATE_RECORDS: max 10 per request - UPDATE_MULTIPLE_RECORDS: max 10 per request - DELETE_MULTIPLE_RECORDS: max 10 per request ## Quick Reference | Task | Tool Slug | Key Params | |------|-----------|------------| | List bases | AIRTABLE_LIST_BASES | (none) | | Get schema | AIRTABLE_GET_BASE_SCHEMA | baseId | | List records | AIRTABLE_LIST_RECORDS | baseId, tableIdOrName | | Get record | AIRTABLE_GET_RECORD | baseId, tableIdOrName, recordId | | Create record | AIRTABLE_CREATE_RECORD | baseId, tableIdOrName, fields | | Create records | AIRTABLE_CREATE_RECORDS | baseId, tableIdOrName, records | | Update record | AIRTABLE_UPDATE_RECORD | baseId, tableIdOrName, recordId, fields | | Update records | AIRTABLE_UPDATE_MULTIPLE_RECORDS | baseId, tableIdOrName, records | | Delete record | AIRTABLE_DELETE_RECORD | baseId, tableIdOrName, recordId | | Create field | AIRTABLE_CREATE_FIELD | baseId, tableIdOrName, name, type | | Update field | AIRTABLE_UPDATE_FIELD | baseId, tableIdOrName, fieldId | | Update table | AIRTABLE_UPDATE_TABLE | baseId, tableIdOrName, name | | List comments | AIRTABLE_LIST_COMMENTS | baseId, tableIdOrName, recordId | --- *Powered by [Composio](https://composio.dev)*
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.