atmon docs

REFERENCE/TOOLKITS/AIRTABLE.MD

Airtable

Spreadsheet-style databases. Read, search, add, and update records, and manage the tables, fields, and views that hold them.

PropertyValue
Slugairtable
Definition version0.1.0
Base URLhttps://api.airtable.com
Auth schemesoauth2, api_key
Action tools28
By class11 read, 13 write, 4 destructive
Triggers0
Provider rate limit5 requests per 1s, per account

Measured routing accuracy

42 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 28 cases written by hand and 14 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-124/4257.1%
top-839/4292.9%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

oauth2

PropertyValue
Authorization URLhttps://airtable.com/oauth2/v1/authorize
Token URLhttps://airtable.com/oauth2/v1/token
Default scopesdata.records:read, data.records:write, schema.bases:read, schema.bases:write
Refresh tokensyes, the refresh daemon renews ahead of expiry

api_key

PropertyValue
Placementheader
NameAuthorization
Rendered asBearer {key}

Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.

Tools

28 action tools. The catalog-wide slug is airtable.<tool>, which is what search_tools returns and call_tool takes.

airtable.get_current_user

Get the identity the connected Airtable token is authenticated as: its user id, email, and granted scopes. Use to check which account or integration a connection is running as, not to look up a collaborator.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v0/meta/whoami.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
emailstring
idstring
scopesarray of string

Also retrieved by: "whose token is this connection using", "check which airtable account this is signed in as", "what user does this connection run as", "confirm my airtable identity".

airtable.list_bases

List every Airtable base the connection can see, with each base's id and permission level. Use when the user asks what bases, workspaces, or spreadsheets they have access to. For one base's tables and columns, use get_base_schema.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v0/meta/bases.

Arguments:

ArgumentTypeRequiredNotes
offsetstringnoPagination cursor from a previous list_bases call. Omit for the first page.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
basesarray of object
bases[].idstring
bases[].namestring
bases[].permissionLevelstring
offsetstring

Also retrieved by: "what airtable bases do I have", "show every base I can access", "list my airtable spreadsheets", "what workspaces or bases exist for me".

airtable.create_base

Create a new Airtable base in a workspace, with an initial set of tables and their fields. Use when the user wants to set up a brand new base, spreadsheet, or database from scratch. To add a table to a base that already exists, use create_table instead.

Class write (writes, no confirmation needed). Scopes schema.bases:write. Calls POST /v0/meta/bases.

Arguments:

ArgumentTypeRequiredNotes
namestringyesName of the new base.
tablesarray of objectyesInitial tables, each an object with at least "name" and "fields" (an array of {name, type, options}), in Airtable's table-schema shape.
workspace_idstringyesId of the workspace the new base belongs to, e.g. "wspAbCdEfGhIjKlMn".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring
tablesarray of object
tables[].idstring
tables[].namestring

Also retrieved by: "set up a brand new airtable base", "start a fresh base for this", "make me a new spreadsheet-database from scratch", "spin up a new base with these tables".

airtable.get_base_schema

Get every table in a base, with each table's fields (columns, with their types) and views. Use when the user wants to know a base's structure, what tables or columns exist, or before writing a formula or a new record. For one table's rows, use list_records.

Class read (reads only). Scopes schema.bases:read. Calls GET /v0/meta/bases/{{params.base_id}}/tables.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id, e.g. "appAbCdEfGhIjKlMn".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
tablesarray of object
tables[].descriptionstring
tables[].fieldsarray of object
tables[].fields[].descriptionstring
tables[].fields[].idstring
tables[].fields[].namestring
tables[].fields[].typestring
tables[].idstring
tables[].namestring
tables[].primaryFieldIdstring
tables[].viewsarray of object
tables[].views[].idstring
tables[].views[].namestring
tables[].views[].typestring

Also retrieved by: "what tables are in this base", "show me the structure of this airtable base", "what columns does this base have", "list the tables and fields in this base".

airtable.create_table

Add a new table to an existing base, with a name and a starting column (field) schema. Use when the user wants to set up a new table, sheet, or tracker inside a base they already have. For a whole new base, use create_base; to add a row instead, use create_records.

Class write (writes, no confirmation needed). Scopes schema.bases:write. Calls POST /v0/meta/bases/{{params.base_id}}/tables.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id the new table belongs to.
descriptionstringnoOptional description of the table.
fieldsarray of objectyesStarting column schema: an array of {name, type, options} objects in Airtable's field-schema shape. Every table needs at least one field.
namestringyesName of the new table.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
fieldsarray of object
fields[].idstring
fields[].namestring
fields[].typestring
idstring
namestring
primaryFieldIdstring

Also retrieved by: "add a new table to this base", "set up a new sheet inside this base", "make a new tracker table here", "I need another table in this base".

airtable.update_table

Rename a table or change its description. Use when the user wants to rename or retitle a table, sheet, or tracker rather than change a row inside it. For a column's schema, use update_field; for a row's values, use update_record.

Class write (writes, no confirmation needed). Scopes schema.bases:write. Calls PATCH /v0/meta/bases/{{params.base_id}}/tables/{{params.table_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
descriptionstringnoNew table description. Omit to leave it unchanged.
namestringnoNew table name. Omit to leave the name unchanged.
table_idstringyesTable id to update, e.g. "tblAbCdEfGhIjKlMn".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
idstring
namestring

Also retrieved by: "rename this airtable table", "change the description on this table", "retitle this sheet".

airtable.create_field

Add a new field (column) to an existing table, with a name, type, and any type-specific options. Use when the user wants a new column, field, or property added to a table. To change an existing field, use update_field.

Class write (writes, no confirmation needed). Scopes schema.bases:write. Calls POST /v0/meta/bases/{{params.base_id}}/tables/{{params.table_id}}/fields.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
descriptionstringnoOptional description of the field.
namestringyesName of the new field.
optionsobjectnoType-specific options, e.g. select choices or number precision.
table_idstringyesTable id the new field belongs to.
typestringyesAirtable field type, e.g. "singleLineText", "number", "singleSelect", "date", "checkbox", "multipleRecordLinks".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
idstring
namestring
typestring

Also retrieved by: "add a new column to this table", "I need a new field on this table", "set up a new property for this table", "add a select column here".

airtable.update_field

Rename a field (column) or change its description. Use when the user wants to rename or redescribe an existing column without changing its type or the data inside it. To add a new column instead, use create_field.

Class write (writes, no confirmation needed). Scopes schema.bases:write. Calls PATCH /v0/meta/bases/{{params.base_id}}/tables/{{params.table_id}}/fields/{{params.field_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
descriptionstringnoNew field description. Omit to leave it unchanged.
field_idstringyesField (column) id to update, e.g. "fldAbCdEfGhIjKlMn".
namestringnoNew field name. Omit to leave the name unchanged.
table_idstringyesTable id the field belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
idstring
namestring
typestring

Also retrieved by: "rename this column", "change the description on this field", "retitle this field".

airtable.list_views

List every view defined on a table: grids, forms, calendars, and so on, with each view's id, name, and type. Use when the user asks what views or tabs exist on a table. For one view's details, use get_view.

Class read (reads only). Scopes schema.bases:read. Calls GET /v0/meta/bases/{{params.base_id}}/tables/{{params.table_id}}/views.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
table_idstringyesTable id to list views for.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
viewsarray of object
views[].idstring
views[].namestring
views[].typestring

Also retrieved by: "what views does this table have", "show me every tab on this table", "list the airtable views available".

airtable.get_view

Get one view's name and type by id. Use when the user names a specific view, tab, or filtered layout on a table. For the whole list of views on a table, use list_views.

Class read (reads only). Scopes schema.bases:read. Calls GET /v0/meta/bases/{{params.base_id}}/tables/{{params.table_id}}/views/{{params.view_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
table_idstringyesTable id the view belongs to.
view_idstringyesView id, e.g. "viwAbCdEfGhIjKlMn".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring
typestring

Also retrieved by: "what kind of view is this", "tell me about this specific tab", "look up one view's details".

airtable.list_records

List the rows (records) in one already-known Airtable table, in view order or a chosen view, paginated. Use when the user names a specific table and wants to browse or page through its rows. To filter by a formula or condition, use search_records instead.

Class read (reads only). Scopes data.records:read. Calls GET /v0/{{params.base_id}}/{{params.table_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
max_recordsintegernoStop after this many rows total across all pages.
offsetstringnoPagination cursor from a previous list_records call. Omit for the first page.
page_sizeintegernoRows per page, max 100. Defaults to 100.
table_idstringyesTable id or name to list rows from.
viewstringnoView id or name to read row order and filtering from. Omit for the table's default order.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
offsetstring
recordsarray of object
records[].createdTimestring (date-time)
records[].fieldsobject
records[].idstring

Also retrieved by: "show me the rows in this table", "browse this airtable table", "page through the records in this sheet", "what's in this table right now".

airtable.search_records

Find rows in one Airtable table matching an Airtable formula condition, e.g. a status equals done or a date is in the past. Use when the user wants to filter, find, or query rows by a condition rather than browse the whole table. For plain browsing, use list_records.

Class read (reads only). Scopes data.records:read. Calls GET /v0/{{params.base_id}}/{{params.table_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
formulastringyesAirtable formula to filter rows by, e.g. "{Status} = 'Done'" or "IS_AFTER({Due}, TODAY())".
max_recordsintegernoStop after this many matching rows.
page_sizeintegernoRows per page, max 100. Defaults to 100.
table_idstringyesTable id or name to search.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
offsetstring
recordsarray of object
records[].createdTimestring (date-time)
records[].fieldsobject
records[].idstring

Also retrieved by: "find rows where the status is done", "filter this table by a condition", "which rows match this formula", "look up records matching a criteria in airtable".

airtable.get_record

Get one row (record) by id, with its field values. Use when the user names or has already found a specific record, row, or item in an Airtable table. For several rows at once, use list_records or search_records.

Class read (reads only). Scopes data.records:read. Calls GET /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
record_idstringyesAirtable record id, e.g. "recAbCdEfGhIjKlMn".
table_idstringyesTable id or name the record belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdTimestring (date-time)
fieldsobject
idstring

Also retrieved by: "pull up this one row", "show me that specific record", "what are the field values on this item".

airtable.create_records

Add one or more new rows (records) to a table in a single call, up to 10 at once. Use when the user wants to add, log, or insert new rows or entries into an Airtable table. To change an existing row instead, use update_record or update_records.

Class write (writes, no confirmation needed). Scopes data.records:write. Calls POST /v0/{{params.base_id}}/{{params.table_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
recordsarray of objectyesNew rows, each an object {"fields": {...}} with column values keyed by field name or id. Up to 10 per call.
table_idstringyesTable id or name to add rows to.
typecastbooleannoTrue to let Airtable auto-convert values that don't match a column's type, e.g. a string into a number. Defaults to false.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
recordsarray of object
records[].createdTimestring (date-time)
records[].fieldsobject
records[].idstring

Also retrieved by: "add a new row to this table", "insert a few new records here", "log this as a new entry in airtable", "add these rows to the sheet".

airtable.update_record

Change one or more field values on a single existing row, leaving every field not named untouched. Use when the user wants to edit, update, or change one or a few columns on one row. To change several rows at once, use update_records; to replace a row's fields entirely, use replace_record.

Class write (writes, no confirmation needed). Scopes data.records:write. Calls PATCH /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
fieldsobjectyesColumn values to change, keyed by field name or id. Fields left out keep their current value.
record_idstringyesAirtable record id to update.
table_idstringyesTable id or name the row belongs to.
typecastbooleannoTrue to let Airtable auto-convert values that don't match a column's type.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdTimestring (date-time)
fieldsobject
idstring

Also retrieved by: "change the status on this row", "update one field on this airtable record", "edit this row's value".

airtable.update_records

Change field values on several existing rows in a single call, each row keeping any field not named. Use when the user wants to bulk update, edit several rows at once, e.g. mark a batch of items done. For one row, update_record is simpler.

Class write (writes, no confirmation needed). Scopes data.records:write. Calls PATCH /v0/{{params.base_id}}/{{params.table_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
recordsarray of objectyesRows to update, each an object {"id": "...", "fields": {...}}. Up to 10 per call.
table_idstringyesTable id or name the rows belong to.
typecastbooleannoTrue to let Airtable auto-convert values that don't match a column's type.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
recordsarray of object
records[].createdTimestring (date-time)
records[].fieldsobject
records[].idstring

Also retrieved by: "bulk update these rows", "change a field across several records at once", "mark this batch of rows as done".

airtable.replace_record

Overwrite a row's fields entirely: any column not named in this call is cleared, unlike update_record which only touches the fields you name. Use only when the user explicitly wants a row's full contents replaced or reset. Prefer update_record for a normal edit.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes data.records:write. Calls PUT /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
fieldsobjectyesThe complete set of column values the row should have after this call. Any other field is cleared.
record_idstringyesAirtable record id to overwrite.
table_idstringyesTable id or name the row belongs to.
typecastbooleannoTrue to let Airtable auto-convert values that don't match a column's type.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdTimestring (date-time)
fieldsobject
idstring

Also retrieved by: "overwrite this row's entire contents", "reset all the fields on this record", "replace everything on this row with new values".

airtable.delete_record

Permanently delete one row (record) from a table. Use when the user wants to remove, delete, or get rid of a specific row or item. Airtable's API has no trash for records, so this cannot be undone through the API.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes data.records:write. Calls DELETE /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
record_idstringyesAirtable record id to delete.
table_idstringyesTable id or name the row belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean
idstring

Also retrieved by: "remove this row from the table", "delete this record for good", "get rid of this entry in airtable".

airtable.list_record_comments

Read the comments left on one row (record), oldest first. Use when the user wants to see feedback, discussion, or notes people left on a specific Airtable row. To post a new one, use create_record_comment.

Class read (reads only). Scopes data.recordComments:read. Calls GET /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}/comments.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
offsetstringnoPagination cursor from a previous call. Omit for the first page.
page_sizeintegernoComments per page, max 100.
record_idstringyesAirtable record id to read comments from.
table_idstringyesTable id or name the row belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
commentsarray of object
comments[].authorobject
comments[].author.emailstring
comments[].author.idstring
comments[].author.namestring
comments[].createdTimestring (date-time)
comments[].idstring
comments[].textstring
offsetstring

Also retrieved by: "what have people said on this row", "show the comments on this record", "read the discussion on this item".

airtable.create_record_comment

Post a comment on one row (record). Use when the user wants to comment, leave feedback, or note something on a specific Airtable row for collaborators to see. To read existing comments first, use list_record_comments.

Class write (writes, no confirmation needed). Scopes data.recordComments:write. Calls POST /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}/comments.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
record_idstringyesAirtable record id to comment on.
table_idstringyesTable id or name the row belongs to.
textstringyesComment text.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdTimestring (date-time)
idstring
textstring

Also retrieved by: "leave a comment on this row", "post a note on this record", "comment on this airtable item".

airtable.update_record_comment

Edit the text of a comment already left on a row. Use when the user wants to fix or change something they or someone else wrote on an Airtable row's comment thread. To remove it instead, use delete_record_comment.

Class write (writes, no confirmation needed). Scopes data.recordComments:write. Calls PATCH /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}/comments/{{params.comment_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
comment_idstringyesComment id to edit.
record_idstringyesAirtable record id the comment belongs to.
table_idstringyesTable id or name the row belongs to.
textstringyesReplacement comment text.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
lastUpdatedTimestring (date-time)
textstring

Also retrieved by: "fix what I wrote in that comment", "edit my note on this row", "change the text of that comment".

airtable.delete_record_comment

Permanently remove a comment from a row's comment thread. Use when the user wants to delete, remove, or take back a comment they or someone else left on an Airtable row.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes data.recordComments:write. Calls DELETE /v0/{{params.base_id}}/{{params.table_id}}/{{params.record_id}}/comments/{{params.comment_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.
comment_idstringyesComment id to remove.
record_idstringyesAirtable record id the comment belongs to.
table_idstringyesTable id or name the row belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean
idstring

Also retrieved by: "remove that comment from the row", "take back what I said on this record", "delete that note on this item".

airtable.list_webhooks

List the webhooks registered on a base: each one's id, notification URL, whether it's enabled, and when it expires. Use when the user asks what webhooks or automations are watching a base. To add one, use create_webhook.

Class read (reads only). Scopes webhook:manage. Calls GET /v0/bases/{{params.base_id}}/webhooks.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
webhooksarray of object
webhooks[].expirationTimestring (date-time)
webhooks[].idstring
webhooks[].isHookEnabledboolean
webhooks[].notificationUrlstring

Also retrieved by: "what webhooks are watching this base", "show me the automations hooked into this base", "list the notification hooks on this base".

airtable.create_webhook

Register a new webhook on a base: a notification URL that Airtable pings when matching changes happen, per a specification of what to watch. Use when the user wants to set up a webhook or automation trigger for a base. To stop one, use delete_webhook.

Class write (writes, no confirmation needed). Scopes webhook:manage. Calls POST /v0/bases/{{params.base_id}}/webhooks.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id to watch.
notification_urlstringyesHTTPS URL Airtable pings when a matching change occurs.
specificationobjectyesWhat to watch, in Airtable's webhook specification shape (options.filters naming tables, change types, and fields).

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
expirationTimestring (date-time)
idstring
macSecretBase64string

Also retrieved by: "set up a webhook for this base", "watch this base for changes and ping a url", "register a new automation trigger here".

airtable.delete_webhook

Remove a webhook from a base so it stops receiving notifications. Use when the user wants to stop, cancel, or remove a webhook or automation trigger. Recreate it with create_webhook if needed again.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes webhook:manage. Calls DELETE /v0/bases/{{params.base_id}}/webhooks/{{params.webhook_id}}.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id the webhook belongs to.
webhook_idstringyesWebhook id to remove.

Also retrieved by: "stop this webhook", "remove that automation trigger", "cancel the notification hook on this base".

airtable.list_webhook_payloads

Read the change payloads a base's webhook has queued: what changed, in order. Use when the user wants to see what a webhook has captured, e.g. to debug or replay recent changes, rather than what the webhook is configured to watch.

Class read (reads only). Scopes webhook:manage. Calls GET /v0/bases/{{params.base_id}}/webhooks/{{params.webhook_id}}/payloads.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id the webhook belongs to.
cursorintegernoPayload sequence number to read from. Omit to start from the first available payload.
webhook_idstringyesWebhook id to read payloads from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
cursorinteger
mightHaveMoreboolean
payloadsarray of object

Also retrieved by: "what changes has this webhook captured", "show me the queued events for this webhook", "what did this webhook pick up recently".

airtable.refresh_webhook

Extend a webhook's expiration so it keeps receiving notifications. Use when the user wants to renew, keep alive, or stop a webhook or automation trigger from expiring. Airtable webhooks expire on their own after a period of inactivity.

Class write (writes, no confirmation needed). Scopes webhook:manage. Calls POST /v0/bases/{{params.base_id}}/webhooks/{{params.webhook_id}}/refresh.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id the webhook belongs to.
webhook_idstringyesWebhook id to refresh.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
expirationTimestring (date-time)

Also retrieved by: "keep this webhook from expiring", "renew this webhook", "extend the webhook so it keeps firing".

airtable.enable_webhook_notifications

Turn a base's webhook notifications on or off without deleting the webhook itself. Use when the user wants to pause or resume a webhook or automation trigger temporarily.

Class write (writes, no confirmation needed). Scopes webhook:manage. Calls POST /v0/bases/{{params.base_id}}/webhooks/{{params.webhook_id}}/enableNotifications.

Arguments:

ArgumentTypeRequiredNotes
base_idstringyesAirtable base id the webhook belongs to.
enablebooleanyesTrue to turn notifications on, false to pause them.
webhook_idstringyesWebhook id to enable or disable.

Also retrieved by: "pause this webhook for now", "turn notifications back on for this webhook", "toggle this webhook on or off".