
Get one attachment's metadata (filename, size, type, dimensions, thumbnails) and its download URL. The record holding the attachment is required. Use list_records to find record and attachment IDs. The URL is time-limited (valid at least 2 hours from this call) — call this tool again to get a fresh URL.
Attach a file to a record's attachment field. Provide the file's bytes as a base64 string in content (with filename and contenttype), or a filereference from the file upload API (POST /api/v1/files/), which keeps the bytes out of the model's context. Airtable cannot fetch a URL. Max 5MB. Use gettableschema to find multipleAttachments fields.
List every base this credential can access, with its ID and permission level. Start here: base IDs from this tool feed every other Airtable tool. A base missing from this list is not on the token's access list.
Get the Airtable user this credential authenticates as: their user ID, and their email and granted scopes when the credential exposes them. Use it to answer who am I connected as, or to confirm which scopes a credential actually has before attempting a write.
Get a base's full schema: every table with all of its field definitions (including single-select option values) and views. Large on big bases -- use getbasetables when you only need to find a table ID or name, and gettableschema for one table's fields. Use list_bases to find base IDs.
List a base's tables with their IDs, names and descriptions only -- no field or view definitions. Use this to find a table ID. For one table's fields use gettableschema; for the whole base's fields use getbaseschema. Use list_bases to find base IDs.
Get one table's full schema: its fields, their types, and single-select option values. Call this before writing records so field names and option values match exactly. Use getbasetables to find table IDs.
Create a table in a base. Each field needs a name and a type; option shapes vary per type (e.g. singleSelect takes {'choices': [...]}). Use getbaseschema on an existing table to see valid field definitions. Use list_bases for base IDs. Airtable has no delete-table endpoint.
Rename a table or change its description. Only the fields you pass are changed. Use getbasetables to find table IDs.
List the comments on a record, newest first, with pagination. Use list_records to find record IDs.
Add a comment to a record. Returns the new comment's ID. Use list_records to find record IDs.
Replace a comment's text. Only the comment's own author can edit it. Use listrecordcomments to find comment IDs.
Permanently delete a comment from a record. Use listrecordcomments to find comment IDs.
List one table's fields with their types and option values. Same data as gettableschema without the table's views. Use getbasetables to find table IDs.
Add a field to a table. Requires a name and a type; the options shape varies per type (e.g. singleSelect takes {'choices': [...]}). Use listtablefields to see existing fields and their option shapes. Airtable has no delete-field endpoint, so a field added here cannot be removed via the API.
Rename a field or change its description. Cannot change a field's type or its select options. Use listtablefields to find field IDs.
Get one field's type, description and options. Use listtablefields to find field IDs. Reads the whole base schema under the hood, so prefer listtablefields when you want several fields.
List records in a table, with optional server-side filtering, sorting and pagination. Field names in fields, filterbyformula and sort must match the table exactly -- call gettableschema first to read them. cellformat='string' also requires timezone and userlocale. pagesize max 100.
Create up to 10 records in one call. Field names and single-select option values must match the table exactly -- call gettableschema first to read them, or set typecast=true to let Airtable coerce values. Returns each new record's ID. Use getbasetables for table IDs.
Get one record by ID, with all of its field values. Use listrecords to find record IDs, and getrecord only when you already have one.
Update named fields on one record, leaving every other field untouched. Field names must match the table -- call gettableschema first. To clear all unnamed fields instead, use replacerecord. Use listrecords to find record IDs.
Update up to 10 records in one call, each by ID, leaving unnamed fields untouched. Field names must match the table -- call gettableschema first. Use list_records to find record IDs.
Replace one record completely: any field not named is CLEARED. To change some fields and keep the rest, use updaterecord instead. Use listrecords to find record IDs and gettableschema for field names.
Permanently delete one record. Use listrecords to find record IDs. To delete several at once use deletemultiple_records.
Permanently delete up to 10 records in one call. Use list_records to find record IDs.
Check whether the stored Airtable credential works, by listing accessible bases. Returns {success, message}.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It’s an MCP server that exposes tools from Airtable. These tools let your AI agents perform a host of “on-the-fly” actions with Airtable, from creating tables to updating comments to fetching records.
Here are just a few use cases (these use cases can also apply to other project management MCP servers):
Here are some popular tools across data types:
Records
Bases
Tables
Here are a few reasons:
You can take the following steps:
1. Sign up for Agent Handler by registering for a free account.
2. Navigate to "Tool Packs" in the left sidebar and select "Create New Tool Pack." You can give it a relevant name (e.g., "Airtable Automation Tools").
3. Browse the available connectors and add Airtable to your Tool Pack.
4. Choose your authentication method by deciding whether to use individual authentication (each user connects their own Airtable account) or shared authentication (one set of organization-level credentials for all users).
5. Select specific Airtable tools you want to make available to your agent, or enable all tools by default.
6. Navigate to "Registered Users" in the sidebar and create a new registered user, which represents the identity that will perform actions through your agent.
7. Save your Tool Pack settings and finalize your configuration.
8. Copy the MCP entry URL from your Tool Pack settings and connect it to your agent so it can access the Airtable tools you've configured.
Yes, you can add any number of security rules in a matter of clicks in Merge Agent Handler.
For example, you can:
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now