Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Airtable MCP connector

OAuth 2.1/DCRProject ManagementDatabasesProductivity

Connect to Airtable MCP. Manage bases, tables, records, views, fields, and automations from your AI workflows.

Airtable MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'airtablemcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Airtable MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'airtablemcp_list_bases',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Update table, records for table, field — Updates an existing table’s name and/or description in an Airtable base
  • Search records, bases — Searches for records in a table using a free-text query with fuzzy matching and token-based search
  • Interface publish — Publishes an interface, promoting each page’s working draft to the live version that end users see
  • Ping records — Pings the Airtable MCP server to check if it is running and reachable
  • List workspaces, tables for base, records for table — Lists all Airtable workspaces the current user has access to, along with their permission level in each
  • Get table schema, record for page — Gets detailed schema information for specified tables and fields in an Airtable base, returning the field ID, type, and configuration for each specified field

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

airtablemcp_create_base#Creates a new Airtable base with specified tables and fields in a workspace. Use list_workspaces to get the workspaceId first. The first field in each table's fields array becomes the primary field.3 params

Creates a new Airtable base with specified tables and fields in a workspace. Use list_workspaces to get the workspaceId first. The first field in each table's fields array becomes the primary field.

NameTypeRequiredDescription
namestringrequiredThe name for the new base.
workspaceIdstringrequiredThe ID of the workspace to create the base in. Must start with "wsp" and is 17 characters long. Do not substitute user-facing names for workspaceId. To get workspaceId, use the list_workspaces tool.
tablesarrayoptionalOptional. The tables to create in the new base. If omitted, a default table ("Table 1") with a "Name" singleLineText field is created.
airtablemcp_create_field#Creates a new field in an existing Airtable table. Use search_bases and list_tables_for_base to get baseId and tableId first. Supports all field types including singleSelect, number, formula, date, and more.3 params

Creates a new field in an existing Airtable table. Use search_bases and list_tables_for_base to get baseId and tableId first. Supports all field types including singleSelect, number, formula, date, and more.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
fieldobjectrequiredThe field definition to create. Must include at minimum 'name' and 'type'. Some field types require an 'options' object (e.g., singleSelect, number, currency, formula). Types without options: singleLineText, email, url, multilineText, phoneNumber, richText, barcode, multipleAttachments, singleCollaborator, multipleCollaborators.
tableIdstringrequiredThe ID of the table to create the field in. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
airtablemcp_create_interface#Creates a new interface within an Airtable base. After creation, use create_page to add pages and publish_interface to make the interface live for end users.2 params

Creates a new interface within an Airtable base. After creation, use create_page to add pages and publish_interface to make the interface live for end users.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base in which to create the interface. Must start with "app" and is 17 characters long.
namestringrequiredThe display name for the new interface.
airtablemcp_create_page#Creates a new page within an existing Airtable interface. Supported page types are visualization, dashboard, and customElement. Use describe_page_type and describe_page_element to discover the correct pageConfiguration shape.5 params

Creates a new page within an existing Airtable interface. Supported page types are visualization, dashboard, and customElement. Use describe_page_type and describe_page_element to discover the correct pageConfiguration shape.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base in which to create the page. Must start with "app" and is 17 characters long.
interfaceIdstringrequiredThe ID of the interface in which to create the page. Must start with "pbd" and is 17 characters long.
namestringrequiredThe display name for the new page.
pageConfigurationobjectrequiredPage type-specific configuration. Schema is provided by describe_page_type and describe_page_element.
pageTypestringrequiredThe type of page to create.
airtablemcp_create_record_comment#Creates a comment on a specific Airtable record. Supports user and group mentions using @[userId] or @[userGroupId] tokens in the comment text, and supports threaded replies via the optional parentCommentId parameter.5 params

Creates a comment on a specific Airtable record. Supports user and group mentions using @[userId] or @[userGroupId] tokens in the comment text, and supports threaded replies via the optional parentCommentId parameter.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base.
recordIdstringrequiredThe ID of the record to comment on.
tableIdstringrequiredThe ID of the table.
textstringrequiredThe text of the comment to create.
parentCommentIdstringoptionalThe ID of the parent comment to reply to, for creating a threaded reply.
airtablemcp_create_records_for_table#Creates new records in an Airtable table. Use search_bases and list_tables_for_base to get baseId and tableId before calling this tool. You can create up to 50 records per request.5 params

Creates new records in an Airtable table. Use search_bases and list_tables_for_base to get baseId and tableId before calling this tool. You can create up to 50 records per request.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
recordsarrayrequiredAn array of record objects to create. Each record must have a "fields" property containing the field values.
tableIdstringrequiredThe ID of the table to create records in. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
fieldIdsarrayoptionalThe IDs of the fields to include in each returned record. If omitted, only the fields you wrote are returned. Pass explicit IDs to include fields you did not write (e.g. the primary field or formula/rollup results).
typecastbooleanoptionalWhether or not to perform best-effort automatic data conversion from string values. Defaults to false to preserve data integrity.
airtablemcp_create_table#Creates a new table in an existing Airtable base. Use search_bases or list_bases to get the baseId first. The first field in the fields array becomes the primary field of the table.4 params

Creates a new table in an existing Airtable base. Use search_bases or list_bases to get the baseId first. The first field in the fields array becomes the primary field of the table.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base to create the table in. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
fieldsarrayrequiredThe first field becomes the primary field and must be one of these types: singleLineText, email, url, multilineText, number, percent, currency, duration, date, dateTime, phoneNumber, barcode. Remaining fields can be any type.
namestringrequiredMust be unique within the base (case-insensitive).
descriptionstringoptionalNo description.
airtablemcp_delete_page#Deletes an existing page from an interface. This action is destructive and requires explicit user confirmation before calling. Use publish_interface after deletion to propagate the change to the live interface.2 params

Deletes an existing page from an interface. This action is destructive and requires explicit user confirmation before calling. Use publish_interface after deletion to propagate the change to the live interface.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the page to delete. Must start with "app" and is 17 characters long.
pageIdstringrequiredThe ID of the page to delete. Must start with "pag" and is 17 characters long.
airtablemcp_delete_records_for_table#Permanently deletes records from an Airtable table by record IDs. Use list_records_for_table to get record IDs first. You can delete up to 50 records per request. This action is irreversible.3 params

Permanently deletes records from an Airtable table by record IDs. Use list_records_for_table to get record IDs first. You can delete up to 50 records per request. This action is irreversible.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
recordIdsarrayrequiredAn array of record IDs to delete. Must start with "rec" and is 17 characters long. To get record IDs, use the list_records_for_table or search_records tools.
tableIdstringrequiredThe ID of the table to delete records from. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
airtablemcp_describe_page_element#Returns the JSON schema for a page element of the specified type. Use this before create_page to discover the element config shape required within pageConfiguration.1 param

Returns the JSON schema for a page element of the specified type. Use this before create_page to discover the element config shape required within pageConfiguration.

NameTypeRequiredDescription
elementTypestringrequiredThe page element type to get the config schema for.
airtablemcp_describe_page_type#Returns the JSON schema for a page type's configuration. Use this before create_page to discover the required pageConfiguration shape for the chosen page type.1 param

Returns the JSON schema for a page type's configuration. Use this before create_page to discover the required pageConfiguration shape for the chosen page type.

NameTypeRequiredDescription
pageTypestringrequiredThe page type to get the config schema for.
airtablemcp_get_record_for_page#Gets a single record's details from an interface page element using a navigation path. Supports traversing linked record relationships by appending edges to the path.4 params

Gets a single record's details from an interface page element using a navigation path. Supports traversing linked record relationships by appending edges to the path.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the page. Must start with "app" and is 17 characters long.
interfaceIdstringrequiredThe ID of the interface that contains the page. Must start with "pbd" and is 17 characters long.
pathobjectrequiredThe navigation path from the page where the record was listed.
fieldIdsarrayoptionalOnly data for fields whose IDs are in this list will be included in the result.
airtablemcp_get_table_schema#Gets detailed schema information for specified tables and fields in an Airtable base, returning the field ID, type, and configuration for each specified field. Use this before filtering on singleSelect or multipleSelects fields to retrieve choice IDs.2 params

Gets detailed schema information for specified tables and fields in an Airtable base, returning the field ID, type, and configuration for each specified field. Use this before filtering on singleSelect or multipleSelects fields to retrieve choice IDs.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the tables.
tablesarrayrequiredAn array of table IDs and corresponding field IDs to get schema information for.
airtablemcp_list_bases#Lists all Airtable bases that you have access to in your account, including favorited and recently viewed bases. If the response includes an offset, pass it in a subsequent call to retrieve the next page of results.1 param

Lists all Airtable bases that you have access to in your account, including favorited and recently viewed bases. If the response includes an offset, pass it in a subsequent call to retrieve the next page of results.

NameTypeRequiredDescription
offsetstringoptionalPagination cursor from a previous list_bases response.
airtablemcp_list_pages_for_base#Lists all interfaces and their pages for a base, returning page IDs, names, and page-type-specific metadata. Use this to discover interfaces, dashboards, overview pages, and forms available in a base.1 param

Lists all interfaces and their pages for a base, returning page IDs, names, and page-type-specific metadata. Use this to discover interfaces, dashboards, overview pages, and forms available in a base.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base to list pages from. Must start with "app" and is 17 characters long.
airtablemcp_list_record_comments#Lists comments on a specific Airtable record, ordered from newest to oldest, with support for pagination. Comments may contain user mentions in @[userId] or @[userGroupId] format, and the mentioned field maps these IDs to display names and emails.5 params

Lists comments on a specific Airtable record, ordered from newest to oldest, with support for pagination. Comments may contain user mentions in @[userId] or @[userGroupId] format, and the mentioned field maps these IDs to display names and emails.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base.
recordIdstringrequiredThe ID of the record.
tableIdstringrequiredThe ID of the table.
offsetstringoptionalPass the offset from a previous response to fetch the next page.
pageSizeintegeroptionalThe number of comments to return per page.
airtablemcp_list_records_for_page#Lists records from an Airtable interface page. Use this for bases with interface-only access (permissionLevel "none") or when querying interface/page data. Obtain pageId and interfaceId from list_pages_for_base.7 params

Lists records from an Airtable interface page. Use this for bases with interface-only access (permissionLevel "none") or when querying interface/page data. Obtain pageId and interfaceId from list_pages_for_base.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the page. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
interfaceIdstringrequiredThe ID of the interface that contains the page. Must start with "pbd" and is 17 characters long.
pageIdstringrequiredThe ID of the interface page to read records from. Must start with "pag" and is 17 characters long.
elementIdstringoptionalThe ID of a specific element to query records for. Required for dashboard pages. Obtain element IDs from the dashboardElements array in the list_pages_for_base response. Must start with "pel" and is 17 characters long.
fieldIdsarrayoptionalOnly data for fields whose IDs are in this list will be included in the result. If not provided, fields visible in the page element's visualization will be returned.
filtersobjectoptionalAdditional filters to apply on top of the page element's built-in filters. These are combined with the element's static filters using AND.
pageSizeintegeroptionalThe maximum number of records to return in the response.
airtablemcp_list_records_for_table#Lists records queried from an Airtable table, with support for field selection, pagination, sorting, record ID filtering, and structured filters. Obtain baseId and tableId from search_bases and list_tables_for_base before calling this tool.8 params

Lists records queried from an Airtable table, with support for field selection, pagination, sorting, record ID filtering, and structured filters. Obtain baseId and tableId from search_bases and list_tables_for_base before calling this tool.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table.
tableIdstringrequiredThe table to list records from (table ID or table name).
cursorstringoptionalThe cursor to start from for paginated requests.
fieldIdsarrayoptionalOnly data for fields whose IDs or names are in this list will be included in the result.
filtersobjectoptionalStructured filters to apply to the records.
pageSizeintegeroptionalThe maximum number of records to return in the response.
recordIdsarrayoptionalAn array of record IDs to filter by.
sortarrayoptionalA list of sort objects specifying how records will be ordered.
airtablemcp_list_tables_for_base#Gets the summary of a specific Airtable base, including the schemas of all its tables with field names and types. If the base is not found or returns a permission error, the user may have interface-only access.1 param

Gets the summary of a specific Airtable base, including the schemas of all its tables with field names and types. If the base is not found or returns a permission error, the user may have interface-only access.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base to get the summary of.
airtablemcp_list_workspaces#Lists all Airtable workspaces the current user has access to, along with their permission level in each. This is typically the first tool to call when you need a workspaceId.1 param

Lists all Airtable workspaces the current user has access to, along with their permission level in each. This is typically the first tool to call when you need a workspaceId.

NameTypeRequiredDescription
offsetstringoptionalPagination offset from the previous response.
airtablemcp_ping#Pings the Airtable MCP server to check if it is running and reachable. Use this to verify connectivity before performing other operations.0 params

Pings the Airtable MCP server to check if it is running and reachable. Use this to verify connectivity before performing other operations.

airtablemcp_publish_interface#Publishes an interface, promoting each page's working draft to the live version that end users see. Publishing is idempotent — re-publishing with no new changes is a no-op. Pages with publishing state "disabled" are skipped.2 params

Publishes an interface, promoting each page's working draft to the live version that end users see. Publishing is idempotent — re-publishing with no new changes is a no-op. Pages with publishing state "disabled" are skipped.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the interface. Must start with "app" and is 17 characters long.
interfaceIdstringrequiredThe ID of the interface to publish. Must start with "pbd" and is 17 characters long.
airtablemcp_search_bases#Searches for Airtable bases by name using a partial, case-insensitive match. Returns bases sorted by relevance score, along with a recommended base ID and a hint on whether the user needs to explicitly select a base.1 param

Searches for Airtable bases by name using a partial, case-insensitive match. Returns bases sorted by relevance score, along with a recommended base ID and a hint on whether the user needs to explicitly select a base.

NameTypeRequiredDescription
searchQuerystringrequiredThe query string to search for bases by name (case-insensitive, partial matches supported).
airtablemcp_search_records#Searches for records in a table using a free-text query with fuzzy matching and token-based search. Prefer this over list_records_for_table for free-text search on large tables.4 params

Searches for records in a table using a free-text query with fuzzy matching and token-based search. Prefer this over list_records_for_table for free-text search on large tables.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long.
fieldsstringrequiredThe fields to search over. Either pass an array of field IDs/names, or the literal string "ALL_SEARCHABLE_FIELDS" to search across all searchable fields.
querystringrequiredThe search query. Matches are case-insensitive and term-order independent.
tablestringrequiredThe table to search. Accepts either a table ID (e.g., "tblGlReoTNWfYnXIG") or a table name (e.g., "Orders"). Names are resolved case-insensitively within the base.
airtablemcp_update_field#Updates the name, description, and/or options of a field in an existing Airtable table. At least one of name, description, or options must be specified. Use list_tables_for_base to get fieldId.6 params

Updates the name, description, and/or options of a field in an existing Airtable table. At least one of name, description, or options must be specified. Use list_tables_for_base to get fieldId.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
fieldIdstringrequiredThe ID of the field to update. Field IDs must start with "fld" and is 17 characters long. Do not substitute user-facing names for IDs. To get fieldId, use the list_tables_for_base tool.
tableIdstringrequiredThe ID of the table containing the field. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
descriptionstringoptionalNo description.
namestringoptionalThe new name for the field. Must be unique within the table (case-insensitive).
optionsobjectoptionalType-specific field options. Currently supports updating formula expressions for formula fields.
airtablemcp_update_records_for_table#Updates records in an Airtable table, leaving all unspecified fields unchanged. Use search_bases and list_tables_for_base to get baseId and tableId first. You can update up to 50 records per request.6 params

Updates records in an Airtable table, leaving all unspecified fields unchanged. Use search_bases and list_tables_for_base to get baseId and tableId first. You can update up to 50 records per request.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
recordsarrayrequiredAn array of record objects to update. Each record must have a "fields" property. Include "id" to update by record ID, or use performUpsert to match by field values.
tableIdstringrequiredThe ID of the table to update records in. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
fieldIdsarrayoptionalThe IDs of the fields to include in each returned record. If omitted, only the fields you wrote are returned.
performUpsertobjectoptionalEnables upsert behavior. When set, records without a recordId use the fields in fieldIdsToMergeOn to match existing records. If no match, a new record is created. If a match is found, it is updated. If multiple matches, the request fails.
typecastbooleanoptionalWhether or not to perform best-effort automatic data conversion from string values. Defaults to false to preserve data integrity.
airtablemcp_update_table#Updates an existing table's name and/or description in an Airtable base. At least one of name or description must be provided. Use search_bases and list_tables_for_base to get baseId and tableId first.4 params

Updates an existing table's name and/or description in an Airtable base. At least one of name or description must be provided. Use search_bases and list_tables_for_base to get baseId and tableId first.

NameTypeRequiredDescription
baseIdstringrequiredThe ID of the base containing the table. Must start with "app" and is 17 characters long. Do not substitute user-facing names for baseId. To get baseId, use the search_bases or list_bases tool.
tableIdstringrequiredThe ID of the table to update. Must start with "tbl" and is 17 characters long. Do not substitute user-facing names for tableId. To get tableId, use the list_tables_for_base tool.
descriptionstringoptionalNo description.
namestringoptionalThe new name for the table. Must be unique within the base (case-insensitive).