PollyHub

Airtable Connector

Clean

Access Airtable with managed OAuth to list bases, read and write records, manage tables, and search data using the Airtable API.

SKILL.md

---
name: airtable-connector
description: "Access Airtable databases with managed OAuth. List bases, read and write records, manage tables and fields. Use when the user wants to query Airtable data, create or update records, list bases, search records, or manage Airtable tables."
metadata:
  polly:
    polly_managed_connector: true
    auth:
      - env: AIRTABLE_ACCESS_TOKEN
        type: oauth2
        integration_id: airtable
        description: Airtable OAuth access
        scopes:
          - data.records:read
          - data.records:write
          - schema.bases:read
          - schema.bases:write
          - data.recordComments:read
          - data.recordComments:write
    primaryEnv: AIRTABLE_ACCESS_TOKEN
---

# Airtable Connector

Access Airtable through the Airtable REST API using managed OAuth.

## First-Time Setup

If Airtable is not connected yet, run:

`manage_auth(action="connect", integration_id="airtable", auth_env="AIRTABLE_ACCESS_TOKEN")`

## Auth & Security

- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails, reconnect with:
  `manage_auth(action="connect", integration_id="airtable", auth_env="AIRTABLE_ACCESS_TOKEN")`

## Base URL

`https://api.airtable.com/v0`

All requests include:

`Authorization: Bearer $AIRTABLE_ACCESS_TOKEN`

## Quick Usage

List bases:

```bash
curl -sS \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  "https://api.airtable.com/v0/meta/bases"
```

List records in a table:

```bash
curl -sS \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  "https://api.airtable.com/v0/<baseId>/<tableIdOrName>?maxRecords=100"
```

Get a record:

```bash
curl -sS \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  "https://api.airtable.com/v0/<baseId>/<tableIdOrName>/<recordId>"
```

Create records:

```bash
curl -sS -X POST \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"records":[{"fields":{"Name":"New Record","Status":"Active"}}]}' \
  "https://api.airtable.com/v0/<baseId>/<tableIdOrName>"
```

Update records:

```bash
curl -sS -X PATCH \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"records":[{"id":"<recordId>","fields":{"Status":"Done"}}]}' \
  "https://api.airtable.com/v0/<baseId>/<tableIdOrName>"
```

Delete records:

```bash
curl -sS -X DELETE \
  -H "Authorization: Bearer $AIRTABLE_ACCESS_TOKEN" \
  "https://api.airtable.com/v0/<baseId>/<tableIdOrName>?records[]=<recordId>"
```

## Rules

- Use `filterByFormula` query parameter for server-side filtering (for example: `filterByFormula={Status}='Active'`)
- For pagination, pass `offset` from prior responses
- Batch create/update supports up to 10 records per request
- On API errors, surface status + response body clearly
- On 401/403, reconnect with:
  `manage_auth(action="connect", integration_id="airtable", auth_env="AIRTABLE_ACCESS_TOKEN")`
- Never log, echo, or expose credential values in any output
Authorstella
Downloads3
Versions2
Published1d ago
Auth Requirements
AIRTABLE_ACCESS_TOKENoauth2

integration: airtable

Version History

v1.1.0latest

Add polly_managed_connector flag and connector-skill tag

Apr 9, 2026

Clean.zip
v1.0.0

Initial release of v0.8 Tier 3 connectors

Apr 9, 2026

Clean.zip

SHA-256 (latest)

f131f7a11f1173e15c2f3074f29692ea3400b3558617c9d4fccaab411d7e6d30