Snowflake connector
OAuth 2.0AnalyticsDatabasesConnect to Snowflake to manage and analyze your data warehouse workloads
Snowflake connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Snowflake credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
Register your Scalekit environment with the Snowflake connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. You’ll need to create an OAuth Security Integration in your Snowflake account.
-
Set up auth redirects
-
In Scalekit dashboard, go to AgentKit > Connections > Create Connection.
-
Find Snowflake from the list of providers and click Create. Copy the redirect URI. It looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.
-
Log into your Snowflake account (Snowsight) and run the following SQL to create an OAuth Security Integration, replacing
<redirect_uri>with the URI you copied:CREATE OR REPLACE SECURITY INTEGRATION scalekit_oauthTYPE = OAUTHOAUTH_CLIENT = CUSTOMOAUTH_CLIENT_TYPE = 'CONFIDENTIAL'OAUTH_REDIRECT_URI = '<redirect_uri>'ENABLED = TRUE;
-
-
Get client credentials
-
After creating the integration, run the following SQL to retrieve the client credentials:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('SCALEKIT_OAUTH'); -
This returns a JSON object containing:
- Client ID — value of
OAUTH_CLIENT_ID - Client Secret — value of
OAUTH_CLIENT_SECRET_2(orOAUTH_CLIENT_SECRET_1)
- Client ID — value of
-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.
-
Enter your credentials:
- Client ID (from the SQL output)
- Client Secret (from the SQL output)

-
Click Save.
-
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'snowflake'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Snowflake:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'snowflake_cancel_query',toolInput: { statement_handle: 'YOUR_STATEMENT_HANDLE' },})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "snowflake"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Snowflake:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"statement_handle":"YOUR_STATEMENT_HANDLE"},tool_name="snowflake_cancel_query",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Grants show — Run SHOW GRANTS in common modes (to role, to user, of role, on object)
- Warehouses show — Run SHOW WAREHOUSES
- Schemas show databases — Run SHOW DATABASES or SHOW SCHEMAS
- Keys show imported exported, show primary — Run SHOW IMPORTED KEYS or SHOW EXPORTED KEYS for a table
- Get referential constraints, table constraints, schemata — Query INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
- Query cancel — Cancel a running Snowflake SQL API statement by statement handle
Common workflows
Section titled “Common workflows”Don’t worry about your Snowflake account domain in the path. Scalekit automatically resolves {{domain}} from the connected account’s configuration. For example, a request with path="/api/v2/statements" will be sent to https://myorg-myaccount.snowflakecomputing.com/api/v2/statements automatically.
Proxy API call
const result = await actions.request({ connectionName: 'snowflake', identifier: 'user_123', path: '/api/v2/statements', method: 'POST',});console.log(result);result = actions.request( connection_name='snowflake', identifier='user_123', path="/api/v2/statements", method="POST")print(result)Execute a tool
const result = await actions.executeTool({ connector: 'snowflake', identifier: 'user_123', toolName: 'snowflake_cancel_query', toolInput: {},});console.log(result);result = actions.execute_tool( tool_input={}, tool_name='snowflake_cancel_query', connection_name='snowflake', identifier='user_123',)print(result)Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
snowflake_cancel_query#Cancel a running Snowflake SQL API statement by statement handle.2 params
Cancel a running Snowflake SQL API statement by statement handle.
statement_handlestringrequiredSnowflake statement handle to cancelrequest_idstringoptionalOptional request ID used when the statement was submittedsnowflake_execute_query#Execute one or more SQL statements against Snowflake using the SQL API. Requires a valid Snowflake OAuth2 connection. Use semicolons to submit multiple statements.12 params
Execute one or more SQL statements against Snowflake using the SQL API. Requires a valid Snowflake OAuth2 connection. Use semicolons to submit multiple statements.
statementstringrequiredSQL statement to execute. Use semicolons to send multiple statements in one request.asyncbooleanoptionalExecute statement asynchronously and return a statement handlebindingsobjectoptionalBind variables object for '?' placeholders in the SQL statementdatabasestringoptionalDatabase to use when executing the statementnullablebooleanoptionalWhen false, SQL NULL values are returned as the string "null"parametersobjectoptionalStatement-level Snowflake parameters as a JSON objectrequest_idstringoptionalUnique request identifier (UUID) used for idempotent retriesretrybooleanoptionalSet true when resubmitting a previously sent request with the same request_idrolestringoptionalRole to use when executing the statementschemastringoptionalSchema to use when executing the statementtimeoutintegeroptionalMaximum number of seconds to wait for statement executionwarehousestringoptionalWarehouse to use when executing the statementsnowflake_get_columns#Query INFORMATION_SCHEMA.COLUMNS for column metadata.7 params
Query INFORMATION_SCHEMA.COLUMNS for column metadata.
databasestringrequiredDatabase namecolumn_name_likestringoptionalOptional column name patternlimitintegeroptionalMaximum rowsrolestringoptionalOptional roleschemastringoptionalOptional schema filtertablestringoptionalOptional table filterwarehousestringoptionalOptional warehousesnowflake_get_query_partition#Get a specific result partition for a Snowflake SQL API statement.3 params
Get a specific result partition for a Snowflake SQL API statement.
partitionintegerrequiredPartition index to fetch (0-based)statement_handlestringrequiredSnowflake statement handle returned by Execute Queryrequest_idstringoptionalOptional request ID used when the statement was submittedsnowflake_get_query_status#Get Snowflake SQL API statement status and first partition result metadata by statement handle.2 params
Get Snowflake SQL API statement status and first partition result metadata by statement handle.
statement_handlestringrequiredSnowflake statement handle returned by Execute Queryrequest_idstringoptionalOptional request ID used when the statement was submittedsnowflake_get_referential_constraints#Query INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS.6 params
Query INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS.
databasestringrequiredDatabase namelimitintegeroptionalMaximum rowsrolestringoptionalOptional roleschemastringoptionalOptional schema filtertablestringoptionalOptional table filterwarehousestringoptionalOptional warehousesnowflake_get_schemata#Query INFORMATION_SCHEMA.SCHEMATA for schema metadata.5 params
Query INFORMATION_SCHEMA.SCHEMATA for schema metadata.
databasestringrequiredDatabase namelimitintegeroptionalMaximum rowsrolestringoptionalOptional roleschema_likestringoptionalOptional schema patternwarehousestringoptionalOptional warehousesnowflake_get_table_constraints#Query INFORMATION_SCHEMA.TABLE_CONSTRAINTS.7 params
Query INFORMATION_SCHEMA.TABLE_CONSTRAINTS.
databasestringrequiredDatabase nameconstraint_typestringoptionalOptional constraint type filterlimitintegeroptionalMaximum rowsrolestringoptionalOptional roleschemastringoptionalOptional schema filtertablestringoptionalOptional table filterwarehousestringoptionalOptional warehousesnowflake_get_tables#Query INFORMATION_SCHEMA.TABLES for table metadata in a Snowflake database.6 params
Query INFORMATION_SCHEMA.TABLES for table metadata in a Snowflake database.
databasestringrequiredDatabase namelimitintegeroptionalMaximum number of rowsrolestringoptionalOptional roleschemastringoptionalOptional schema filtertable_name_likestringoptionalOptional table name patternwarehousestringoptionalOptional warehousesnowflake_show_databases_schemas#Run SHOW DATABASES or SHOW SCHEMAS.5 params
Run SHOW DATABASES or SHOW SCHEMAS.
object_typestringrequiredObject type to showdatabase_namestringoptionalOptional database scope for SHOW SCHEMASlike_patternstringoptionalOptional LIKE patternrolestringoptionalOptional rolewarehousestringoptionalOptional warehousesnowflake_show_grants#Run SHOW GRANTS in common modes (to role, to user, of role, on object).7 params
Run SHOW GRANTS in common modes (to role, to user, of role, on object).
grant_viewstringrequiredSHOW GRANTS variantobject_namestringoptionalObject name for on_objectobject_typestringoptionalObject type for on_objectrolestringoptionalOptional execution rolerole_namestringoptionalRole name (for to_role/of_role)user_namestringoptionalUser name (for to_user)warehousestringoptionalOptional warehousesnowflake_show_imported_exported_keys#Run SHOW IMPORTED KEYS or SHOW EXPORTED KEYS for a table. For reliable execution in this environment, use fully-qualified scope (database_name + schema_name + table_name).6 params
Run SHOW IMPORTED KEYS or SHOW EXPORTED KEYS for a table. For reliable execution in this environment, use fully-qualified scope (database_name + schema_name + table_name).
key_directionstringrequiredWhich command to runtable_namestringrequiredTable name (use with schema_name and database_name for fully-qualified scope)database_namestringoptionalOptional database name (recommended with schema_name)rolestringoptionalOptional roleschema_namestringoptionalOptional schema name (recommended with database_name)warehousestringoptionalOptional warehousesnowflake_show_primary_keys#Run SHOW PRIMARY KEYS with optional scope. When using schema_name (or schema_name + table_name), database_name is required for fully-qualified scope.5 params
Run SHOW PRIMARY KEYS with optional scope. When using schema_name (or schema_name + table_name), database_name is required for fully-qualified scope.
database_namestringoptionalOptional database name for scope (required when schema_name is set)rolestringoptionalOptional roleschema_namestringoptionalOptional schema name for scopetable_namestringoptionalOptional table name for scopewarehousestringoptionalOptional warehousesnowflake_show_warehouses#Run SHOW WAREHOUSES.3 params
Run SHOW WAREHOUSES.
like_patternstringoptionalOptional LIKE patternrolestringoptionalOptional rolewarehousestringoptionalOptional warehouse