{
  "info": {
    "name": "Grist — mcp.ai",
    "description": "REST API for the Grist MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/grist",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "grist_add_records",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/add/records",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "add",
            "records"
          ]
        },
        "description": "Add one or more records to a Grist table. First use GRIST_LIST_WORKSPACES to get docId, GRIST_LIST_TABLES to get tableId, and GRIST_LIST_COLUMNS to get column IDs for the fields mapping.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"noparse\": false,\n  \"records\": \"\",\n  \"tableId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_create_document",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/document",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "document"
          ]
        },
        "description": "Creates a new Grist document in a specified workspace. Use this tool when you need to add a new spreadsheet document to a workspace. Requires a valid workspace ID (obtainable via GRIST_LIST_WORKSPACES",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"isPinned\": false,\n  \"workspaceId\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_create_scim_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/scim/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "scim",
            "user"
          ]
        },
        "description": "Tool to create a new SCIM user. Use when provisioning new user accounts via SCIM. Run after gathering all required user details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": {},\n  \"emails\": \"\",\n  \"locale\": \"\",\n  \"photos\": \"\",\n  \"schemas\": \"\",\n  \"userName\": \"\",\n  \"displayName\": \"\",\n  \"preferredLanguage\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_create_table",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/table",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "table"
          ]
        },
        "description": "Tool to create tables in a document. Use after confirming the document ID. Creates one or more tables with specified columns in the given document.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"tables\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_create_webhook",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/webhook",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "webhook"
          ]
        },
        "description": "Tool to create a new webhook for a specified document. Use when you need to register webhook endpoints for document events in Grist. Run after confirming document ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"webhooks\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_delete_attachment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/attachment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "attachment"
          ]
        },
        "description": "Remove unused attachments from a Grist document to free up storage space. IMPORTANT: This action removes ALL attachments that are not currently referenced by any cell in the document. It does NOT dele",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"expired_only\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_delete_column",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/column",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "column"
          ]
        },
        "description": "Tool to delete a column from a Grist document table. Use after confirming document, table, and column IDs.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"col_id\": \"\",\n  \"doc_id\": \"\",\n  \"table_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_delete_records",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/records",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "records"
          ]
        },
        "description": "Tool to delete records from a specified Grist table. Use when you need to remove specific rows by their IDs. Use after confirming the row IDs exist.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"row_ids\": \"\",\n  \"table_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_delete_scim_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/scim/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "scim",
            "user"
          ]
        },
        "description": "Delete a user from the Grist organization by their numeric user ID. Use GRIST_GET_USERS first to find the user's ID. Falls back to org access API if SCIM is not enabled. Note: Cannot delete your own a",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"user_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_delete_webhook",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/webhook",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "webhook"
          ]
        },
        "description": "Permanently removes a webhook from a Grist document. Use this tool when you need to stop receiving notifications for document changes. First use GRIST_LIST_WEBHOOKS to find the webhook_id you want to ",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"webhook_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_download_all_attachments_archive",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/download/all/attachments/archive",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "download",
            "all",
            "attachments",
            "archive"
          ]
        },
        "description": "Download all attachments from a Grist document as a single archive file (.zip or .tar). Use this to bulk-download attachments. Ensure the document has attachments before calling (check with GRIST_LIST",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"format\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_download_attachment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/download/attachment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "download",
            "attachment"
          ]
        },
        "description": "Download a file attachment from a Grist document. Returns the file content as a downloadable file. Use GRIST_LIST_ATTACHMENTS first to get valid attachment IDs.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"attachmentId\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_fetch_document_metadata",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/fetch/document/metadata",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "fetch",
            "document",
            "metadata"
          ]
        },
        "description": "Tool to fetch metadata for a specified Grist document. Use after obtaining the document ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_fetch_table_metadata",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/fetch/table/metadata",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "fetch",
            "table",
            "metadata"
          ]
        },
        "description": "Tool to retrieve metadata for a specified table in a Grist document. Use when you need to inspect table schema details before data operations.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"header\": \"\",\n  \"table_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_get_org_access",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/org/access",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "org",
            "access"
          ]
        },
        "description": "Retrieves the list of users who have access to a Grist organization along with their access roles (owners, editors, viewers). Use this to find user IDs, emails, or check access permissions within an o",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"org_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_get_users",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/users",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "users"
          ]
        },
        "description": "Tool to retrieve a list of users via SCIM v2. Use when you need to page through and filter enterprise users in Grist.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"count\": 0,\n  \"filter\": \"\",\n  \"startIndex\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_attachments",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/attachments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "attachments"
          ]
        },
        "description": "Tool to list all attachments in a Grist document. Use after confirming the document ID to retrieve attachment metadata.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"sort\": \"\",\n  \"docId\": \"\",\n  \"limit\": 0,\n  \"X-Sort\": \"\",\n  \"filter\": \"\",\n  \"X-Limit\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_columns",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/columns",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "columns"
          ]
        },
        "description": "Tool to list all columns in a specified Grist table. Use after selecting the document and table to inspect column metadata.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\",\n  \"hidden\": false,\n  \"table_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_organizations",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/organizations",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "organizations"
          ]
        },
        "description": "Tool to list all organizations accessible to the authenticated user. Use when you need to select a Grist organization for subsequent operations.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_records",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/records",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "records"
          ]
        },
        "description": "Tool to retrieve records from a specified table within a Grist document. Use when you need to fetch rows by applying optional filters, sorting, limits, or hidden columns. Example: list records where p",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"sort\": \"\",\n  \"docId\": \"\",\n  \"limit\": 0,\n  \"filter\": \"\",\n  \"hidden\": false,\n  \"tableId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_tables",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/tables",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "tables"
          ]
        },
        "description": "Tool to list all tables within a specified document. Use after obtaining the document ID to retrieve its tables.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_webhooks",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/webhooks",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "webhooks"
          ]
        },
        "description": "List all webhooks configured for a Grist document. Returns webhook configuration details (URL, event types, table binding) and delivery status information. Use this to inspect, audit, or manage webhoo",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"doc_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_list_workspaces",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/workspaces",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "workspaces"
          ]
        },
        "description": "Tool to list all workspaces and documents accessible to the authenticated user on the current site. Use when you need to select a workspace or document for subsequent operations.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_run_sql_query",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/run/sql/query",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "run",
            "sql",
            "query"
          ]
        },
        "description": "Tool to execute a read-only SQL SELECT query on a Grist document. Use after confirming the document ID and preparing a valid SQL SELECT statement.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"sql\": \"\",\n  \"args\": \"\",\n  \"docId\": \"\",\n  \"timeout\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_update_column_metadata",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/column/metadata",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "column",
            "metadata"
          ]
        },
        "description": "Updates metadata (label, type, description, formula, etc.) for one or more columns in a Grist table. Use List Columns first to get valid column IDs. Warning: changing 'label' may rename the column ID ",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"columns\": \"\",\n  \"tableId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_update_document_metadata",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/document/metadata",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "document",
            "metadata"
          ]
        },
        "description": "Tool to update metadata for a specified Grist document. Use when you need to rename or pin/unpin a document after obtaining its ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"doc_id\": \"\",\n  \"isPinned\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_update_records",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/records",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "records"
          ]
        },
        "description": "Update existing records in a Grist table by their row IDs. Use this tool to modify field values for one or more records in a specified document and table. First use GRIST_LIST_RECORDS to obtain the re",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"noparse\": false,\n  \"records\": \"\",\n  \"tableId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_update_table_metadata",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/table/metadata",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "table",
            "metadata"
          ]
        },
        "description": "Update metadata properties for a table in a Grist document. Currently the main updatable property is 'onDemand' which controls lazy loading of table data. Use List Tables to find valid table IDs first",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"fields\": {},\n  \"tableId\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_update_webhook",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/webhook",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "webhook"
          ]
        },
        "description": "Update an existing webhook configuration for a Grist document. Use to modify webhook settings such as URL, event types, enabled status, or target table. Requires valid document ID (from GRIST_LIST_WOR",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"\",\n  \"memo\": \"\",\n  \"name\": \"\",\n  \"doc_id\": \"\",\n  \"enabled\": false,\n  \"tableId\": \"\",\n  \"eventTypes\": \"\",\n  \"webhook_id\": \"\",\n  \"isReadyColumn\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "grist_upload_attachment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/upload/attachment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "upload",
            "attachment"
          ]
        },
        "description": "Upload one or more file attachments to a Grist document. Returns attachment IDs that can be used to link files to records in Attachments-type columns. First use GRIST_LIST_WORKSPACES to get a valid do",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"docId\": \"\",\n  \"files\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}