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_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.
-
Verify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds
-
Call RUBE_MANAGE_CONNECTIONS with toolkit airtable
-
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
- 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 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
- 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 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
- 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 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
- 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 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