home / skills / composiohq / awesome-claude-skills / airtable-automation

airtable-automation skill

/airtable-automation

This skill automates Airtable operations via Rube MCP, enabling you to manage bases, tables, and records efficiently with current tool schemas.

This is most likely a fork of the airtable-automation skill from openclaw
npx playbooks add skill composiohq/awesome-claude-skills --skill airtable-automation

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
6.5 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]
---

# 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)*

Overview

This skill automates Airtable tasks using Composio's Airtable toolkit via Rube MCP. It provides reliable workflows for discovering bases, inspecting schemas, and performing CRUD operations on records, fields, views, and comments. Always run the tool discovery step first to fetch current tool schemas and connection status.

How this skill works

The agent talks to Rube MCP endpoints (RUBE_SEARCH_TOOLS and RUBE_MANAGE_CONNECTIONS) to ensure the Airtable toolkit and an active connection are available. It then uses toolkit actions like AIRTABLE_LIST_BASES, AIRTABLE_GET_BASE_SCHEMA, AIRTABLE_LIST_RECORDS, AIRTABLE_CREATE_RECORD(S), UPDATE/DELETE operations, and field/table management to perform targeted tasks. Tool responses must be used to validate IDs, field names, pagination offsets, and rate-limit signals before issuing follow-up calls.

When to use it

  • Create, read, update, or delete Airtable records programmatically
  • Search and filter records with Airtable formulas
  • Add or modify table fields and metadata
  • List or add comments on records
  • Automate batch updates with proper chunking and pagination

Best practices

  • Always call RUBE_SEARCH_TOOLS first to get live tool schemas and parameter names
  • Verify connection via RUBE_MANAGE_CONNECTIONS; follow auth link if status is not ACTIVE
  • Call AIRTABLE_GET_BASE_SCHEMA before any record or field operation to avoid UNKNOWN_FIELD_NAME errors
  • Chunk batch operations (max 10 records per create/update/delete request) and respect pageSize max 100
  • Keep filters, sorts, and view constant across paginated requests to avoid duplicates or skipped rows
  • Handle 429 and 422 responses explicitly: use Retry-After for rate limits and enable typecast=true for option mismatches

Example use cases

  • Import new leads into a Sales base by listing bases, getting schema, and calling AIRTABLE_CREATE_RECORDS in chunks
  • Find overdue tasks using AIRTABLE_LIST_RECORDS with filterByFormula and then update status fields
  • Add a new singleSelect field by inspecting schema then calling AIRTABLE_CREATE_FIELD and migrating values
  • Fetch comments on a support ticket record to include in a customer summary
  • Delete or archive stale records in small batches using offset pagination and permission checks

FAQ

Do I need API keys to use Rube MCP?

No API keys are required for the MCP endpoint; add https://rube.app/mcp as an MCP server in your client and use the provided toolkit flows.

What are common causes of UNKNOWN_FIELD_NAME or INVALID_FILTER_BY_FORMULA?

These errors occur when field names or formula syntax don’t match the current schema—always fetch the base schema and wrap field names in { } and quote string values.