Airtable MCP Server for Cloudflare Workers
Test Airtable tools directly in your browser. Select a tool and provide inputs to see the results.
Create a free account to test Airtable tools interactively. No credit card required.
airtable_list_basesList all Airtable bases accessible with the current API key. Returns a list of bases with their IDs, names, and permission levels. Use the offset parameter for pagination if there are more bases. Returns: { bases: [{ id, name, permissionLevel }], offset? }
airtable_get_base_schemaGet the schema (tables, fields, views) for a base. Returns all tables in the base with their fields and views. This is useful for understanding the structure before working with records. Args: - baseId: The base ID (e.g., 'appXXXXXXXXXXXXXX') Returns: { tables: [{ id, name, primaryFieldId, fields: [...], views: [...] }] }
airtable_create_tableCreate a new table in a base. Creates a table with the specified name and fields. At least one field must be provided. Args: - baseId: The base ID - name: Table name - description: Optional table description - fields: Array of field definitions [{ name, type, description?, options? }] Returns: The created table with all fields and views.
airtable_update_tableUpdate a table's name or description. Args: - baseId: The base ID - tableId: The table ID - name: New table name (optional) - description: New table description (optional) Returns: The updated table.
airtable_create_fieldCreate a new field (column) in a table. Field types include: singleLineText, email, url, multilineText, number, percent, currency, singleSelect, multipleSelects, date, dateTime, checkbox, rating, etc. Args: - baseId: The base ID - tableId: The table ID - name: Field name - type: Field type - description: Optional field description - options: Type-specific options (e.g., choices for select fields) Returns: The created field.
airtable_update_fieldUpdate a field's name, description, or options. Note: Field type cannot be changed after creation. Args: - baseId: The base ID - tableId: The table ID - fieldId: The field ID - name: New field name (optional) - description: New field description (optional) - options: Updated field options (optional) Returns: The updated field.
airtable_whoamiGet information about the current API token. Returns the user ID and scopes associated with the API key. Returns: { id: string, scopes?: string[] }
airtable_list_commentsList comments on a record. Returns all comments on a specific record with author information. Args: - baseId: The base ID - tableId: The table ID - recordId: The record ID - offset: Pagination offset (optional) Returns: { comments: [{ id, author, text, createdTime }], offset? }
airtable_create_commentAdd a comment to a record. Args: - baseId: The base ID - tableId: The table ID - recordId: The record ID - text: Comment text (supports @mentions using format @[user_id]) Returns: The created comment.
airtable_update_commentUpdate an existing comment. Only the comment author can update their own comments. Args: - baseId: The base ID - tableId: The table ID - recordId: The record ID - commentId: The comment ID - text: New comment text Returns: The updated comment.
airtable_delete_commentDelete a comment. Only the comment author can delete their own comments. Args: - baseId: The base ID - tableId: The table ID - recordId: The record ID - commentId: The comment ID Returns: Confirmation of deletion.
airtable_list_recordsList records from a table with optional filtering, sorting, and pagination. Supports Airtable formula filtering, view-based filtering, field selection, and sorting. Maximum 100 records per page. Use offset for pagination. Args: - baseId: The base ID - tableIdOrName: Table ID or name - view: View ID or name to filter by (optional) - filterByFormula: Airtable formula to filter records (optional) - fields: Array of field names to return (optional, returns all if not specified) - sort: Array of sort specifications [{ field, direction }] (optional) - pageSize: Number of records per page (1-100, default 100) - offset: Pagination offset from previous response (optional) - maxRecords: Maximum total records to return (optional) Returns: { records: [{ id, createdTime, fields }], offset? }
airtable_get_recordGet a single record by ID. Args: - baseId: The base ID - tableIdOrName: Table ID or name - recordId: The record ID (e.g., 'recXXXXXXXXXXXXXX') Returns: { id, createdTime, fields }
airtable_create_recordsCreate one or more records in a table. Can create up to 10 records per request. Use typecast=true to automatically convert string values to appropriate types. Args: - baseId: The base ID - tableIdOrName: Table ID or name - records: Array of records to create [{ fields: { fieldName: value } }] - typecast: Whether to typecast values (default false) Returns: { records: [{ id, createdTime, fields }] }
airtable_update_recordsUpdate one or more existing records (partial update). Can update up to 10 records per request. Only specified fields are updated; others remain unchanged. Args: - baseId: The base ID - tableIdOrName: Table ID or name - records: Array of records to update [{ id, fields: { fieldName: value } }] - typecast: Whether to typecast values (default false) Returns: { records: [{ id, createdTime, fields }] }
airtable_upsert_recordsUpsert (update or insert) records based on matching fields. Creates records that don't exist, updates those that do. Matches are determined by the fieldsToMergeOn parameter. Args: - baseId: The base ID - tableIdOrName: Table ID or name - records: Array of records [{ fields: { fieldName: value } }] - fieldsToMergeOn: Field names to match for upsert (e.g., ['Email']) - typecast: Whether to typecast values (default false) Returns: { records, updatedRecords: string[], createdRecords: string[] }
airtable_delete_recordsDelete one or more records. Can delete up to 10 records per request. Args: - baseId: The base ID - tableIdOrName: Table ID or name - recordIds: Array of record IDs to delete Returns: { records: [{ id, deleted: boolean }] }
airtable_list_webhooksList all webhooks for a base. Returns all webhooks configured on the base with their specifications. Args: - baseId: The base ID Returns: { webhooks: [{ id, notificationUrl, specification, isHookEnabled, ... }] }
airtable_create_webhookCreate a webhook to receive notifications about base changes. Webhooks notify your endpoint when records, fields, or metadata change. The webhook secret (macSecretBase64) must be saved to validate payloads. Args: - baseId: The base ID - notificationUrl: URL to receive webhook notifications (optional) - dataTypes: Array of data types to watch ('tableData', 'tableFields', 'tableMetadata') - recordChangeScope: Scope for record changes (optional) - watchDataInFieldIds: Field IDs to watch for data changes (optional) - watchSchemasOfFieldIds: Field IDs to watch for schema changes (optional) - includeCellValuesInFieldIds: Field IDs to include cell values for (optional) - includePreviousCellValues: Include previous values in payload (optional) - includePreviousFieldDefinitions: Include previous field definitions (optional) Returns: The created webhook with macSecretBase64 for payload validation.
airtable_delete_webhookDelete a webhook. Args: - baseId: The base ID - webhookId: The webhook ID Returns: Confirmation of deletion.
airtable_list_webhook_payloadsList pending webhook payloads. Retrieves payloads that have been generated but not yet delivered. Use cursor for pagination through payloads. Args: - baseId: The base ID - webhookId: The webhook ID - cursor: Cursor for pagination (optional) Returns: { payloads: [...], cursor, mightHaveMore }
airtable_refresh_webhookRefresh a webhook's expiration time. Webhooks expire after a period of inactivity. Call this to extend the expiration. Args: - baseId: The base ID - webhookId: The webhook ID Returns: { expirationTime: string }
airtable_toggle_webhook_notificationsEnable or disable webhook notifications. When disabled, the webhook continues to track changes but doesn't send notifications. Args: - baseId: The base ID - webhookId: The webhook ID - enable: Whether to enable notifications Returns: Confirmation of the operation.
airtable_list_bases{
"offset": "example_offset"
}airtable_get_base_schema{
"baseId": "example_baseId"
}airtable_create_table{
"name": "example_name",
"baseId": "example_baseId",
"description": "example_description"
}