Gen6

Airtable

Read, create, and update 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

A common agent workflow with Airtable follows this pattern:

  1. Read records to gather context (filter or sort as needed).
  2. Decide in your logic layer (classify, verify, enrich, or route).
  3. Write-back updates or create new rows to persist outcomes.

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

Read multiple records from an Airtable table.

Input

ParameterTypeRequiredDescription
baseIdstringYesID of the Airtable base (e.g., appXXXXXXXXXXXXXX)
tableIdstringYesID or name of the table (e.g., tblXXXXXXXXXXXXXX or "Tasks")
maxRecordsnumberNoMaximum number of records to return
filterFormulastringNoAirtable formula to filter (e.g., AND({Status}='Open'))
viewstringNoUse a view’s filters/sorts
sortarrayNoSort by fields, e.g., [{"field":"Due","direction":"asc"}]
fieldsstring[]NoLimit returned fields

Output

ParameterTypeDescription
recordsjsonArray of records { id, fields, createdTime }
metadatajsonRequest/table metadata
totalRecordsnumberCount of records retrieved
{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "createdTime": "2025-07-29T09:49:30.000Z",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Submission Date": "2025-08-22",
        "Designer": "Bob Smith",
        "Comments": "Reviewed by the design team."
      }
    }
  ],
  "metadata": { "totalRecords": 1 }
}

Screenshot

Airtable screenshot


airtable_get_record

Retrieve 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

ParameterTypeRequiredDescription
baseIdstringYesID of the Airtable base
tableIdstringYesID or name of the table
recordIdstringYesUnique record ID (e.g., rec123XYZ)

Output

ParameterTypeDescription
recordjsonRetrieved record object
metadatajsonOperation metadata

Example Output

{
  "record": {
    "id": "rec0tK7W0ICQikuee",
    "createdTime": "2025-07-29T09:49:30.000Z",
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Submission Date": "2025-08-22",
      "Designer": "Bob Smith",
      "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
    }
  },
  "metadata": { "recordCount": 1 }
}

Screenshot

Airtable screenshot

airtable_create_records

Create 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

ParameterTypeRequiredDescription
baseIdstringYesID of the Airtable base
tableIdstringYesID or name of the table
recordsarrayYesArray of { fields: { ... } } objects
typecastbooleanNoCoerce values into field types (helpful for selects/lookups)

Output

ParameterTypeDescription
recordsjsonNewly created records with IDs
metadatajsonResponse metadata

Example Input

[
  {
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Submission Date": "2025-08-22",
      "Designer": "Bob Smith",
      "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
    }
  }
]

Example Output

{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "createdTime": "2025-07-29T09:49:30.000Z",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Submission Date": "2025-08-22",
        "Designer": "Bob Smith",
        "Comments": "Reviewed by the design team. Needs minor adjustments in the color scheme."
      }
    }
  ],
  "metadata": {}
}

Screenshot

Airtable screenshot

airtable_update_record

Update 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

ParameterTypeRequiredDescription
baseIdstringYesAirtable base ID (e.g., appXXXXXXXXXXXXXX)
tableIdstringYesTable ID or name (e.g., tblXXXXXXXXXXXXXX or "Tasks")
recordIdstringYesUnique ID of the record to update
fieldsobjectYesA JSON object mapping field names to new values (inner dictionary only)
typecastbooleanNoIf true, Airtable will coerce values into field types (helpful for selects, lookups, and linked records)

Output

ParameterTypeDescription
recordjsonThe updated record object
metadatajsonInformation about the update operation
updatedFieldsstring[]Array of field names that were modified

Example Input

{
  "recordId": "rec0tK7W0ICQikuee",
  "fields": {
    "Status": "Processed",
    "Comments": "Task completed successfully.",
    "Processed At": "2025-10-01T14:32:00.000Z"
  }
}

Example Output

{
  "record": {
    "id": "rec0tK7W0ICQikuee",
    "createdTime": "2025-07-29T09:49:30.000Z",
    "fields": {
      "Design Name": "Mobile App Onboarding",
      "Status": "Processed",
      "Comments": "Task completed successfully.",
      "Processed At": "2025-10-01T14:32:00.000Z"
    }
  },
  "metadata": {
    "updatedFields": ["Status", "Comments", "Processed At"]
  }
}

Screenshot

Airtable screenshot


airtable_update_multiple_records

Update multiple records in Airtable within a single request.
Use this for batch status changes, enrichment, and syncing external systems efficiently.

Input

ParameterTypeRequiredDescription
baseIdstringYesAirtable base ID (e.g., appXXXXXXXXXXXXXX).
tableIdstringYesTable ID or name (e.g., tblXXXXXXXXXXXXXX or "Tasks").
updatesarrayYesArray of update objects. Each item must include an id (record ID) and a fields map.
typecastbooleanNoIf true, Airtable coerces values into field types (useful for select, lookup, linked fields).

Each update object should look like:

{
  "id": "recXXXXXXXXXXXXXX",
  "fields": {
    "Status": "Processed",
    "Comments": "Updated in bulk run"
  }
}

Output

ParameterTypeRequiredDescription
recordsjsonYesList of updated record objects (IDs + fields).
metadatajsonYesMetadata about the operation.
updatedRecordIdsstringYesAArray of record IDs that were updated successfully.

Example Input

{
  "updates": [
    {
      "id": "rec0tK7W0ICQikuee",
      "fields": {
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    },
    {
      "id": "recDFByLwmeFEA3VI",
      "fields": {
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    }
  ]
}

Example Output

{
  "records": [
    {
      "id": "rec0tK7W0ICQikuee",
      "fields": {
        "Design Name": "Mobile App Onboarding",
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    },
    {
      "id": "recDFByLwmeFEA3VI",
      "fields": {
        "Design Name": "Checkout Flow Improvement",
        "Status": "Processed",
        "Processed At": "2025-10-02T10:15:00.000Z"
      }
    }
  ],
  "metadata": {
    "updatedRecordIds": ["rec0tK7W0ICQikuee", "recDFByLwmeFEA3VI"]
  }
}

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 At or Processed At for 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.

Airtable