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 13 tools with complete input schemas derived from Zod validators and descriptions present for all tools. Naming follows verb_noun convention (list_, search_, create_, update_, delete_). However, parameter descriptions are minimal (often 1-2 sentences), output schemas are not documented, and error handling lacks recovery guidance. Tool descriptions average ~50 chars, below the 194-char baseline for A+ tools. No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE). Resources feature is implemented but underutilized.
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 detailed information about a specific table
Get a specific record by ID
List all accessible Airtable bases
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does create_record return? Does it include the new record ID?). Violates pattern:tool requirement.
Tool descriptions are minimal (30-60 chars vs 194-char baseline). Lack context on WHEN to use each tool vs similar ones. E.g., list_records vs search_records distinction unclear; describe_table vs list_tables unclear.
No tool annotations despite clear risk stratification. Destructive tools (delete_records) and write tools (create_record, update_records) lack destructiveHint/idempotentHint annotations. LLMs cannot infer retry safety or confirmation requirements.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
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 evidence of actionable error messages (e.g., 'Record not found. Try search_records() first.'). Errors likely return raw API responses or stack traces.
Parameter descriptions are sparse. E.g., 'filterByFormula' has description 'Airtable formula to filter records' but does not explain format, syntax, or examples. 'sort' array lacks element schema documentation.