Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ajayrajan05-airtable
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/airtable
What's inside
- Skill name
airtable- Description
- Airtable REST API via curl. Records CRUD, filters, upserts.
- License
- MIT
- Instructions
- 215 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# Airtable — Bases, Tables & Records
Work with Airtable's REST API directly via `curl` using the `terminal` tool. No MCP server, no OAuth flow, no Python SDK — just `curl` and a personal access token.
## Prerequisites
1. Create a **Personal Access Token (PAT)** at https://airtable.com/create/tokens (tokens start with `pat...`).
2. Grant these scopes (minimum):
- `data.records:read` — read rows
- `data.records:write` — create / update / delete rows
- `schema.bases:read` — list bases and tables
3. **Important:** in the same token UI, add each base you want to access to the token's **Access** list. PATs are scoped per-base — a valid token on the wrong base returns `403`.
4. Store the token in `${VOICEOS_HOME:-~/.voiceos}/.env` (or via `python main.py setup`):
```
AIRTABLE_API_KEY=pat_your_token_here
```
> Note: legacy `key...` API keys were deprecated Feb 2024. Only PATs and OAuth tokens work now.
## API Basics
- **Endpoint:** `https://api.airtable.com/v0`
- **Auth header:** `Authorization: Bearer $AIRTABLE_API_KEY`
- **All requests** use JSON (`Content-Type: application/json` for any POST/PATCH/PUT body).
- **Object IDs:** bases `app...`, tables `tbl...`, records `rec...`, fields `fld...`. IDs never change; names can. Prefer IDs in automations.
- **Rate limit:** 5 requests/sec/base. `429` → back off. Burst on a single base will be throttled.
Base curl pattern:
```bash
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE?maxRecords=5" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
`-s` suppresses curl's progress bar — keep it set for every call so the tool output stays clean for VoiceOS. Pipe through `python3 -m json.tool` (always present) or `jq` (if installed) for readable JSON.
## Field Types (request body shapes)
| Field type | Write shape |
|---|---|
| Single line text | `"Name": "hello"` |
| Long text | `"Notes": "multi\nline"` |
| Number | `"Score": 42` |
| Checkbox | `"Done": true` |
| Single select | `"Status": "Todo"` (name must already exist unless `typecast: true`) |
| Multi-select | `"Tags": ["urgent", "bug"]` |
| Date | `"Due": "2026-04-01"` |
| DateTime (UTC) | `"At": "2026-04-01T14:30:00.000Z"` |
| URL / Email / Phone | `"Link": "https://…"` |
| Attachment | `"Files": [{"url": "https://…"}]` (Airtable fetches + rehosts) |
| Linked record | `"Owner": ["recXXXXXXXXXXXXXX"]` (array of record IDs) |
| User | `"AssignedTo": {"id": "usrXXXXXXXXXXXXXX"}` |
Pass `"typecast": true` at the top level of a create/update body to let Airtable auto-coerce values (e.g. create a new select option on the fly, convert `"42"` → `42`).
## Common Queries
### List bases the token can see
```bash
curl -s "https://api.airtable.com/v0/meta/bases" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
### List tables + schema for a base
```bash
curl -s "https://api.airtable.com/v0/meta/bases/$BASE_ID/tables" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
Use this BEFORE mutating — confirms exact field names and IDs, surfaces `options.choices` for select fields, and shows primary-field names.
### List records (first 10)
```bash
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE?maxRecords=10" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
### Get a single record
```bash
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE/$RECORD_ID" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
### Filter records (filterByFormula)
Airtable formulas must be URL-encoded. Let Python stdlib do it — never hand-encode:
```bash
FORMULA="{Status}='Todo'"
ENC=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$FORMULA")
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE?filterByFormula=$ENC&maxRecords=20" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
Useful formula patterns:
- Exact match: `{Email}='user@example.com'`
- Contains: `FIND('bug', LOWER({Title}))`
- Multiple conditions: `AND({Status}='Todo', {Priority}='High')`
- Or: `OR({Owner}='alice', {Owner}='bob')`
- Not empty: `NOT({Assignee}='')`
- Date comparison: `IS_AFTER({Due}, TODAY())`
### Sort + select specific fields
```bash
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE?sort%5B0%5D%5Bfield%5D=Priority&sort%5B0%5D%5Bdirection%5D=asc&fields%5B%5D=Name&fields%5B%5D=Status" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
Square brackets in query params MUST be URL-encoded (`%5B` / `%5D`).
### Use a named view
```bash
curl -s "https://api.airtable.com/v0/$BASE_ID/$TABLE?view=Grid%20view&maxRecords=50" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" | python3 -m json.tool
```
Views apply their saved filter + sort server-side.
## Common Mutations
### Create a record
```bash
curl -s -X POST "https://api.airtable.com/v0/$BASE_ID/$TABLE" \
-H "Authorization: Bearer $AIRTABLE_API_KEY" \
-H "Content-Type: application/json" \From AjayRajan05/VoiceOS, MIT.
More from AjayRajan05/VoiceOS
- 0.536score
maps
AjayRajan05
Geocode, POIs, routes, timezones via OpenStreetMap/OSRM.
SkillCFreshness: C★ 10Claude Code +9 - 0.535score
serving-llms-vllm
AjayRajan05
vLLM: high-throughput LLM serving, OpenAI API, quantization.
SkillCFreshness: C★ 10Claude Code +9 - 0.534score
voiceos-platform
AjayRajan05
Configure, extend, and operate VoiceOS as a voice-first agent OS.
SkillCFreshness: C★ 10Claude Code +9 - 0.534score
huggingface-hub
AjayRajan05
HuggingFace hf CLI: search/download/upload models, datasets.
SkillCFreshness: C★ 10Claude Code +9 - 0.532score
segment-anything-model
AjayRajan05
SAM: zero-shot image segmentation via points, boxes, masks.
SkillCFreshness: C★ 10Claude Code +9 - 0.532score
google-workspace
AjayRajan05
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.
SkillCFreshness: C★ 10Claude Code +9 - 0.531score
nano-pdf
AjayRajan05
Edit PDF text/typos/titles via nano-pdf CLI (NL prompts).
SkillCFreshness: C★ 10Claude Code +9 - 0.531score
obsidian
AjayRajan05
Read, search, create, and edit notes in the Obsidian vault.
SkillCFreshness: C★ 10Claude Code +9
Signals
- Stars
- 10
- Forks
- 4
- Open issues
- 0
- Last commit (this folder)
- Jul 1, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/AjayRajan05/VoiceOS
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.333score
airtable
chaorenex1
Airtable REST API via curl.
SkillAFreshness: AClaude Code +9 - 0.333score
airtable
SatangThevalue
Airtable REST API via curl.
SkillAFreshness: AClaude Code +9 - 0.329score
airtable
rmusser01
Airtable REST API via curl.
SkillBFreshness: B★ 2Claude Code +9 - 0.309score
airtable
sweetloser
Airtable REST API via curl.
SkillBFreshness: BClaude Code +9 - 0.305score
airtable
maximusmaximus
Airtable REST API via curl.
SkillBFreshness: BClaude Code +9
More from AjayRajan05
- 0.536score
maps
AjayRajan05
Geocode, POIs, routes, timezones via OpenStreetMap/OSRM.
SkillCFreshness: C★ 10Claude Code +9 - 0.535score
serving-llms-vllm
AjayRajan05
vLLM: high-throughput LLM serving, OpenAI API, quantization.
SkillCFreshness: C★ 10Claude Code +9 - 0.534score
voiceos-platform
AjayRajan05
Configure, extend, and operate VoiceOS as a voice-first agent OS.
SkillCFreshness: C★ 10Claude Code +9 - 0.534score
huggingface-hub
AjayRajan05
HuggingFace hf CLI: search/download/upload models, datasets.
SkillCFreshness: C★ 10Claude Code +9 - 0.532score
segment-anything-model
AjayRajan05
SAM: zero-shot image segmentation via points, boxes, masks.
SkillCFreshness: C★ 10Claude Code +9 - 0.532score
google-workspace
AjayRajan05
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.
SkillCFreshness: C★ 10Claude Code +9
Cite this page
airtable skill. Agent Mart. https://agentmart.dev/skills/ajayrajan05-airtable (last updated 2026-10-24)