A Model Context Protocol server that provides read and write access to Airtable databases. This server enables LLMs to inspect database schemas, then read and write records.
Server has 15 well-structured tools with complete JSON schemas and descriptions. All tools follow verb_noun naming (list_, search_, create_, update_, delete_, describe_). Schemas are properly defined using Zod and converted to JSON Schema. However, parameter descriptions are minimal (often 1-2 sentences), output schemas are not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Missing pagination guidance for list tools. Descriptions average ~60 chars, below the 194-char baseline for A+ tools.
Create a new field in a table
Create a new record in a table
Create a new table in a base
Delete records from a table
Get a complete schema for all accessible bases and their tables. This includes all tables, fields, views, and information such as column descriptions or allowed field types.
Get a complete schema for a specific base, including all its tables, fields, views and information such as colunm descriptions or allowed field types
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. delete_records, create_record, update_records, and other write/destructive tools lack machine-readable safety markers.
Output schemas not documented. Tools return JSON but LLMs cannot infer response structure. E.g., list_records returns records array but field names, types, and pagination info are undocumented.
Pagination not addressed. list_records and search_records accept maxRecords but no offset/cursor or total_count guidance. Large result sets risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Get detailed information about a specific table
Get a specific record by ID
List all accessible Airtable bases
List records from a table
List all tables in a specific base
Search for records containing specific text
Update a field's name or description
Update up to 10 records in a table
Update a table's name or description
Error handling lacks recovery guidance. No indication of retryable vs fatal errors, or what the LLM should do next (e.g., 'Try search_records() first if you don't have a record ID').
Parameter descriptions are minimal (1-2 sentences). 'The ID of the base' and 'The ID of the table' repeat across 12+ tools without context on format, length, or how to obtain them.