{"skill":{"slug":"native-airtable","displayName":"Native Airtable","summary":"Read Airtable bases, tables, and records directly via the Airtable API. Use when you need spreadsheet/database data from Airtable. Calls api.airtable.com dir...","description":"---\nname: airtable\ndescription: \"Read Airtable bases, tables, and records directly via the Airtable API. Use when you need spreadsheet/database data from Airtable. Calls api.airtable.com directly with no third-party proxy.\"\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - AIRTABLE_PAT\n      bins:\n        - python3\n    primaryEnv: AIRTABLE_PAT\n    files:\n      - \"scripts/*\"\n---\n\n# Airtable\n\nRead bases, tables, and records directly via `api.airtable.com`.\n\n## Setup (one-time)\n\n1. Go to https://airtable.com/create/tokens\n2. Click **+ Create new token**, give it a name\n3. Add scopes:\n   - `data.records:read`\n   - `schema.bases:read`\n4. Under **Access**, select which bases to grant access to (or all)\n5. Copy the token — it starts with `pat`\n6. Set the environment variable:\n   ```\n   AIRTABLE_PAT=pat_your_token_here\n   ```\n\n## Commands\n\n### List all accessible bases\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-bases\n```\n\n### List tables in a base\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-tables <base_id>\n```\n\n### List records in a table\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"Table Name\"\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"Table Name\" --limit 50\n```\n\n### Filter records with a formula\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"Tasks\" --filter \"{Status}='Done'\"\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"Contacts\" --filter \"NOT({Email}='')\"\n```\n\n### Filter to specific fields only\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"People\" --fields \"Name,Email,Company\"\n```\n\n### Use a specific view\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> \"Tasks\" --view \"Active Tasks\"\n```\n\n### Get a specific record\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py get-record <base_id> \"Table Name\" <record_id>\n```\n\n### Search records\n```bash\npython3 /mnt/skills/user/airtable/scripts/airtable.py search-records <base_id> \"Contacts\" \"Smith\"\npython3 /mnt/skills/user/airtable/scripts/airtable.py search-records <base_id> \"Contacts\" \"smith@acme.com\" --field \"Email\"\n```\n\n## Notes\n\n- Free plan: unlimited bases, 1,000 records per base. API reads work on free.\n- Base IDs start with `app`, record IDs start with `rec`.\n- Table names are case-sensitive and must match exactly. Use quotes if the name has spaces.\n- Airtable deprecated old API keys in Feb 2024. Only Personal Access Tokens (PAT) work now.\n","tags":{"latest":"0.1.0"},"stats":{"comments":0,"downloads":1232,"installsAllTime":1,"installsCurrent":1,"stars":2,"versions":1},"createdAt":1771927570214,"updatedAt":1778992841483},"latestVersion":{"version":"0.1.0","createdAt":1771927570214,"changelog":"Initial release — Connects directly to Airtable's official API for reading spreadsheet/database contents.\n\n- Read Airtable bases, tables, and records through direct API calls (no third-party proxy).\n- Supports filtering, field selection, view selection, and record searching.\n- Requires a Personal Access Token (PAT) for authentication (old API keys not supported).\n- Provides command-line scripts for listing and querying bases, tables, and records.\n- Clear setup instructions and usage examples included.","license":null},"metadata":{"setup":[{"key":"AIRTABLE_PAT","required":true}],"os":null,"systems":null},"owner":{"handle":"codeninja23","userId":"s173w4sv23s5bb8w4kjv1t143n842den","displayName":"codeninja23","image":"https://avatars.githubusercontent.com/u/34013241?v=4"},"moderation":null}