> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rippit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# create_worksheet

> **Create analysis worksheet**

Create a saved analysis worksheet from table rows, with support for AI and formula columns; read_table and aggregate_table query existing columns. Added columns can be inspected, filtered, aggregated and reused, and the source table is unchanged.

At most 10000 rows are copied (server-enforced). When more rows match and neither `rowLimit` nor `sampleRows` is set, the kept rows are an arbitrary subset, not a random sample; `rowsMatchingFilter` (or `rowsBefore` without a filter) above `rowsAfter` shows the cut. Admin-configured Table View filters apply before `where`, and the counts include them.

The worksheet exists when this returns, but its rows load asynchronously, so it can briefly read as empty and `rowsAfter` can be absent. A large source can outlast the call's timeout while the server keeps working; a blind retry then creates a duplicate worksheet, and list_worksheets shows whether the first one was created.



## OpenAPI

````yaml /api-reference/tools-openapi.json post /v1/create_worksheet
openapi: 3.1.0
info:
  title: Rippit API
  version: 1.0.0
  description: Every operation is also an MCP tool with the same name and parameters.
servers:
  - url: https://api.rippit.com
security:
  - bearer: []
paths:
  /v1/create_worksheet:
    post:
      summary: create_worksheet
      description: >-
        **Create analysis worksheet**


        Create a saved analysis worksheet from table rows, with support for AI
        and formula columns; read_table and aggregate_table query existing
        columns. Added columns can be inspected, filtered, aggregated and
        reused, and the source table is unchanged.


        At most 10000 rows are copied (server-enforced). When more rows match
        and neither `rowLimit` nor `sampleRows` is set, the kept rows are an
        arbitrary subset, not a random sample; `rowsMatchingFilter` (or
        `rowsBefore` without a filter) above `rowsAfter` shows the cut.
        Admin-configured Table View filters apply before `where`, and the counts
        include them.


        The worksheet exists when this returns, but its rows load
        asynchronously, so it can briefly read as empty and `rowsAfter` can be
        absent. A large source can outlast the call's timeout while the server
        keeps working; a blind retry then creates a duplicate worksheet, and
        list_worksheets shows whether the first one was created.
      operationId: create_worksheet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tableId:
                  type: string
                  minLength: 1
                  pattern: ^[A-Za-z0-9_-]+$
                  description: 'Source Rippit table id: a custom data table or a worksheet.'
                title:
                  description: Worksheet display name; defaults to "Untitled Worksheet".
                  type: string
                  maxLength: 200
                where:
                  description: >-
                    Filters on source rows, combined with AND (`or_filters`
                    groups OR); omitted copies the whole table.
                  maxItems: 20
                  type: array
                  items:
                    $ref: '#/components/schemas/create_worksheet____schema0'
                columnIds:
                  description: >-
                    Source column ids to copy; omitted copies every non-system
                    column. A narrowed list keeps `ticket_sid` or the column
                    whose kind is `external_gradable_reference`, or enrichment
                    cannot read the conversations.
                  maxItems: 200
                  type: array
                  items:
                    type: string
                    minLength: 1
                workbookId:
                  description: >-
                    Existing workbook for the worksheet; omitted creates a new
                    workbook.
                  type: string
                  minLength: 1
                rowLimit:
                  description: >-
                    Keep the N most recent rows by row date after `where` (an
                    arbitrary N without a row-date column). Not combinable with
                    `sampleRows`.
                  type: integer
                  minimum: 1
                  maximum: 10000
                sampleRows:
                  description: >-
                    Keep a uniform random sample of N rows drawn after `where`,
                    fresh on each call. Not combinable with `rowLimit`.
                  type: integer
                  minimum: 1
                  maximum: 10000
              required:
                - tableId
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
components:
  schemas:
    create_worksheet____schema0:
      anyOf:
        - type: object
          properties:
            columnId:
              type: string
              minLength: 1
              description: Column id, not its label.
            operator:
              type: string
              enum:
                - '='
                - '!='
                - '>'
                - <
                - '>='
                - <=
                - IN
                - NOT IN
                - LIKE
                - CONTAINS_ALL
                - ANY
                - ALL
                - NONE
                - NOT_EMPTY
                - EMPTY
                - IS
                - IS NOT
              description: >-
                IN/NOT IN match exact values or array elements; CONTAINS_ALL
                needs all. ANY/ALL/NONE: case-insensitive substring matches,
                never for id columns (they over-match).
            value:
              description: >-
                Array for multi-value operators (ANY/ALL/NONE: at most 250
                strings). singleSelect and bucketed columns store option ids
                (opt_*): filter by id; a label matches no rows. describe_column
                with `search` resolves a label to its id.
              anyOf:
                - type:
                    - string
                    - number
                    - boolean
                    - 'null'
                - type: array
                  items:
                    type:
                      - string
                      - number
                      - boolean
                      - 'null'
          required:
            - columnId
            - operator
          additionalProperties: false
        - type: object
          properties:
            columnId:
              type: string
              minLength: 1
              description: Column id, not its label.
            operator:
              type: string
              const: BETWEEN
            date_from:
              type: string
              description: >-
                Inclusive. Plain dates cover whole days, and times without an
                offset are clock times, in the reported timezone or UTC.
            date_to:
              type: string
              description: Inclusive; a plain date covers that whole day.
          required:
            - columnId
            - operator
            - date_from
            - date_to
          additionalProperties: false
        - type: object
          properties:
            columnId:
              type: string
              minLength: 1
              description: Column id, not its label.
            period:
              type: object
              properties:
                'n':
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                  description: Signed units; negative values reach into the past.
                unit:
                  type: string
                  enum:
                    - hours
                    - days
                    - weeks
                    - months
                    - years
              required:
                - 'n'
                - unit
              additionalProperties: false
              description: >-
                Whole days in the read timezone, including today: { n: -7, unit:
                "days" } keeps today and the six prior days. Months/years follow
                the calendar; hours are exact. Reads re-resolve; worksheets keep
                a snapshot.
            offset:
              description: >-
                Shifts the anchor before period applies; { n: -1, unit: "weeks"
                } moves it one week into the past.
              type: object
              properties:
                'n':
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                  description: Signed units; negative values reach into the past.
                unit:
                  type: string
                  enum:
                    - hours
                    - days
                    - weeks
                    - months
                    - years
              required:
                - 'n'
                - unit
              additionalProperties: false
          required:
            - columnId
            - period
          additionalProperties: false
        - type: object
          properties:
            or_filters:
              minItems: 1
              type: array
              items:
                minItems: 1
                type: array
                items:
                  $ref: '#/components/schemas/create_worksheet____schema0'
              description: ORs branches of ANDed items.
          required:
            - or_filters
          additionalProperties: false
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.