> ## 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.

# describe_snowflake_table

> **Describe Snowflake table**

Read the columns of a table in the customer's own Snowflake account, before importing it. Not for Rippit tables — use describe_table for those.

How to use:
- Pick the import's `primary_keys` and `updated_at_column` from these columns. Snowflake rarely declares primary keys, so an empty `primary_keys` is normal: choose the column(s) that uniquely identify a row.
- `merge_keys` is the key the pipeline itself loads on, derived from the last 7 days of successful MERGE, DELETE and UPDATE statements in Snowflake's query history. It's the strongest evidence for `primary_keys`. If the import rejects it for duplicates, report that as an upstream data bug and show the user the stats; don't swap in other columns. It's empty when no load matched or the role can't read query history.
- `merge_updated_at` is the best `updated_at_column` when it comes from that same query history: the column in the pipeline's own incremental `> (SELECT MAX(col) ...)` filter. Without one, it's a guess: the only timestamp column named like updated, modified or loaded, or an ETL tool's sync column such as `_fivetran_synced` or `_airbyte_extracted_at`.
- Workspace admins only; anyone else gets a 403 on every Snowflake call, so don't retry.



## OpenAPI

````yaml /api-reference/tools-openapi.json post /v1/describe_snowflake_table
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/describe_snowflake_table:
    post:
      summary: describe_snowflake_table
      description: >-
        **Describe Snowflake table**


        Read the columns of a table in the customer's own Snowflake account,
        before importing it. Not for Rippit tables — use describe_table for
        those.


        How to use:

        - Pick the import's `primary_keys` and `updated_at_column` from these
        columns. Snowflake rarely declares primary keys, so an empty
        `primary_keys` is normal: choose the column(s) that uniquely identify a
        row.

        - `merge_keys` is the key the pipeline itself loads on, derived from the
        last 7 days of successful MERGE, DELETE and UPDATE statements in
        Snowflake's query history. It's the strongest evidence for
        `primary_keys`. If the import rejects it for duplicates, report that as
        an upstream data bug and show the user the stats; don't swap in other
        columns. It's empty when no load matched or the role can't read query
        history.

        - `merge_updated_at` is the best `updated_at_column` when it comes from
        that same query history: the column in the pipeline's own incremental `>
        (SELECT MAX(col) ...)` filter. Without one, it's a guess: the only
        timestamp column named like updated, modified or loaded, or an ETL
        tool's sync column such as `_fivetran_synced` or
        `_airbyte_extracted_at`.

        - Workspace admins only; anyone else gets a 403 on every Snowflake call,
        so don't retry.
      operationId: describe_snowflake_table
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                connection_id:
                  type: string
                  minLength: 1
                  description: Snowflake connection id from list_snowflake_connections.
                database:
                  type: string
                  minLength: 1
                  maxLength: 256
                  description: Snowflake database, exactly as Snowflake lists it.
                schema_name:
                  type: string
                  minLength: 1
                  maxLength: 256
                  description: Snowflake schema, exactly as Snowflake lists it.
                table:
                  type: string
                  minLength: 1
                  maxLength: 256
                  description: Snowflake table, exactly as Snowflake lists it.
              required:
                - connection_id
                - database
                - schema_name
                - table
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
components:
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

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