Airtable MCP Server for Cloudflare Workers
23 tools available in the Airtable MCP server. Each tool can be called by AI assistants to perform specific actions.
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? }
{
"type": "object",
"properties": {
"offset": {
"type": "string",
"description": "Pagination offset from previous response"
}
}
}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:
Returns: { tables: [{ id, name, primaryFieldId, fields: [...], views: [...] }] }
{
"type": "object",
"required": [
"baseId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
}
}
}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:
Returns: The created table with all fields and views.
{
"type": "object",
"required": [
"baseId",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Table name"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"description": {
"type": "string",
"description": "Table description"
}
}
}airtable_update_tableUpdate a table's name or description.
Args:
Returns: The updated table.
{
"type": "object",
"required": [
"baseId",
"tableId"
],
"properties": {
"name": {
"type": "string",
"description": "New table name"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"description": {
"type": "string",
"description": "New table description"
}
}
}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:
Returns: The created field.
{
"type": "object",
"required": [
"baseId",
"tableId",
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Field name"
},
"type": {
"type": "string",
"description": "Field type (e.g., singleLineText, number, singleSelect)"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"options": {
"type": "object",
"description": "Type-specific field options"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"description": {
"type": "string",
"description": "Field description"
}
}
}airtable_update_fieldUpdate a field's name, description, or options.
Note: Field type cannot be changed after creation.
Args:
Returns: The updated field.
{
"type": "object",
"required": [
"baseId",
"tableId",
"fieldId"
],
"properties": {
"name": {
"type": "string",
"description": "New field name"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"fieldId": {
"type": "string",
"description": "The field ID"
},
"options": {
"type": "object",
"description": "Updated field options"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"description": {
"type": "string",
"description": "New field description"
}
}
}airtable_whoamiGet information about the current API token.
Returns the user ID and scopes associated with the API key.
Returns: { id: string, scopes?: string[] }
{
"type": "object",
"properties": {}
}airtable_list_commentsList comments on a record.
Returns all comments on a specific record with author information.
Args:
Returns: { comments: [{ id, author, text, createdTime }], offset? }
{
"type": "object",
"required": [
"baseId",
"tableId",
"recordId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"offset": {
"type": "string",
"description": "Pagination offset"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"recordId": {
"type": "string",
"description": "The record ID"
}
}
}airtable_create_commentAdd a comment to a record.
Args:
Returns: The created comment.
{
"type": "object",
"required": [
"baseId",
"tableId",
"recordId",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Comment text"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"recordId": {
"type": "string",
"description": "The record ID"
}
}
}airtable_update_commentUpdate an existing comment.
Only the comment author can update their own comments.
Args:
Returns: The updated comment.
{
"type": "object",
"required": [
"baseId",
"tableId",
"recordId",
"commentId",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "New comment text"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"recordId": {
"type": "string",
"description": "The record ID"
},
"commentId": {
"type": "string",
"description": "The comment ID"
}
}
}airtable_delete_commentDelete a comment.
Only the comment author can delete their own comments.
Args:
Returns: Confirmation of deletion.
{
"type": "object",
"required": [
"baseId",
"tableId",
"recordId",
"commentId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"tableId": {
"type": "string",
"description": "The table ID"
},
"recordId": {
"type": "string",
"description": "The record ID"
},
"commentId": {
"type": "string",
"description": "The comment ID"
}
}
}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:
Returns: { records: [{ id, createdTime, fields }], offset? }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName"
],
"properties": {
"view": {
"type": "string",
"description": "View ID or name to filter by"
},
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Field names to return"
},
"offset": {
"type": "string",
"description": "Pagination offset"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Records per page"
},
"maxRecords": {
"type": "integer",
"description": "Maximum total records"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
},
"filterByFormula": {
"type": "string",
"description": "Airtable formula to filter records"
}
}
}airtable_get_recordGet a single record by ID.
Args:
Returns: { id, createdTime, fields }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName",
"recordId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"recordId": {
"type": "string",
"description": "The record ID"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
}
}
}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:
Returns: { records: [{ id, createdTime, fields }] }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"typecast": {
"type": "boolean",
"default": false,
"description": "Typecast string values"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
}
}
}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:
Returns: { records: [{ id, createdTime, fields }] }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"typecast": {
"type": "boolean",
"default": false,
"description": "Typecast string values"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
}
}
}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:
Returns: { records, updatedRecords: string[], createdRecords: string[] }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName",
"fieldsToMergeOn"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"typecast": {
"type": "boolean",
"default": false,
"description": "Typecast string values"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
},
"fieldsToMergeOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to match for upsert"
}
}
}airtable_delete_recordsDelete one or more records.
Can delete up to 10 records per request.
Args:
Returns: { records: [{ id, deleted: boolean }] }
{
"type": "object",
"required": [
"baseId",
"tableIdOrName",
"recordIds"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"recordIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Record IDs to delete (max 10)"
},
"tableIdOrName": {
"type": "string",
"description": "Table ID or name"
}
}
}airtable_list_webhooksList all webhooks for a base.
Returns all webhooks configured on the base with their specifications.
Args:
Returns: { webhooks: [{ id, notificationUrl, specification, isHookEnabled, ... }] }
{
"type": "object",
"required": [
"baseId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
}
}
}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:
Returns: The created webhook with macSecretBase64 for payload validation.
{
"type": "object",
"required": [
"baseId",
"dataTypes"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"dataTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Data types to watch"
},
"notificationUrl": {
"type": "string",
"description": "URL for webhook notifications"
},
"recordChangeScope": {
"type": "string",
"description": "Scope for record changes"
},
"watchDataInFieldIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Field IDs to watch"
},
"watchSchemasOfFieldIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Field IDs to watch schemas"
},
"includePreviousCellValues": {
"type": "boolean",
"description": "Include previous values"
},
"includeCellValuesInFieldIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Field IDs to include values"
},
"includePreviousFieldDefinitions": {
"type": "boolean",
"description": "Include previous field definitions"
}
}
}airtable_delete_webhookDelete a webhook.
Args:
Returns: Confirmation of deletion.
{
"type": "object",
"required": [
"baseId",
"webhookId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"webhookId": {
"type": "string",
"description": "The webhook ID"
}
}
}airtable_list_webhook_payloadsList pending webhook payloads.
Retrieves payloads that have been generated but not yet delivered. Use cursor for pagination through payloads.
Args:
Returns: { payloads: [...], cursor, mightHaveMore }
{
"type": "object",
"required": [
"baseId",
"webhookId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"cursor": {
"type": "number",
"description": "Pagination cursor"
},
"webhookId": {
"type": "string",
"description": "The webhook ID"
}
}
}airtable_refresh_webhookRefresh a webhook's expiration time.
Webhooks expire after a period of inactivity. Call this to extend the expiration.
Args:
Returns: { expirationTime: string }
{
"type": "object",
"required": [
"baseId",
"webhookId"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"webhookId": {
"type": "string",
"description": "The webhook ID"
}
}
}airtable_toggle_webhook_notificationsEnable or disable webhook notifications.
When disabled, the webhook continues to track changes but doesn't send notifications.
Args:
Returns: Confirmation of the operation.
{
"type": "object",
"required": [
"baseId",
"webhookId",
"enable"
],
"properties": {
"baseId": {
"type": "string",
"description": "The Airtable base ID"
},
"enable": {
"type": "boolean",
"description": "Enable or disable notifications"
},
"webhookId": {
"type": "string",
"description": "The webhook ID"
}
}
}