{
  "schemaVersion": "1.0",
  "item": {
    "slug": "airtable-automation",
    "name": "Airtable Automation",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sohamganatra/airtable-automation",
    "canonicalUrl": "https://clawhub.ai/sohamganatra/airtable-automation",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/airtable-automation",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=airtable-automation",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/airtable-automation"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/airtable-automation",
    "agentPageUrl": "https://openagent3.xyz/skills/airtable-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/airtable-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/airtable-automation/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Airtable Automation via Rube MCP",
        "body": "Automate Airtable operations through Composio's Airtable toolkit via Rube MCP."
      },
      {
        "title": "Prerequisites",
        "body": "Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Airtable connection via RUBE_MANAGE_CONNECTIONS with toolkit airtable\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas"
      },
      {
        "title": "Setup",
        "body": "Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit airtable\nIf connection is not ACTIVE, follow the returned auth link to complete Airtable auth\nConfirm connection status shows ACTIVE before running any workflows"
      },
      {
        "title": "1. Create and Manage Records",
        "body": "When to use: User wants to create, read, update, or delete records\n\nTool sequence:\n\nAIRTABLE_LIST_BASES - Discover available bases [Prerequisite]\nAIRTABLE_GET_BASE_SCHEMA - Inspect table structure [Prerequisite]\nAIRTABLE_LIST_RECORDS - List/filter records [Optional]\nAIRTABLE_CREATE_RECORD / AIRTABLE_CREATE_RECORDS - Create records [Optional]\nAIRTABLE_UPDATE_RECORD / AIRTABLE_UPDATE_MULTIPLE_RECORDS - Update records [Optional]\nAIRTABLE_DELETE_RECORD / AIRTABLE_DELETE_MULTIPLE_RECORDS - Delete records [Optional]\n\nKey parameters:\n\nbaseId: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX')\ntableIdOrName: Table ID (starts with 'tbl') or table name\nfields: Object mapping field names to values\nrecordId: Record ID (starts with 'rec') for updates/deletes\nfilterByFormula: Airtable formula for filtering\ntypecast: Set true for automatic type conversion\n\nPitfalls:\n\npageSize capped at 100; uses offset pagination; changing filters between pages can skip/duplicate rows\nCREATE_RECORDS hard limit of 10 records per request; chunk larger imports\nField names are CASE-SENSITIVE and must match schema exactly\n422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues\nINVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true"
      },
      {
        "title": "2. Search and Filter Records",
        "body": "When to use: User wants to find specific records using formulas\n\nTool sequence:\n\nAIRTABLE_GET_BASE_SCHEMA - Verify field names and types [Prerequisite]\nAIRTABLE_LIST_RECORDS - Query with filterByFormula [Required]\nAIRTABLE_GET_RECORD - Get full record details [Optional]\n\nKey parameters:\n\nfilterByFormula: Airtable formula (e.g., {Status}='Done')\nsort: Array of sort objects\nfields: Array of field names to return\nmaxRecords: Max total records across all pages\noffset: Pagination cursor from previous response\n\nPitfalls:\n\nField names in formulas must be wrapped in {} and match schema exactly\nString values must be quoted: {Status}='Active' not {Status}=Active\n422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields\nAirtable rate limit: ~5 requests/second per base; handle 429 with Retry-After"
      },
      {
        "title": "3. Manage Fields and Schema",
        "body": "When to use: User wants to create or modify table fields\n\nTool sequence:\n\nAIRTABLE_GET_BASE_SCHEMA - Inspect current schema [Prerequisite]\nAIRTABLE_CREATE_FIELD - Create a new field [Optional]\nAIRTABLE_UPDATE_FIELD - Rename/describe a field [Optional]\nAIRTABLE_UPDATE_TABLE - Update table metadata [Optional]\n\nKey parameters:\n\nname: Field name\ntype: Field type (singleLineText, number, singleSelect, etc.)\noptions: Type-specific options (choices for select, precision for number)\ndescription: Field description\n\nPitfalls:\n\nUPDATE_FIELD only changes name/description, NOT type/options; create a replacement field and migrate\nComputed fields (formula, rollup, lookup) cannot be created via API\n422 when type options are missing or malformed"
      },
      {
        "title": "4. Manage Comments",
        "body": "When to use: User wants to view or add comments on records\n\nTool sequence:\n\nAIRTABLE_LIST_COMMENTS - List comments on a record [Required]\n\nKey parameters:\n\nbaseId: Base ID\ntableIdOrName: Table identifier\nrecordId: Record ID (17 chars, starts with 'rec')\npageSize: Comments per page (max 100)\n\nPitfalls:\n\nRecord IDs must be exactly 17 characters starting with 'rec'"
      },
      {
        "title": "Airtable Formula Syntax",
        "body": "Comparison:\n\n{Status}='Done' - Equals\n{Priority}>1 - Greater than\n{Name}!='' - Not empty\n\nFunctions:\n\nAND({A}='x', {B}='y') - Both conditions\nOR({A}='x', {A}='y') - Either condition\nFIND('test', {Name})>0 - Contains text\nIS_BEFORE({Due Date}, TODAY()) - Date comparison\n\nEscape rules:\n\nSingle quotes in values: double them ({Name}='John''s Company')"
      },
      {
        "title": "Pagination",
        "body": "Set pageSize (max 100)\nCheck response for offset string\nPass offset to next request unchanged\nKeep filters/sorts/view stable between pages"
      },
      {
        "title": "Known Pitfalls",
        "body": "ID Formats:\n\nBase IDs: appXXXXXXXXXXXXXX (17 chars)\nTable IDs: tblXXXXXXXXXXXXXX (17 chars)\nRecord IDs: recXXXXXXXXXXXXXX (17 chars)\nField IDs: fldXXXXXXXXXXXXXX (17 chars)\n\nBatch Limits:\n\nCREATE_RECORDS: max 10 per request\nUPDATE_MULTIPLE_RECORDS: max 10 per request\nDELETE_MULTIPLE_RECORDS: max 10 per request"
      },
      {
        "title": "Quick Reference",
        "body": "TaskTool SlugKey ParamsList basesAIRTABLE_LIST_BASES(none)Get schemaAIRTABLE_GET_BASE_SCHEMAbaseIdList recordsAIRTABLE_LIST_RECORDSbaseId, tableIdOrNameGet recordAIRTABLE_GET_RECORDbaseId, tableIdOrName, recordIdCreate recordAIRTABLE_CREATE_RECORDbaseId, tableIdOrName, fieldsCreate recordsAIRTABLE_CREATE_RECORDSbaseId, tableIdOrName, recordsUpdate recordAIRTABLE_UPDATE_RECORDbaseId, tableIdOrName, recordId, fieldsUpdate recordsAIRTABLE_UPDATE_MULTIPLE_RECORDSbaseId, tableIdOrName, recordsDelete recordAIRTABLE_DELETE_RECORDbaseId, tableIdOrName, recordIdCreate fieldAIRTABLE_CREATE_FIELDbaseId, tableIdOrName, name, typeUpdate fieldAIRTABLE_UPDATE_FIELDbaseId, tableIdOrName, fieldIdUpdate tableAIRTABLE_UPDATE_TABLEbaseId, tableIdOrName, nameList commentsAIRTABLE_LIST_COMMENTSbaseId, tableIdOrName, recordId"
      }
    ],
    "body": "Airtable Automation via Rube MCP\n\nAutomate Airtable operations through Composio's Airtable toolkit via Rube MCP.\n\nPrerequisites\nRube MCP must be connected (RUBE_SEARCH_TOOLS available)\nActive Airtable connection via RUBE_MANAGE_CONNECTIONS with toolkit airtable\nAlways call RUBE_SEARCH_TOOLS first to get current tool schemas\nSetup\n\nGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\nVerify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds\nCall RUBE_MANAGE_CONNECTIONS with toolkit airtable\nIf connection is not ACTIVE, follow the returned auth link to complete Airtable auth\nConfirm connection status shows ACTIVE before running any workflows\nCore Workflows\n1. Create and Manage Records\n\nWhen to use: User wants to create, read, update, or delete records\n\nTool sequence:\n\nAIRTABLE_LIST_BASES - Discover available bases [Prerequisite]\nAIRTABLE_GET_BASE_SCHEMA - Inspect table structure [Prerequisite]\nAIRTABLE_LIST_RECORDS - List/filter records [Optional]\nAIRTABLE_CREATE_RECORD / AIRTABLE_CREATE_RECORDS - Create records [Optional]\nAIRTABLE_UPDATE_RECORD / AIRTABLE_UPDATE_MULTIPLE_RECORDS - Update records [Optional]\nAIRTABLE_DELETE_RECORD / AIRTABLE_DELETE_MULTIPLE_RECORDS - Delete records [Optional]\n\nKey parameters:\n\nbaseId: Base ID (starts with 'app', e.g., 'appXXXXXXXXXXXXXX')\ntableIdOrName: Table ID (starts with 'tbl') or table name\nfields: Object mapping field names to values\nrecordId: Record ID (starts with 'rec') for updates/deletes\nfilterByFormula: Airtable formula for filtering\ntypecast: Set true for automatic type conversion\n\nPitfalls:\n\npageSize capped at 100; uses offset pagination; changing filters between pages can skip/duplicate rows\nCREATE_RECORDS hard limit of 10 records per request; chunk larger imports\nField names are CASE-SENSITIVE and must match schema exactly\n422 UNKNOWN_FIELD_NAME when field names are wrong; 403 for permission issues\nINVALID_MULTIPLE_CHOICE_OPTIONS may require typecast=true\n2. Search and Filter Records\n\nWhen to use: User wants to find specific records using formulas\n\nTool sequence:\n\nAIRTABLE_GET_BASE_SCHEMA - Verify field names and types [Prerequisite]\nAIRTABLE_LIST_RECORDS - Query with filterByFormula [Required]\nAIRTABLE_GET_RECORD - Get full record details [Optional]\n\nKey parameters:\n\nfilterByFormula: Airtable formula (e.g., {Status}='Done')\nsort: Array of sort objects\nfields: Array of field names to return\nmaxRecords: Max total records across all pages\noffset: Pagination cursor from previous response\n\nPitfalls:\n\nField names in formulas must be wrapped in {} and match schema exactly\nString values must be quoted: {Status}='Active' not {Status}=Active\n422 INVALID_FILTER_BY_FORMULA for bad syntax or non-existent fields\nAirtable rate limit: ~5 requests/second per base; handle 429 with Retry-After\n3. Manage Fields and Schema\n\nWhen to use: User wants to create or modify table fields\n\nTool sequence:\n\nAIRTABLE_GET_BASE_SCHEMA - Inspect current schema [Prerequisite]\nAIRTABLE_CREATE_FIELD - Create a new field [Optional]\nAIRTABLE_UPDATE_FIELD - Rename/describe a field [Optional]\nAIRTABLE_UPDATE_TABLE - Update table metadata [Optional]\n\nKey parameters:\n\nname: Field name\ntype: Field type (singleLineText, number, singleSelect, etc.)\noptions: Type-specific options (choices for select, precision for number)\ndescription: Field description\n\nPitfalls:\n\nUPDATE_FIELD only changes name/description, NOT type/options; create a replacement field and migrate\nComputed fields (formula, rollup, lookup) cannot be created via API\n422 when type options are missing or malformed\n4. Manage Comments\n\nWhen to use: User wants to view or add comments on records\n\nTool sequence:\n\nAIRTABLE_LIST_COMMENTS - List comments on a record [Required]\n\nKey parameters:\n\nbaseId: Base ID\ntableIdOrName: Table identifier\nrecordId: Record ID (17 chars, starts with 'rec')\npageSize: Comments per page (max 100)\n\nPitfalls:\n\nRecord IDs must be exactly 17 characters starting with 'rec'\nCommon Patterns\nAirtable Formula Syntax\n\nComparison:\n\n{Status}='Done' - Equals\n{Priority}>1 - Greater than\n{Name}!='' - Not empty\n\nFunctions:\n\nAND({A}='x', {B}='y') - Both conditions\nOR({A}='x', {A}='y') - Either condition\nFIND('test', {Name})>0 - Contains text\nIS_BEFORE({Due Date}, TODAY()) - Date comparison\n\nEscape rules:\n\nSingle quotes in values: double them ({Name}='John''s Company')\nPagination\nSet pageSize (max 100)\nCheck response for offset string\nPass offset to next request unchanged\nKeep filters/sorts/view stable between pages\nKnown Pitfalls\n\nID Formats:\n\nBase IDs: appXXXXXXXXXXXXXX (17 chars)\nTable IDs: tblXXXXXXXXXXXXXX (17 chars)\nRecord IDs: recXXXXXXXXXXXXXX (17 chars)\nField IDs: fldXXXXXXXXXXXXXX (17 chars)\n\nBatch Limits:\n\nCREATE_RECORDS: max 10 per request\nUPDATE_MULTIPLE_RECORDS: max 10 per request\nDELETE_MULTIPLE_RECORDS: max 10 per request\nQuick Reference\nTask\tTool Slug\tKey Params\nList bases\tAIRTABLE_LIST_BASES\t(none)\nGet schema\tAIRTABLE_GET_BASE_SCHEMA\tbaseId\nList records\tAIRTABLE_LIST_RECORDS\tbaseId, tableIdOrName\nGet record\tAIRTABLE_GET_RECORD\tbaseId, tableIdOrName, recordId\nCreate record\tAIRTABLE_CREATE_RECORD\tbaseId, tableIdOrName, fields\nCreate records\tAIRTABLE_CREATE_RECORDS\tbaseId, tableIdOrName, records\nUpdate record\tAIRTABLE_UPDATE_RECORD\tbaseId, tableIdOrName, recordId, fields\nUpdate records\tAIRTABLE_UPDATE_MULTIPLE_RECORDS\tbaseId, tableIdOrName, records\nDelete record\tAIRTABLE_DELETE_RECORD\tbaseId, tableIdOrName, recordId\nCreate field\tAIRTABLE_CREATE_FIELD\tbaseId, tableIdOrName, name, type\nUpdate field\tAIRTABLE_UPDATE_FIELD\tbaseId, tableIdOrName, fieldId\nUpdate table\tAIRTABLE_UPDATE_TABLE\tbaseId, tableIdOrName, name\nList comments\tAIRTABLE_LIST_COMMENTS\tbaseId, tableIdOrName, recordId"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sohamganatra/airtable-automation",
    "publisherUrl": "https://clawhub.ai/sohamganatra/airtable-automation",
    "owner": "sohamganatra",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/airtable-automation",
    "downloadUrl": "https://openagent3.xyz/downloads/airtable-automation",
    "agentUrl": "https://openagent3.xyz/skills/airtable-automation/agent",
    "manifestUrl": "https://openagent3.xyz/skills/airtable-automation/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/airtable-automation/agent.md"
  }
}