// connections

Airtable

Read and write Airtable records and comments, read base schemas, create bases, tables and fields, and manage change webhooks. Connects with OAuth.

13 mcp tools27 operations
rest
https://api.superagnt.com/v1/connections/airtable plus the vendor's own path, with your superagnt_ API key as Authorization: Bearer.
mcp
Tools named connection_airtable_* on https://mcp.superagnt.com/mcp, served once the account is connected.
billing
Airtable bills your own account. Calls cost no superagnt_ data credits.
rate limit
5 requests a second, 300 a minute: the vendor's ceiling as the registry records it, for sizing bursts. Your plan's own limit is on Connections.

The Airtable connection lets an agent read and write the records of the bases you grant it, up to 10 records in a call, including upserts on merge fields. It also reads and posts record comments, reads base schemas, creates bases, creates and updates tables and fields, and manages the change webhooks that report edits to a base.

01

Setup

  1. Start the install. In the superagnt app open Integrations, pick Airtable and click Connect with Airtable.
  2. Grant your bases. In the window Airtable opens, choose the bases the connection may reach and approve access.
  3. Call Airtable. Airtable moves to Enabled: its REST route answers and its tools appear on your MCP server.

The install asks for data.records:read, data.records:write, data.recordComments:read, data.recordComments:write, schema.bases:read, schema.bases:write, user.email:read and webhook:manage. To reach another base later, click Reconnect on the Airtable connection page in the superagnt app and grant it.

02

Things to know

  • Reads return { records, offset }. Page with pageSize (up to 100) and the offset the previous page returned, and narrow with filterByFormula (field names in curly braces, strings in single quotes), view, fields[] and maxRecords.
  • Creates, updates and replaces take up to 10 records a call, as { records: [{ fields }] }, with each record's id on an update or replace. Add performUpsert: { fieldsToMergeOn: [...] } to update the records that match on those fields and create the rest.
  • PATCH changes only the fields you send. PUT replaces the record and clears every field you leave out.
  • A change webhook expires after 7 days unless you refresh it. Airtable pings its notificationUrl when changes are waiting, and you read them with connection_airtable_webhooks_read action list_payloads.
  • By default a superagnt_ agent runs reads without asking, asks before writes, and always asks a person before deleting records, comments or webhooks (Permissions).

03

Examples

List records with a filter

list matching recordsbash
curl -G "https://api.superagnt.com/v1/connections/airtable/v0/appXXXXXXXXXXXXXX/Tasks" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  --data-urlencode "filterByFormula={Status}='Todo'" \
  --data-urlencode "pageSize=100"

Create records

create recordsbash
curl -X POST "https://api.superagnt.com/v1/connections/airtable/v0/appXXXXXXXXXXXXXX/Tasks" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"records":[{"fields":{"Name":"Investigate flaky test","Status":"Todo"}}],"typecast":true}'

Upsert on a merge field

upsert on External IDbash
curl -X PATCH "https://api.superagnt.com/v1/connections/airtable/v0/appXXXXXXXXXXXXXX/Tasks" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"performUpsert":{"fieldsToMergeOn":["External ID"]},"records":[{"fields":{"External ID":"ext-42","Status":"Done"}}]}'

Read a base's schema

read tables, fields and viewsbash
curl "https://api.superagnt.com/v1/connections/airtable/v0/meta/bases/appXXXXXXXXXXXXXX/tables" \
  -H "Authorization: Bearer $AGNTDATA_API_KEY"
04// mcp tools

13 tools, one per resource and risk

MCP servers and agents on the grouped surface list Airtable as these tools. Each takes an action, and the ones that work across record types an object. Every operation also keeps its own per-operation name, in the next table, which works on every server. How grouping works: Grouped tools.

ToolRiskActions
connection_airtable_records_read

Read Airtable records

Read the records of an Airtable table, filtered with a formula such as {Status}='New' or by a view. baseId starts with app; tableIdOrName is the table id (tbl…) or its name, both from connection_airtable_bases_read.

read
listget
connection_airtable_records_write

Write Airtable records

Create, update or replace records in an Airtable table (fields map field names or ids to cell values; typecast: true converts strings to the field types). Replacing clears every field the call leaves out.

write
createupdateupdate_manyreplacereplace_many
connection_airtable_records_delete

Delete Airtable records

Permanently delete Airtable records: one, or up to 10 at once.

destructive
deletedelete_many
connection_airtable_comments_read

Read Airtable record comments

List the comments on a record.

read
list
connection_airtable_comments_write

Comment on Airtable records

Add a comment to a record, or edit one.

write
createupdate
connection_airtable_comments_delete

Delete an Airtable comment

Permanently delete a comment on a record.

destructive
delete
connection_airtable_bases_read

Read Airtable bases and schemas

List the bases the token can reach, read a base's schema (its tables, fields and views, with the ids the other Airtable tools take), or identify the token's user.

read
listget_schemawhoami
connection_airtable_bases_write

Create an Airtable base

Create a base in a workspace, with its first tables.

write
create
connection_airtable_tables_write

Create and update Airtable tables

Create a table in a base, or rename or re-describe one.

write
createupdate
connection_airtable_fields_write

Create and update Airtable fields

Add a field to a table, or rename or re-describe one (a field's type cannot be changed). A field is { name, type, options } where options depend on the type, such as the choices of a singleSelect.

write
createupdate
connection_airtable_webhooks_read

Read Airtable webhooks

List the change webhooks on a base, or read the change payloads a webhook has buffered since a cursor.

read
listlist_payloads
connection_airtable_webhooks_write

Manage Airtable webhooks

Register a change webhook on a base (specification.options.filters picks the changes to watch), extend its 7-day expiry, or turn its notification pings on or off.

write
createrefreshset_notifications
connection_airtable_webhooks_delete

Delete an Airtable webhook

Permanently delete a webhook on a base.

destructive
delete
05// operations

All 27 operations

Each operation is a REST path under https://api.superagnt.com/v1/connections/airtable and an MCP tool. The per-operation tool name is the one permissions, approvals and usage records use.

OperationMCP tool
GET/v0/{baseId}/{tableIdOrName}

List records

connection_airtable_list_recordsgrouped: connection_airtable_records_read, action list
POST/v0/{baseId}/{tableIdOrName}

Create records

connection_airtable_create_recordsgrouped: connection_airtable_records_write, action create
PUT/v0/{baseId}/{tableIdOrName}

Update multiple records (replace)

connection_airtable_replace_recordsgrouped: connection_airtable_records_write, action replace_many
PATCH/v0/{baseId}/{tableIdOrName}

Update multiple records (partial)

connection_airtable_update_recordsgrouped: connection_airtable_records_write, action update_many
DELETE/v0/{baseId}/{tableIdOrName}

Delete multiple records

connection_airtable_delete_recordsgrouped: connection_airtable_records_delete, action delete_many
GET/v0/{baseId}/{tableIdOrName}/{recordId}

Get record

connection_airtable_get_recordgrouped: connection_airtable_records_read, action get
PUT/v0/{baseId}/{tableIdOrName}/{recordId}

Replace record

connection_airtable_replace_recordgrouped: connection_airtable_records_write, action replace
PATCH/v0/{baseId}/{tableIdOrName}/{recordId}

Update record (partial)

connection_airtable_update_recordgrouped: connection_airtable_records_write, action update
DELETE/v0/{baseId}/{tableIdOrName}/{recordId}

Delete record

connection_airtable_delete_recordgrouped: connection_airtable_records_delete, action delete
GET/v0/{baseId}/{tableIdOrName}/{recordId}/comments

List record comments

connection_airtable_list_commentsgrouped: connection_airtable_comments_read, action list
POST/v0/{baseId}/{tableIdOrName}/{recordId}/comments

Create record comment

connection_airtable_create_commentgrouped: connection_airtable_comments_write, action create
PATCH/v0/{baseId}/{tableIdOrName}/{recordId}/comments/{rowCommentId}

Update record comment

connection_airtable_update_commentgrouped: connection_airtable_comments_write, action update
DELETE/v0/{baseId}/{tableIdOrName}/{recordId}/comments/{rowCommentId}

Delete record comment

connection_airtable_delete_commentgrouped: connection_airtable_comments_delete, action delete
GET/v0/meta/bases

List bases

connection_airtable_list_basesgrouped: connection_airtable_bases_read, action list
POST/v0/meta/bases

Create base

connection_airtable_create_basegrouped: connection_airtable_bases_write, action create
GET/v0/meta/bases/{baseId}/tables

Get base schema (list tables)

connection_airtable_get_base_schemagrouped: connection_airtable_bases_read, action get_schema
POST/v0/meta/bases/{baseId}/tables

Create table

connection_airtable_create_tablegrouped: connection_airtable_tables_write, action create
PATCH/v0/meta/bases/{baseId}/tables/{tableId}

Update table

connection_airtable_update_tablegrouped: connection_airtable_tables_write, action update
POST/v0/meta/bases/{baseId}/tables/{tableId}/fields

Create field

connection_airtable_create_fieldgrouped: connection_airtable_fields_write, action create
PATCH/v0/meta/bases/{baseId}/tables/{tableId}/fields/{fieldId}

Update field

connection_airtable_update_fieldgrouped: connection_airtable_fields_write, action update
GET/v0/bases/{baseId}/webhooks

List webhooks

connection_airtable_list_webhooksgrouped: connection_airtable_webhooks_read, action list
POST/v0/bases/{baseId}/webhooks

Create webhook

connection_airtable_create_webhookgrouped: connection_airtable_webhooks_write, action create
DELETE/v0/bases/{baseId}/webhooks/{webhookId}

Delete webhook

connection_airtable_delete_webhookgrouped: connection_airtable_webhooks_delete, action delete
GET/v0/bases/{baseId}/webhooks/{webhookId}/payloads

List webhook payloads

connection_airtable_list_webhook_payloadsgrouped: connection_airtable_webhooks_read, action list_payloads
POST/v0/bases/{baseId}/webhooks/{webhookId}/refresh

Refresh webhook

connection_airtable_refresh_webhookgrouped: connection_airtable_webhooks_write, action refresh
POST/v0/bases/{baseId}/webhooks/{webhookId}/enableNotifications

Enable or disable webhook notifications

connection_airtable_set_webhook_notificationsgrouped: connection_airtable_webhooks_write, action set_notifications
GET/v0/meta/whoami

Get current user (whoami)

connection_airtable_whoamigrouped: connection_airtable_bases_read, action whoami