airtable
Airtable combines the familiarity of spreadsheets with the structure of databases. With this integration, agents can read, create, and update Airtable records as part of guided, reliable workflows.
What you can do
Fetch multiple records from a base and filter/sort them.
Retrieve an individual record by its ID.
Create new entries with typed fields and attachments.
Update existing records (single or bulk) to keep Airtable in sync with actions your agents take.
Where this shines
Centralizing a “source of truth” dataset for decisions.
Human-in-the-loop reviews (agents propose updates, teams approve in Airtable).
Enrichment and scoring pipelines (read → enrich → write-back).
Campaign/task orchestration across teams.
Usage Instructions
Example Workflow: Read → Decide → Bulk Update
Step 1: Read all open, high-priority tasks.
Step 2: Decide what changes are needed (e.g., mark as processed).
Step 3: Write back updates in bulk using one API call.
This pattern is useful for cleaning queues, re-scoring tasks, or updating statuses.
Example Workflow: Idempotent Create (Upsert by Email)
Step 1: Check for an existing record using a unique field like
Email.Step 2: If the record exists → update it with new values.
Step 3: If no record exists → create it fresh.
This ensures no duplicates and mimics an “upsert” pattern that Airtable doesn’t natively provide.
Tools
airtable_list_records
airtable_list_recordsRead multiple records from an Airtable table.
Input
baseId
string
Yes
ID of the Airtable base (e.g., appXXXXXXXXXXXXXX)
tableId
string
Yes
ID or name of the table (e.g., tblXXXXXXXXXXXXXX or "Tasks")
maxRecords
number
No
Maximum number of records to return
filterFormula
string
No
Airtable formula to filter (e.g., AND({Status}='Open'))
view
string
No
Use a view’s filters/sorts
sort
array
No
Sort by fields, e.g., [{"field":"Due","direction":"asc"}]
fields
string[]
No
Limit returned fields
Output
records
json
Array of records { id, fields, createdTime }
metadata
json
Request/table metadata
totalRecords
number
Count of records retrieved
airtable_get_record
airtable_get_recordRetrieve a single record from an Airtable table by its record ID. This is useful when you already know the record’s identifier (for example, from a previous listing) and want the full details.
Input
baseId
string
Yes
ID of the Airtable base
tableId
string
Yes
ID or name of the table
recordId
string
Yes
Unique record ID (e.g., rec123XYZ)
Output
record
json
Retrieved record object
metadata
json
Operation metadata
Example Output
airtable_create_records
airtable_create_recordsCreate one or more new records in a target Airtable table. This tool is most useful when ingesting data from external workflows, collecting user submissions, or creating rows for downstream tracking.
Input
baseId
string
Yes
ID of the Airtable base
tableId
string
Yes
ID or name of the table
records
array
Yes
Array of { fields: { ... } } objects
typecast
boolean
No
Coerce values into field types (helpful for selects/lookups)
Output
records
json
Newly created records with IDs
metadata
json
Response metadata
Example Input
Example Output
airtable_update_record
airtable_update_recordUpdate a single record in Airtable by its unique recordId.
This is commonly used in workflows where an agent enriches, verifies, or modifies data in-place — for example, marking a lead as Qualified, updating the status of a task, or adding comments to an entry.
Input
baseId
string
Yes
Airtable base ID (e.g., appXXXXXXXXXXXXXX)
tableId
string
Yes
Table ID or name (e.g., tblXXXXXXXXXXXXXX or "Tasks")
recordId
string
Yes
Unique ID of the record to update
fields
object
Yes
A JSON object mapping field names to new values (inner dictionary only)
typecast
boolean
No
If true, Airtable will coerce values into field types (helpful for selects, lookups, and linked records)
Output
record
json
The updated record object
metadata
json
Information about the update operation
updatedFields
string[]
Array of field names that were modified
Example Input
Example Output
airtable_update_multiple_records
airtable_update_multiple_recordsUpdate multiple records in Airtable within a single request. Use this for batch status changes, enrichment, and syncing external systems efficiently.
Input
baseId
string
Yes
Airtable base ID (e.g., appXXXXXXXXXXXXXX).
tableId
string
Yes
Table ID or name (e.g., tblXXXXXXXXXXXXXX or "Tasks").
updates
array
Yes
Array of update objects. Each item must include an id (record ID) and a fields map.
typecast
boolean
No
If true, Airtable coerces values into field types (useful for select, lookup, linked fields).
Each update object should look like:
Output
records
json
Yes
List of updated record objects (IDs + fields).
metadata
json
Yes
Metadata about the operation.
updatedRecordIds
string
Yes
AArray of record IDs that were updated successfully.
Example Input
Example Output
When to Use
Bulk move tasks from Open → Processed.
Apply enrichment (scores, segments) to many leads at once.
Sync external systems that produce batch updates.
Implement efficient read → decide → write-back pipelines.
Debugging Tips
Check IDs: Prefer
tableId(tbl...) in production. Table names can break if renamed.Validate values: Dates should be ISO 8601 (
YYYY-MM-DDTHH:mm:ssZ). Ensure select options match exactly.Log responses: Keep track of Airtable’s error payloads. They often include hints about which field failed.
Reduce payloads: Large bulk updates can trigger timeouts; split into multiple requests.
Use Views: When filtering records, views encapsulate filter logic and reduce complexity in formulas.
Best Practices
Use IDs instead of names for stability.
Add timestamps like
Updated AtorProcessed Atfor traceability.Validate inputs before sending (email formats, select values).
For upserts: list → check by unique field → update or create.
Handle retries gracefully, especially with 429 rate limits.
Was this helpful?
