Airtable Connector
CleanAccess 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_TOKENoauth2integration: airtable
Version History
SHA-256 (latest)
f131f7a11f1173e15c2f3074f29692ea3400b3558617c9d4fccaab411d7e6d30