airtable-cli
This skill enables an agent to interact with Airtable bases, tables, and records via the airtable-mcp CLI.
Identity proven by GitHub's verified organisation badge (Airtable)
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
- License
- MIT (permissive)
- Pin
- 812ee67pinned Oct 9, 2026
- Context cost
- about 2,100 tokenswhen the skill loads
- GitHub stars
- 50on airtable/skills
- Scripts
- None found
What it does
“Lists bases, reads and writes records, manages tables and fields, filters and searches data in Airtable via the `airtable-mcp` CLI. Use when the task involves Airtable data or the user mentions airtable-mcp, bases, tables, records, or fields.”
Generated summary from the skill's own text
This skill enables an agent to interact with Airtable bases, tables, and records via the airtable-mcp CLI. The agent can list bases and tables, read and write records, manage fields, and filter or search data using the Airtable API with personal access token authentication.
When to use it
- User needs to access or modify Airtable bases, tables, or records
- Task involves searching, filtering, or querying Airtable data
- Agent must create, update, or delete records in Airtable
- User mentions Airtable, bases, tables, records, or fields
When not to
- Task requires complex formula-based filtering beyond structured JSON conditions
- User has only interface-level access to Airtable bases
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add airtable/skills --skill airtable-cliInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install airtable/skills airtable-cli@812ee67f1fd3d76fb45ff8df40afaa0448602ba8Installs the commit we checked (812ee67).
Copy by hand
Download the folder at 812ee67 and put it in .claude/skills/airtable-cli for Claude Code and in .agents/skills/airtable-cli for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install airtable@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "airtable-cli" by Airtable. Source, pinned to commit 812ee67f1fd3d76fb45ff8df40afaa0448602ba8: https://github.com/airtable/skills/tree/812ee67f1fd3d76fb45ff8df40afaa0448602ba8/plugins/airtable/skills/airtable-cli 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/airtable-cli/ for Claude Code and .agents/skills/airtable-cli/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/airtable/airtable-cli
SKILL.md at the pin
---
name: airtable-cli
description: Lists bases, reads and writes records, manages tables and fields, filters and searches data in Airtable via the `airtable-mcp` CLI. Use when the task involves Airtable data or the user mentions airtable-mcp, bases, tables, records, or fields.
license: MIT
metadata:
version: '1.0.0'
author: airtable
---
# airtable-mcp
## Self-discovery
Tools are fetched from the MCP server at runtime, so the CLI never has a hardcoded command list. Discover what's available:
```sh
airtable-mcp tools # human-readable list
airtable-mcp tools --json # machine-parseable list
airtable-mcp <tool> --help # show flags and descriptions for a tool
```
Run `airtable-mcp tools` before assuming a tool exists. Tool names, arguments, and output shapes can change between server releases without a CLI update.
## Install
```sh
npm install -g @airtable/mcp-cli
```
## Auth
The CLI needs an Airtable personal access token (PAT). Two paths:
**Environment variable (preferred for scripts/agents):**
```sh
export AIRTABLE_TOKEN=pat_xxx
```
**Interactive configure (stores token in `~/.airtable/cli.json` with 0600 permissions):**
```sh
airtable-mcp configure
```
Create tokens at https://airtable.com/create/tokens. Ensure the token has the scopes required by the tools being called.
`AIRTABLE_TOKEN` takes precedence over saved profiles when no `--profile` flag is set. Never log or echo tokens.
## Quick reference
| Task | Command |
| ---------------------- | ------------------------------------------------------- |
| Set up credentials | `airtable-mcp configure` |
| Add a named profile | `airtable-mcp configure --profile work` |
| Check auth status | `airtable-mcp whoami` |
| Remove credentials | `airtable-mcp logout` |
| Remove all profiles | `airtable-mcp logout --all` |
| List available tools | `airtable-mcp tools` |
| Run a tool | `airtable-mcp <tool> --flagName value` |
| Get tool help | `airtable-mcp <tool> --help` |
| Pass args via stdin | `echo '{"key":"val"}' \| airtable-mcp <tool> --input -` |
| Bypass tool cache | `airtable-mcp <tool> --refresh` |
| Suppress status msgs | `airtable-mcp <tool> -q` |
| Raw text output | `airtable-mcp <tool> --output raw` |
| Use a specific profile | `airtable-mcp <tool> --profile work` |
Tool names use hyphens on the CLI (`list-records`) but underscores in MCP (`list_records`). The CLI translates automatically.
## Workflow
1. **Auth** — set `AIRTABLE_TOKEN` or run `airtable-mcp configure`
2. **Discover** — run `airtable-mcp tools` to see available tools
3. **Inspect** — run `airtable-mcp <tool> --help` for flags and descriptions
4. **Check access** — in `tools --json` output, check the `access` field: `read-only`, `write`, or `destructive`. Confirm with the user before running `destructive` tools.
5. **Execute** — run `airtable-mcp <tool> --flagName value`
## Output & automation
- Default output is formatted JSON to stdout. Status messages go to stderr.
- `--json` on `tools` gives a JSON array of `{name, title, access}`.
- `-q` / `--quiet` suppresses stderr status messages (cache warnings, etc).
- `--output raw` returns the raw server response text instead of parsed JSON.
- `--input -` reads tool arguments as a JSON object from stdin, bypassing flag parsing.
- Exit codes: `0` success, `1` error (auth, tool failure, not found), `2` usage error (bad flags, bad input).
## Common tasks
**Find a base and list its tables:**
```sh
airtable-mcp search-bases --searchQuery "Project Tracker" -q
airtable-mcp list-tables-for-base --baseId appEXAMPLEbase001 -q
```
**List records with specific fields:**
```sh
airtable-mcp list-records-for-table \
--baseId appEXAMPLEbase001 --tableId tblEXAMPLEtable01 \
--fieldIds '["Name","Status"]' --pageSize 10 -q
```
**Filter records** — filters use structured JSON, not formula strings. Wrap conditions in an `operands` array; the top-level `operator` defaults to `and` if omitted:
```sh
airtable-mcp list-records-for-table \
--baseId appEXAMPLEbase001 --tableId tblEXAMPLEtable01 \
--filters '{"operator":"and","operands":[{"operator":"=","operands":["Status","Done"]}]}' -q
```
For select fields, filter by choice ID (from `get-table-schema`), not the display name. The `airtable-filters` skill covers compound filters, date filters, and operator-by-field-type details.
**Search records** — use `search-records` for free-text/fuzzy queries on large tables. Use `list-records-for-table` with `--filters` when filtering by exact field values:
```sh
airtable-mcp search-records \
--baseId appEXAMPLEbase001 --table tblEXAMPLEtable01 \
--query "acme" --fields '["Name","Notes"]' -q
```
Pass `--fields ALL_SEARCHABLE_FIELDS` to search across every indexed field. Date, rating, checkbox, and button fields are not searchable.
**Update records** — complex args are easier via `--input -`:
```sh
echo '{"baseId":"appEXAMPLEbase001","tableId":"tblEXAMPLEtable01","records":[{"id":"recEXAMPLErecord1","fields":{"fldEXAMPLEfield01":"Done"}}]}' \
| airtable-mcp update-records-for-table --input - -q
```
Select field values are returned as objects (`{"id":"sel...","name":"Done"}`) but must be written as plain strings (`"Done"`). Record field keys in create/update currently require field IDs (`fldEXAMPLEfield02`) — use `get-table-schema` to resolve names to IDs before writing. Note that `fieldIds`, `sort`, and `filters` accept both names and IDs.
## Gotchas
| Problem | Cause | Fix |
| -------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------ |
| `Unknown tool: X` | Tool name doesn't exist on the server or cache is stale | Run `airtable-mcp tools --refresh` to refresh, then retry |
| `Authentication failed` | Token expired, revoked, or wrong | Run `airtable-mcp configure` or check `AIRTABLE_TOKEN` |
| `Access denied` | Token missing required scopes | Add scopes at https://airtable.com/create/tokens |
| `Connection timed out` | Server unreachable (10s timeout) | Check network; CLI falls back to stale cache if available |
| Boolean flags take no value | `--dryRun true` passes `"true"` as next arg | Use `--dryRun` alone (booleans are presence-based) |
| Array/object args fail | Value isn't valid JSON | Pass as JSON string: `--fieldMappings '{"a":"b"}'` |
| Filter rejected at top level | Single condition passed without `operands` wrapper | Wrap in `{"operands":[...]}` (`operator` defaults to `and`) |
| Sort key is `fieldId` not `field` | `--sort '[{"field":"Name"}]'` silently ignored | Use `{"fieldId":"Name","direction":"asc"}` — accepts field IDs or names |
| Select filter returns no matches | Filtering by display name instead of choice ID | Run `get-table-schema` first to get `sel...` choice IDs |
| `INVALID_RECORDS` on batch write | Batch limit is 10 records per request (default; varies by account) | Split into chunks of ≤10 and check `<tool> --help` for the current limit |
| Permission error on `list-records-for-table` | User has interface-only access to the base | Use `list-records-for-page` / `get-record-for-page` instead |
| Endpoints restricted | CLI only allows HTTPS on `*.airtable.com` | Cannot point at arbitrary servers (security constraint) |
From airtable/skills at 812ee67, shown as plain text under its license: MIT (permissive). The license text is in plugins/airtable/skills/airtable-cli/SKILL.md.
View SKILL.md on GitHub at 812ee67Files
- SKILL.md8.6 KB · 1bc8f0dcf7d6
1 file, 8.6 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 812ee67More from Airtable
agent-activity-log
This skill sets up an opt-in audit table called Agent activity log that records agent decisions, blockers, and outcomes across long-running workflows.
Claude Code, Codex, Cursor +4 · about 2.2K tokens · pinned 6 days ago
airtable-filters
This skill constructs filter parameters for Airtable MCP tools that retrieve records from tables or interface pages.
Claude Code, Codex, Cursor +4 · about 1.7K tokens · pinned 6 days ago
airtable-overview
This skill explains the Airtable platform's core concepts and data architecture, including bases, tables, fields, records, views, automations, and interfaces.
Claude Code, Codex, Cursor +4 · about 440 tokens · pinned 6 days ago
marketing-ops
Sets up and operates marketing operations workflows in Airtable, including request intake, campaign orchestration, creative production, content calendars…
Claude Code, Codex, Cursor +4 · about 7.4K tokens · pinned 6 days ago
product-ops
Sets up and operates Airtable-based product operations workflows including roadmap management, customer feedback tracking, launch coordination, OKR alignment…
Claude Code, Codex, Cursor +4 · about 5.9K tokens · pinned 6 days ago
sales-ops
Sets up and operates Airtable-based sales workflows including pipeline management, account tracking, deal desk, RFP pipelines, partner CRMs, and…
Claude Code, Codex, Cursor +4 · about 7.4K tokens · pinned 6 days ago
Related in Data and databases
data-table-manager
This skill manages n8n Data Tables through creation, import, querying, and mutation operations.
by n8nOfficial publisher
Claude Code, Codex, Cursor +3 · about 2.1K tokens · pinned 6 days ago
algolia-automation
This skill automates Algolia search and indexing operations through the Rube MCP interface.
by ComposioOfficial publisher
Claude Code, Codex, Cursor +3 · about 690 tokens · pinned 6 days ago
expo-sqlite
This skill enables SQLite database operations in Expo and React Native apps for structured data storage, offline queues, and persistent caches.
by ExpoOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.6K tokens · pinned 6 days ago
prisma-8
This skill helps agents work with Prisma 8, a contract-first data layer for TypeScript projects.
by PrismaOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 3.5K tokens · pinned 6 days ago
analyzing-experiment-session-replays
This skill enables agents to analyze session recordings from experiment variants to identify behavioral differences between control and test groups.
by PostHogOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 6 days ago
auditing-warehouse-view-health
Audits materialized views in a PostHog data warehouse to identify failed views and flag unused ones that waste compute resources.
by PostHogOfficial publisher
Claude Code, Codex, Cursor +4 · about 1.4K tokens · pinned 6 days ago