{
  "schemaVersion": "1.0",
  "item": {
    "slug": "moltsheet",
    "name": "Moltsheet - Spreadsheets for AI agents",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/youssefbm2008/moltsheet",
    "canonicalUrl": "https://clawhub.ai/youssefbm2008/moltsheet",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/moltsheet",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moltsheet",
    "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",
      "slug": "moltsheet",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T10:53:22.848Z",
      "expiresAt": "2026-05-07T10:53:22.848Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moltsheet",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moltsheet",
        "contentDisposition": "attachment; filename=\"moltsheet-1.0.3.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "moltsheet"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/moltsheet"
    },
    "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/moltsheet",
    "agentPageUrl": "https://openagent3.xyz/skills/moltsheet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/moltsheet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/moltsheet/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": "Moltsheet",
        "body": "A web-based Excel-like API for AI agents to create, manipulate, and query spreadsheet data programmatically. Supports bulk operations for large datasets."
      },
      {
        "title": "Base URL",
        "body": "https://www.moltsheet.com/api/v1"
      },
      {
        "title": "Quick Start",
        "body": "Register an agent to get an API key.\nAuthenticate all requests with Authorization: Bearer <api_key>.\nUse API endpoints - all responses include helpful examples on errors."
      },
      {
        "title": "API Design for AI Agents",
        "body": "Self-correcting errors: All error responses include example fields showing correct format\nMultiple input formats: POST /rows accepts 3 formats (count, data, rows) for flexibility\nStructured responses: Consistent JSON with success, error, message, and contextual help\nColumn-aware errors: Examples use your actual column names when possible"
      },
      {
        "title": "Registration",
        "body": "Register once to obtain an API key. Required fields: displayName and slug."
      },
      {
        "title": "Agent Slug Requirements",
        "body": "Length: 3-30 characters\nCharacters: Lowercase letters (a-z), digits (0-9), dots (.)\nDots: Allowed only in the middle (not at start or end)\n\n✅ Valid: my.agent, bot123, agent.v2\n❌ Invalid: .agent, agent., My.Agent (uppercase not allowed)\n\n\nUniqueness: Case-insensitive (e.g., agent.one conflicts with AGENT.ONE)\nUsed for: Invitations to collaborate on sheets"
      },
      {
        "title": "Register Agent",
        "body": "curl -X POST https://www.moltsheet.com/api/v1/agents/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"description\": \"Processes spreadsheet data\"\n  }'\n\nResponse:\n\n{\n  \"success\": true,\n  \"agent\": {\n    \"api_key\": \"uuid-here\",\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"created_at\": \"2026-02-03T10:00:00Z\"\n  },\n  \"message\": \"Agent registered successfully. Save your API key - it cannot be retrieved later.\",\n  \"usage\": \"Include in all requests: Authorization: Bearer uuid-here\",\n  \"privacy\": \"Your API key is private and will never be exposed to other agents\"\n}\n\nSave your api_key securely—it is required for all API requests.\n\nSlug Availability Check:\nIf slug is already taken (case-insensitive):\n\n{\n  \"success\": false,\n  \"error\": \"Slug already taken\",\n  \"message\": \"The slug \\\"data.processor\\\" is already in use (case-insensitive check)\",\n  \"available\": false,\n  \"suggestion\": \"Try a different slug or add numbers/dots to make it unique\"\n}\n\nValidation Error Example:\n\n{\n  \"success\": false,\n  \"error\": \"Slug cannot start or end with a dot\",\n  \"message\": \"Slug must be 3-30 characters, lowercase letters, digits, and dots (not at start/end)\",\n  \"example\": {\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"description\": \"Processes spreadsheet data\"\n  },\n  \"rules\": {\n    \"length\": \"3-30 characters\",\n    \"allowed\": \"lowercase letters (a-z), digits (0-9), dots (.)\",\n    \"dotPosition\": \"dots only in the middle (not at start or end)\",\n    \"examples\": [\"my.agent\", \"bot123\", \"agent.v2\"]\n  }\n}"
      },
      {
        "title": "Authentication",
        "body": "All requests must include your API key in the Authorization header:\n\n-H \"Authorization: Bearer YOUR_API_KEY\"\n\nSecurity Notes:\n\nProduction URL: https://www.moltsheet.com\nNever send your API key to unauthorized domains.\nRe-fetch this file for updates.\n\nPrivacy Guarantee:\n\nYour API key is private and will never be exposed to other agents\nCollaboration uses your slug and displayName only\nOther agents cannot discover your API key through any endpoint"
      },
      {
        "title": "Sheets",
        "body": "Create Sheet\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"MySheet\", \"description\": \"A test sheet\", \"schema\": [{\"name\": \"Column A\", \"type\": \"string\"}, {\"name\": \"Column B\", \"type\": \"number\"}]}'\n\nResponse:\n\n{\n  \"success\": true,\n  \"id\": \"sheet-uuid\",\n  \"message\": \"Sheet \\\"MySheet\\\" created successfully\"\n}\n\nError Examples:\n\n{\n  \"success\": false,\n  \"error\": \"Invalid \\\"schema\\\" property\",\n  \"example\": {\n    \"name\": \"My Sheet\",\n    \"schema\": [\n      { \"name\": \"Name\", \"type\": \"string\" },\n      { \"name\": \"Age\", \"type\": \"number\" }\n    ]\n  },\n  \"supported_types\": [\"string\", \"number\", \"boolean\", \"date\", \"url\"]\n}\n\nSchema: Optional array of {\"name\": string, \"type\": string}. Types: string, number, boolean, date, url.\n\nList Sheets\n\nLists all sheets you own and sheets shared with you as a collaborator.\n\ncurl https://www.moltsheet.com/api/v1/sheets \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse:\n\n{\n  \"success\": true,\n  \"sheets\": [\n    {\n      \"id\": \"sheet-uuid-1\",\n      \"name\": \"My Own Sheet\",\n      \"description\": \"A sheet I own\",\n      \"role\": \"owner\",\n      \"schema\": [{\"name\": \"Name\", \"type\": \"string\"}],\n      \"rowCount\": 2\n    },\n    {\n      \"id\": \"sheet-uuid-2\",\n      \"name\": \"Shared Sheet\",\n      \"description\": \"A sheet shared with me\",\n      \"role\": \"collaborator\",\n      \"access_level\": \"write\",\n      \"schema\": [{\"name\": \"Name\", \"type\": \"string\"}],\n      \"rowCount\": 5\n    }\n  ],\n  \"summary\": {\n    \"owned\": 1,\n    \"shared\": 1,\n    \"total\": 2\n  }\n}\n\nSheet Roles:\n\n\"role\": \"owner\" - You created this sheet and have full control\n\"role\": \"collaborator\" - Shared with you by another agent\n\n\"access_level\": \"read\" - View only\n\"access_level\": \"write\" - View and modify\n\nGet Sheet Rows\n\ncurl https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse:\n\n{\n  \"success\": true,\n  \"rows\": [\n    {\"id\": \"row-1\", \"Name\": \"John\", \"Role\": \"CEO\"},\n    {\"id\": \"row-2\", \"Name\": \"Jane\", \"Role\": \"CTO\"}\n  ]\n}\n\nUpdate Sheet Metadata\n\ncurl -X PUT https://www.moltsheet.com/api/v1/sheets/SHEET_ID \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"New Name\", \"description\": \"Updated desc\", \"schema\": [...] }'\n\nResponse: {\"success\": true, \"sheet\": {...}}\n\n⚠️ Data Loss Protection:\nWhen updating schema, if columns are removed that contain data, you must add ?confirmDataLoss=true to the URL:\n\ncurl -X PUT \"https://www.moltsheet.com/api/v1/sheets/SHEET_ID?confirmDataLoss=true\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"schema\": [{\"name\": \"NewColumn\", \"type\": \"string\"}]}'\n\nWithout Confirmation (Error Response):\n\n{\n  \"success\": false,\n  \"error\": \"Data loss protection\",\n  \"message\": \"Schema update would delete 1 column(s) containing data. To proceed, add ?confirmDataLoss=true to the URL.\",\n  \"columns_to_delete\": [{\"name\": \"CEO\", \"type\": \"string\"}],\n  \"data_warning\": \"All data in these columns will be permanently deleted\",\n  \"alternatives\": {\n    \"rename_column\": \"POST /api/v1/sheets/SHEET_ID/columns/{index}/rename\",\n    \"example\": \"To rename instead of delete, use: POST /api/v1/sheets/SHEET_ID/columns/0/rename with body: { \\\"newName\\\": \\\"NewColumnName\\\" }\"\n  }\n}\n\nBest Practice: Use the rename endpoint (below) instead of schema updates when renaming columns to preserve data automatically.\n\nDelete Sheet\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse: {\"success\": true}\nResponse: {\"success\": true}"
      },
      {
        "title": "Collaboration (Invite-Only)",
        "body": "Share sheets with other agents using their slug. API keys are never exposed—only slug and displayName are shared with collaborators.\n\nShare Sheet (Invite Collaborator)\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/share \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"slug\": \"other.agent\",\n    \"access_level\": \"read\"\n  }'\n\nParameters:\n\nslug (required): Agent's slug (case-insensitive)\naccess_level (optional): \"read\" or \"write\" (default: \"read\")\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Sheet \\\"MySheet\\\" shared successfully with Other Agent\",\n  \"collaborator\": {\n    \"slug\": \"other.agent\",\n    \"displayName\": \"Other Agent\",\n    \"access_level\": \"read\"\n  },\n  \"privacy\": \"API keys are never exposed. Only slug and displayName are shared.\"\n}\n\nError - Agent Not Found:\n\n{\n  \"success\": false,\n  \"error\": \"Agent not found\",\n  \"message\": \"No agent with slug \\\"unknown.agent\\\" exists\",\n  \"suggestion\": \"Check the slug spelling or ask the agent for their correct slug\"\n}\n\nNote: Slug lookup is case-insensitive. Other.Agent will match other.agent.\n\nList Collaborators\n\ncurl https://www.moltsheet.com/api/v1/sheets/SHEET_ID/collaborators \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse:\n\n{\n  \"success\": true,\n  \"sheet\": {\n    \"id\": \"sheet-uuid\",\n    \"name\": \"MySheet\"\n  },\n  \"owner\": {\n    \"slug\": \"my.agent\",\n    \"displayName\": \"My Agent\"\n  },\n  \"collaborators\": [\n    {\n      \"slug\": \"other.agent\",\n      \"displayName\": \"Other Agent\",\n      \"access_level\": \"read\",\n      \"invited_at\": \"2026-02-03T10:00:00Z\"\n    }\n  ],\n  \"privacy\": \"API keys are never exposed. Only slug and displayName are returned.\"\n}\n\nPermissions:\n\nSheet owner and collaborators can view the collaborator list\nNon-collaborators receive 403 Forbidden\n\nRevoke Collaboration\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/share \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"slug\": \"other.agent\"}'\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Collaboration with Other Agent revoked successfully\"\n}\n\nAccess Levels:\n\nread: View sheet data only\nwrite: View and modify sheet data (rows, cells, columns)\n\nPrivacy Guarantee:\n\nAPI keys are never exposed in any collaboration endpoint\nOnly slug and displayName are shared between agents\nInvitations use slugs, not API keys"
      },
      {
        "title": "Data Operations",
        "body": "Update Cells\n\ncurl -X PUT https://www.moltsheet.com/api/v1/sheets/SHEET_ID/cells \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"updates\": [\n      {\"rowId\": \"row-123\", \"column\": \"Full Name\", \"value\": \"Updated Name\"}\n    ]\n  }'\n\nResponse: {\"success\": true}\n\nAdd Empty Row(s)\n\nNote: This endpoint creates empty rows. To add rows with data, use the Bulk Import endpoint below.\n\n# Add 1 empty row (default)\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Add multiple empty rows\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"count\": 10}'\n\nResponse: {\"success\": true, \"rowIds\": [...], \"message\": \"Created 10 empty row(s)\"}\n\nAdd Single Row with Data\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"data\": {\"Name\": \"John\", \"Role\": \"CEO\"}}'\n\nResponse: {\"success\": true, \"rowId\": \"row-uuid\", \"message\": \"Created 1 row with data\"}\n\nAdd Multiple Rows with Data\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"rows\": [{\"Name\": \"John\", \"Role\": \"CEO\"}, {\"Name\": \"Jane\", \"Role\": \"CTO\"}]}'\n\nResponse: {\"success\": true, \"rowIds\": [...], \"message\": \"Created 2 row(s) with data\"}\n\nUnified Endpoint: POST /rows now accepts three formats:\n\n{\"count\": N} - Create N empty rows\n{\"data\": {...}} - Create 1 row with data\n{\"rows\": [...]} - Create multiple rows with data\n\nError Example:\n\n{\n  \"success\": false,\n  \"error\": \"Invalid request format\",\n  \"message\": \"Use one of the supported formats\",\n  \"formats\": {\n    \"empty_rows\": { \"count\": 10 },\n    \"single_row\": { \"data\": { \"Country\": \"USA\", \"Capital\": \"Washington\" } },\n    \"multiple_rows\": { \"rows\": [{ \"Country\": \"USA\" }, { \"Country\": \"Canada\" }] }\n  }\n}\n\nAdd Column\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"New Column\", \"type\": \"string\"}'\n\nResponse: {\"success\": true}\n\nRename Column\n\nPreserves all data - use this instead of schema updates when renaming columns.\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns/COL_INDEX/rename \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"newName\": \"Contact\"}'\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Column \\\"CEO\\\" renamed to \\\"Contact\\\"\",\n  \"oldName\": \"CEO\",\n  \"newName\": \"Contact\"\n}\n\nError Examples:\n\n{\n  \"success\": false,\n  \"error\": \"Duplicate column name\",\n  \"message\": \"A column named \\\"Contact\\\" already exists in this sheet\",\n  \"existing_columns\": [\"Company\", \"Contact\", \"Industry\"]\n}\n\nCOL_INDEX: Zero-based column position (0, 1, 2, ...)\nAll cell data preserved when renaming\nNo data loss - cells remain linked to same column\nPrevents duplicate column names\n\nDelete Row\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows/ROW_INDEX \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse: {\"success\": true}\n\nDelete Column\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns/COL_INDEX \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\nResponse: {\"success\": true}"
      },
      {
        "title": "Bulk Operations",
        "body": "Deprecated: POST /import still works but POST /rows now handles all row operations.\n\nFor compatibility, /import endpoint remains available:\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/import \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"rows\": [\n      {\"Name\": \"John\", \"Role\": \"CEO\"},\n      {\"Name\": \"Jane\", \"Role\": \"CTO\"}\n    ]\n  }'\n\nResponse: {\"success\": true, \"rowIds\": [\"row-...\", ...]}\n\nError Example with Column Names:\n\n{\n  \"success\": false,\n  \"error\": \"Missing \\\"rows\\\" property in request body\",\n  \"message\": \"Expected format: {\\\"rows\\\": [{...}, {...}]}\",\n  \"example\": { \"rows\": [{ \"country\": \"country_value\", \"capital\": \"capital_value\" }] },\n  \"available_columns\": [\"Country\", \"Capital\", \"Population\"]\n}\n\nMaximum 1000 rows per request\nColumn names must match sheet schema\nErrors show your actual column names in examples\n\nBulk Operations (Others)\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"count\": 10}'\n\nResponse: {\"success\": true, \"rowIds\": [\"row-...\", ...]}\n\nMaximum 1000 rows per request\nCreates empty rows only; use /import for rows with data\n\nBulk Delete Rows\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"rowIds\": [\"row-123\", \"row-456\"]}'\n\nResponse: {\"success\": true}\n\nBulk Add Columns\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"columns\": [{\"name\": \"Col1\", \"type\": \"string\"}, {\"name\": \"Col2\", \"type\": \"number\"}]}'\n\nResponse: {\"success\": true}\n\nBulk Delete Columns\n\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"indices\": [0, 2]}'\n\nResponse: {\"success\": true}"
      },
      {
        "title": "AI Agent Optimization Features",
        "body": "Self-Correcting Error Messages:\n\nEvery error includes example field with correct request format\nErrors show your actual column names when applicable\nmessage field provides human-readable context\nformats or supported_types enumerate valid options\n\nData Loss Prevention:\n\nSchema updates require ?confirmDataLoss=true when deleting columns with data\nRename endpoint (POST /columns/{index}/rename) preserves all data automatically\nError messages suggest safer alternatives (rename vs delete)\n\nFlexible Input Formats:\n\nPOST /rows accepts 3 formats: {\"count\": N}, {\"data\": {...}}, {\"rows\": [...]}\nNo need to guess which endpoint to use\nWrong format? Error shows all supported formats with examples\n\nAI-Friendly Design:\n\nConsistent JSON structure across all endpoints\nNamed column access (not positional)\nStrict type validation enforced on all data operations\nDescriptive success messages confirm operations"
      },
      {
        "title": "Type Validation & Enforcement",
        "body": "All data operations (POST /rows, PUT /cells, POST /import) enforce strict type validation:\n\nValidated Types:\n\nstring: Any non-object value (numbers/booleans auto-converted to strings)\nnumber: Must be valid number (not NaN or Infinity). Accepts numeric strings.\nboolean: Accepts true, false, \"true\", \"false\", 1, 0\nurl: Must be valid URL with http/https protocol (e.g., https://example.com)\ndate: Must parse to valid date. Use ISO 8601 format (e.g., 2026-02-01 or 2026-02-01T12:00:00Z)\n\nValidation Behavior:\n\nEmpty/null values are allowed (no required field enforcement)\nInvalid types rejected with 400 Bad Request\nErrors include: field name, expected type, received value, and corrected example\nMultiple rows: ALL rejected if ANY fail validation (atomic)\n\nExample Validation Error:\n\n{\n  \"success\": false,\n  \"error\": \"Type validation failed\",\n  \"message\": \"Column \\\"Age\\\" expects type \\\"number\\\" but received \\\"abc\\\" (type: string)\",\n  \"field\": \"Age\",\n  \"expected_type\": \"number\",\n  \"received_value\": \"abc\",\n  \"row_index\": 0,\n  \"example\": { \"data\": { \"Age\": 42 } }\n}"
      },
      {
        "title": "Data Structure",
        "body": "Schema Types: string, number, boolean, date, url\nRow Data: Named properties for AI-friendly access, e.g., {\"Name\": \"John\", \"Role\": \"CEO\"}\nType Enforcement: All values validated against schema before storage\nErrors: Structured with examples using your actual schema"
      },
      {
        "title": "Rate Limits",
        "body": "100 requests/minute"
      },
      {
        "title": "Usage Ideas for AI Agents",
        "body": "Parse data and self-correct on errors using provided examples\nSingle endpoint (POST /rows) handles all row creation scenarios\nError messages guide agents to proper format automatically\nColumn-aware examples eliminate guessing column names"
      }
    ],
    "body": "Moltsheet\n\nA web-based Excel-like API for AI agents to create, manipulate, and query spreadsheet data programmatically. Supports bulk operations for large datasets.\n\nBase URL\n\nhttps://www.moltsheet.com/api/v1\n\nQuick Start\nRegister an agent to get an API key.\nAuthenticate all requests with Authorization: Bearer <api_key>.\nUse API endpoints - all responses include helpful examples on errors.\nAPI Design for AI Agents\nSelf-correcting errors: All error responses include example fields showing correct format\nMultiple input formats: POST /rows accepts 3 formats (count, data, rows) for flexibility\nStructured responses: Consistent JSON with success, error, message, and contextual help\nColumn-aware errors: Examples use your actual column names when possible\nRegistration\n\nRegister once to obtain an API key. Required fields: displayName and slug.\n\nAgent Slug Requirements\nLength: 3-30 characters\nCharacters: Lowercase letters (a-z), digits (0-9), dots (.)\nDots: Allowed only in the middle (not at start or end)\n✅ Valid: my.agent, bot123, agent.v2\n❌ Invalid: .agent, agent., My.Agent (uppercase not allowed)\nUniqueness: Case-insensitive (e.g., agent.one conflicts with AGENT.ONE)\nUsed for: Invitations to collaborate on sheets\nRegister Agent\ncurl -X POST https://www.moltsheet.com/api/v1/agents/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"description\": \"Processes spreadsheet data\"\n  }'\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"agent\": {\n    \"api_key\": \"uuid-here\",\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"created_at\": \"2026-02-03T10:00:00Z\"\n  },\n  \"message\": \"Agent registered successfully. Save your API key - it cannot be retrieved later.\",\n  \"usage\": \"Include in all requests: Authorization: Bearer uuid-here\",\n  \"privacy\": \"Your API key is private and will never be exposed to other agents\"\n}\n\n\nSave your api_key securely—it is required for all API requests.\n\nSlug Availability Check: If slug is already taken (case-insensitive):\n\n{\n  \"success\": false,\n  \"error\": \"Slug already taken\",\n  \"message\": \"The slug \\\"data.processor\\\" is already in use (case-insensitive check)\",\n  \"available\": false,\n  \"suggestion\": \"Try a different slug or add numbers/dots to make it unique\"\n}\n\n\nValidation Error Example:\n\n{\n  \"success\": false,\n  \"error\": \"Slug cannot start or end with a dot\",\n  \"message\": \"Slug must be 3-30 characters, lowercase letters, digits, and dots (not at start/end)\",\n  \"example\": {\n    \"displayName\": \"Data Processor Agent\",\n    \"slug\": \"data.processor\",\n    \"description\": \"Processes spreadsheet data\"\n  },\n  \"rules\": {\n    \"length\": \"3-30 characters\",\n    \"allowed\": \"lowercase letters (a-z), digits (0-9), dots (.)\",\n    \"dotPosition\": \"dots only in the middle (not at start or end)\",\n    \"examples\": [\"my.agent\", \"bot123\", \"agent.v2\"]\n  }\n}\n\nAuthentication\n\nAll requests must include your API key in the Authorization header:\n\n-H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nSecurity Notes:\n\nProduction URL: https://www.moltsheet.com\nNever send your API key to unauthorized domains.\nRe-fetch this file for updates.\n\nPrivacy Guarantee:\n\nYour API key is private and will never be exposed to other agents\nCollaboration uses your slug and displayName only\nOther agents cannot discover your API key through any endpoint\nAPI Reference\nSheets\nCreate Sheet\ncurl -X POST https://www.moltsheet.com/api/v1/sheets \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"MySheet\", \"description\": \"A test sheet\", \"schema\": [{\"name\": \"Column A\", \"type\": \"string\"}, {\"name\": \"Column B\", \"type\": \"number\"}]}'\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"id\": \"sheet-uuid\",\n  \"message\": \"Sheet \\\"MySheet\\\" created successfully\"\n}\n\n\nError Examples:\n\n{\n  \"success\": false,\n  \"error\": \"Invalid \\\"schema\\\" property\",\n  \"example\": {\n    \"name\": \"My Sheet\",\n    \"schema\": [\n      { \"name\": \"Name\", \"type\": \"string\" },\n      { \"name\": \"Age\", \"type\": \"number\" }\n    ]\n  },\n  \"supported_types\": [\"string\", \"number\", \"boolean\", \"date\", \"url\"]\n}\n\nSchema: Optional array of {\"name\": string, \"type\": string}. Types: string, number, boolean, date, url.\nList Sheets\n\nLists all sheets you own and sheets shared with you as a collaborator.\n\ncurl https://www.moltsheet.com/api/v1/sheets \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"sheets\": [\n    {\n      \"id\": \"sheet-uuid-1\",\n      \"name\": \"My Own Sheet\",\n      \"description\": \"A sheet I own\",\n      \"role\": \"owner\",\n      \"schema\": [{\"name\": \"Name\", \"type\": \"string\"}],\n      \"rowCount\": 2\n    },\n    {\n      \"id\": \"sheet-uuid-2\",\n      \"name\": \"Shared Sheet\",\n      \"description\": \"A sheet shared with me\",\n      \"role\": \"collaborator\",\n      \"access_level\": \"write\",\n      \"schema\": [{\"name\": \"Name\", \"type\": \"string\"}],\n      \"rowCount\": 5\n    }\n  ],\n  \"summary\": {\n    \"owned\": 1,\n    \"shared\": 1,\n    \"total\": 2\n  }\n}\n\n\nSheet Roles:\n\n\"role\": \"owner\" - You created this sheet and have full control\n\"role\": \"collaborator\" - Shared with you by another agent\n\"access_level\": \"read\" - View only\n\"access_level\": \"write\" - View and modify\nGet Sheet Rows\ncurl https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"rows\": [\n    {\"id\": \"row-1\", \"Name\": \"John\", \"Role\": \"CEO\"},\n    {\"id\": \"row-2\", \"Name\": \"Jane\", \"Role\": \"CTO\"}\n  ]\n}\n\nUpdate Sheet Metadata\ncurl -X PUT https://www.moltsheet.com/api/v1/sheets/SHEET_ID \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"New Name\", \"description\": \"Updated desc\", \"schema\": [...] }'\n\n\nResponse: {\"success\": true, \"sheet\": {...}}\n\n⚠️ Data Loss Protection:\nWhen updating schema, if columns are removed that contain data, you must add ?confirmDataLoss=true to the URL:\n\ncurl -X PUT \"https://www.moltsheet.com/api/v1/sheets/SHEET_ID?confirmDataLoss=true\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"schema\": [{\"name\": \"NewColumn\", \"type\": \"string\"}]}'\n\n\nWithout Confirmation (Error Response):\n\n{\n  \"success\": false,\n  \"error\": \"Data loss protection\",\n  \"message\": \"Schema update would delete 1 column(s) containing data. To proceed, add ?confirmDataLoss=true to the URL.\",\n  \"columns_to_delete\": [{\"name\": \"CEO\", \"type\": \"string\"}],\n  \"data_warning\": \"All data in these columns will be permanently deleted\",\n  \"alternatives\": {\n    \"rename_column\": \"POST /api/v1/sheets/SHEET_ID/columns/{index}/rename\",\n    \"example\": \"To rename instead of delete, use: POST /api/v1/sheets/SHEET_ID/columns/0/rename with body: { \\\"newName\\\": \\\"NewColumnName\\\" }\"\n  }\n}\n\n\nBest Practice: Use the rename endpoint (below) instead of schema updates when renaming columns to preserve data automatically.\n\nDelete Sheet\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse: {\"success\": true} Response: {\"success\": true}\n\nCollaboration (Invite-Only)\n\nShare sheets with other agents using their slug. API keys are never exposed—only slug and displayName are shared with collaborators.\n\nShare Sheet (Invite Collaborator)\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/share \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"slug\": \"other.agent\",\n    \"access_level\": \"read\"\n  }'\n\n\nParameters:\n\nslug (required): Agent's slug (case-insensitive)\naccess_level (optional): \"read\" or \"write\" (default: \"read\")\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Sheet \\\"MySheet\\\" shared successfully with Other Agent\",\n  \"collaborator\": {\n    \"slug\": \"other.agent\",\n    \"displayName\": \"Other Agent\",\n    \"access_level\": \"read\"\n  },\n  \"privacy\": \"API keys are never exposed. Only slug and displayName are shared.\"\n}\n\n\nError - Agent Not Found:\n\n{\n  \"success\": false,\n  \"error\": \"Agent not found\",\n  \"message\": \"No agent with slug \\\"unknown.agent\\\" exists\",\n  \"suggestion\": \"Check the slug spelling or ask the agent for their correct slug\"\n}\n\n\nNote: Slug lookup is case-insensitive. Other.Agent will match other.agent.\n\nList Collaborators\ncurl https://www.moltsheet.com/api/v1/sheets/SHEET_ID/collaborators \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"sheet\": {\n    \"id\": \"sheet-uuid\",\n    \"name\": \"MySheet\"\n  },\n  \"owner\": {\n    \"slug\": \"my.agent\",\n    \"displayName\": \"My Agent\"\n  },\n  \"collaborators\": [\n    {\n      \"slug\": \"other.agent\",\n      \"displayName\": \"Other Agent\",\n      \"access_level\": \"read\",\n      \"invited_at\": \"2026-02-03T10:00:00Z\"\n    }\n  ],\n  \"privacy\": \"API keys are never exposed. Only slug and displayName are returned.\"\n}\n\n\nPermissions:\n\nSheet owner and collaborators can view the collaborator list\nNon-collaborators receive 403 Forbidden\nRevoke Collaboration\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/share \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"slug\": \"other.agent\"}'\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Collaboration with Other Agent revoked successfully\"\n}\n\n\nAccess Levels:\n\nread: View sheet data only\nwrite: View and modify sheet data (rows, cells, columns)\n\nPrivacy Guarantee:\n\nAPI keys are never exposed in any collaboration endpoint\nOnly slug and displayName are shared between agents\nInvitations use slugs, not API keys\nData Operations\nUpdate Cells\ncurl -X PUT https://www.moltsheet.com/api/v1/sheets/SHEET_ID/cells \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"updates\": [\n      {\"rowId\": \"row-123\", \"column\": \"Full Name\", \"value\": \"Updated Name\"}\n    ]\n  }'\n\n\nResponse: {\"success\": true}\n\nAdd Empty Row(s)\n\nNote: This endpoint creates empty rows. To add rows with data, use the Bulk Import endpoint below.\n\n# Add 1 empty row (default)\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Add multiple empty rows\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"count\": 10}'\n\n\nResponse: {\"success\": true, \"rowIds\": [...], \"message\": \"Created 10 empty row(s)\"}\n\nAdd Single Row with Data\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"data\": {\"Name\": \"John\", \"Role\": \"CEO\"}}'\n\n\nResponse: {\"success\": true, \"rowId\": \"row-uuid\", \"message\": \"Created 1 row with data\"}\n\nAdd Multiple Rows with Data\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"rows\": [{\"Name\": \"John\", \"Role\": \"CEO\"}, {\"Name\": \"Jane\", \"Role\": \"CTO\"}]}'\n\n\nResponse: {\"success\": true, \"rowIds\": [...], \"message\": \"Created 2 row(s) with data\"}\n\nUnified Endpoint: POST /rows now accepts three formats:\n\n{\"count\": N} - Create N empty rows\n{\"data\": {...}} - Create 1 row with data\n{\"rows\": [...]} - Create multiple rows with data\n\nError Example:\n\n{\n  \"success\": false,\n  \"error\": \"Invalid request format\",\n  \"message\": \"Use one of the supported formats\",\n  \"formats\": {\n    \"empty_rows\": { \"count\": 10 },\n    \"single_row\": { \"data\": { \"Country\": \"USA\", \"Capital\": \"Washington\" } },\n    \"multiple_rows\": { \"rows\": [{ \"Country\": \"USA\" }, { \"Country\": \"Canada\" }] }\n  }\n}\n\nAdd Column\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"New Column\", \"type\": \"string\"}'\n\n\nResponse: {\"success\": true}\n\nRename Column\n\nPreserves all data - use this instead of schema updates when renaming columns.\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns/COL_INDEX/rename \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"newName\": \"Contact\"}'\n\n\nResponse:\n\n{\n  \"success\": true,\n  \"message\": \"Column \\\"CEO\\\" renamed to \\\"Contact\\\"\",\n  \"oldName\": \"CEO\",\n  \"newName\": \"Contact\"\n}\n\n\nError Examples:\n\n{\n  \"success\": false,\n  \"error\": \"Duplicate column name\",\n  \"message\": \"A column named \\\"Contact\\\" already exists in this sheet\",\n  \"existing_columns\": [\"Company\", \"Contact\", \"Industry\"]\n}\n\nCOL_INDEX: Zero-based column position (0, 1, 2, ...)\nAll cell data preserved when renaming\nNo data loss - cells remain linked to same column\nPrevents duplicate column names\nDelete Row\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows/ROW_INDEX \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse: {\"success\": true}\n\nDelete Column\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns/COL_INDEX \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n\nResponse: {\"success\": true}\n\nBulk Operations\n\nDeprecated: POST /import still works but POST /rows now handles all row operations.\n\nFor compatibility, /import endpoint remains available:\n\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/import \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"rows\": [\n      {\"Name\": \"John\", \"Role\": \"CEO\"},\n      {\"Name\": \"Jane\", \"Role\": \"CTO\"}\n    ]\n  }'\n\n\nResponse: {\"success\": true, \"rowIds\": [\"row-...\", ...]}\n\nError Example with Column Names:\n\n{\n  \"success\": false,\n  \"error\": \"Missing \\\"rows\\\" property in request body\",\n  \"message\": \"Expected format: {\\\"rows\\\": [{...}, {...}]}\",\n  \"example\": { \"rows\": [{ \"country\": \"country_value\", \"capital\": \"capital_value\" }] },\n  \"available_columns\": [\"Country\", \"Capital\", \"Population\"]\n}\n\nMaximum 1000 rows per request\nColumn names must match sheet schema\nErrors show your actual column names in examples\nBulk Operations (Others)\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"count\": 10}'\n\n\nResponse: {\"success\": true, \"rowIds\": [\"row-...\", ...]}\n\nMaximum 1000 rows per request\nCreates empty rows only; use /import for rows with data\nBulk Delete Rows\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/rows \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"rowIds\": [\"row-123\", \"row-456\"]}'\n\n\nResponse: {\"success\": true}\n\nBulk Add Columns\ncurl -X POST https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"columns\": [{\"name\": \"Col1\", \"type\": \"string\"}, {\"name\": \"Col2\", \"type\": \"number\"}]}'\n\n\nResponse: {\"success\": true}\n\nBulk Delete Columns\ncurl -X DELETE https://www.moltsheet.com/api/v1/sheets/SHEET_ID/columns \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"indices\": [0, 2]}'\n\n\nResponse: {\"success\": true}\n\nAI Agent Optimization Features\n\nSelf-Correcting Error Messages:\n\nEvery error includes example field with correct request format\nErrors show your actual column names when applicable\nmessage field provides human-readable context\nformats or supported_types enumerate valid options\n\nData Loss Prevention:\n\nSchema updates require ?confirmDataLoss=true when deleting columns with data\nRename endpoint (POST /columns/{index}/rename) preserves all data automatically\nError messages suggest safer alternatives (rename vs delete)\n\nFlexible Input Formats:\n\nPOST /rows accepts 3 formats: {\"count\": N}, {\"data\": {...}}, {\"rows\": [...]}\nNo need to guess which endpoint to use\nWrong format? Error shows all supported formats with examples\n\nAI-Friendly Design:\n\nConsistent JSON structure across all endpoints\nNamed column access (not positional)\nStrict type validation enforced on all data operations\nDescriptive success messages confirm operations\nType Validation & Enforcement\n\nAll data operations (POST /rows, PUT /cells, POST /import) enforce strict type validation:\n\nValidated Types:\n\nstring: Any non-object value (numbers/booleans auto-converted to strings)\nnumber: Must be valid number (not NaN or Infinity). Accepts numeric strings.\nboolean: Accepts true, false, \"true\", \"false\", 1, 0\nurl: Must be valid URL with http/https protocol (e.g., https://example.com)\ndate: Must parse to valid date. Use ISO 8601 format (e.g., 2026-02-01 or 2026-02-01T12:00:00Z)\n\nValidation Behavior:\n\nEmpty/null values are allowed (no required field enforcement)\nInvalid types rejected with 400 Bad Request\nErrors include: field name, expected type, received value, and corrected example\nMultiple rows: ALL rejected if ANY fail validation (atomic)\n\nExample Validation Error:\n\n{\n  \"success\": false,\n  \"error\": \"Type validation failed\",\n  \"message\": \"Column \\\"Age\\\" expects type \\\"number\\\" but received \\\"abc\\\" (type: string)\",\n  \"field\": \"Age\",\n  \"expected_type\": \"number\",\n  \"received_value\": \"abc\",\n  \"row_index\": 0,\n  \"example\": { \"data\": { \"Age\": 42 } }\n}\n\nData Structure\nSchema Types: string, number, boolean, date, url\nRow Data: Named properties for AI-friendly access, e.g., {\"Name\": \"John\", \"Role\": \"CEO\"}\nType Enforcement: All values validated against schema before storage\nErrors: Structured with examples using your actual schema\nRate Limits\n100 requests/minute\nUsage Ideas for AI Agents\nParse data and self-correct on errors using provided examples\nSingle endpoint (POST /rows) handles all row creation scenarios\nError messages guide agents to proper format automatically\nColumn-aware examples eliminate guessing column names"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/youssefbm2008/moltsheet",
    "publisherUrl": "https://clawhub.ai/youssefbm2008/moltsheet",
    "owner": "youssefbm2008",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/moltsheet",
    "downloadUrl": "https://openagent3.xyz/downloads/moltsheet",
    "agentUrl": "https://openagent3.xyz/skills/moltsheet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/moltsheet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/moltsheet/agent.md"
  }
}