All integrations

Snowflake

SNOWFLAKE · DATA & ANALYTICS

Warehouses, databases, and queries under that user’s role.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

snowflake_cancel_statementWRITE

Cancel a statement that is still running. Snowflake rolls back a cancelled statement, so this is the way to stop a query that is burning warehouse credits. It cannot undo a statement that has already committed — a cancel that arrives too late reports success at the API level and changes nothing.

snowflake:operate
snowflake_clone_tableWRITE

Make a zero-copy clone of any table this connection can read, INTO the connection's table-creation schema. The copy is instant and costs no storage until one side changes. THE SOURCE MAY BE ANY TABLE; only the destination is confined. That is safe in a way CREATE TABLE AS SELECT is not: a Snowflake clone RETAINS the source's masking and row-access policies, so it cannot be used to produce an unmasked copy of protected data. Use it to get a throwaway copy of production to experiment on.

snowflake:ddl
snowflake_cortex_analystWRITE

Ask a question in plain language about a semantic view the customer authored, and get back the SQL that answers it. A semantic view is the customer's own definition of what may be asked and how their business terms map to columns, so this is a narrower and better-governed path to data than writing SQL by hand. By default it RETURNS the generated SQL without running it; pass execute=true to run it, in which case the generated statement is put through exactly the same read-only checks as snowflake_run_query before it reaches the warehouse — a model's output is not trusted here just because a model produced it.

snowflake:cortex
snowflake_cortex_searchWRITE

Search a Cortex Search service the customer built, and return the matching documents. This is how unstructured data in a Snowflake account is reached — text that no SELECT would find. Read-only: it queries an index and changes nothing. Its cost is Snowflake's per-query search billing, not a warehouse size you chose.

snowflake:cortex
snowflake_create_databaseWRITE

Create the scratch database this connection was pointed at. It can only create the database named in the connection's table-creation schema setting — it cannot create a second one, whatever the Snowflake role could reach. Created as TRANSIENT, which means no fail-safe storage and a lower bill; do not use it for anything that must survive.

snowflake:ddl
snowflake_create_schemaWRITE

Create a schema inside the connection's database. Confined to that one database — it cannot create a schema anywhere else. Note that new schemas are NOT automatically usable for table creation: tables may only be created in the single schema named on the connection.

snowflake:ddl
snowflake_describe_connectionREAD

Report what this connection actually is on the Snowflake side — account, user, active role, warehouse, default database and schema — and whether data changes and table creation are enabled on it. Ask this FIRST when a query fails with a permission or 'no active warehouse' error: it distinguishes a query problem from a connection that was set up with the wrong role.

snowflake:metadata
snowflake_describe_tableREAD

Describe one table or view: every column's name, type, nullability, default and comment. Read this before writing a query rather than guessing column names. Returns no row data and uses no warehouse compute.

snowflake:metadata
snowflake_drop_databaseWRITE

DESTRUCTIVE — drop the connection's scratch database and everything in it. Only the database named on the connection. YOU MUST PASS confirm SET TO THE DATABASE NAME: this is not a boolean, it is the name of the thing that will be lost, and the call is refused without it. snowflake_undrop_database restores it, but only inside Snowflake's Time Travel window — one day by default and capped at one day on Standard edition, a setting on the customer's database that Agentic Fabriq cannot read.

snowflake:ddl
snowflake_drop_dynamic_tableWRITE

DESTRUCTIVE — drop one dynamic table in the connection's table-creation schema, removing both its data and its refresh schedule. YOU MUST PASS confirm SET TO THE FULL NAME. Agentic Fabriq cannot CREATE a dynamic table — defining a pipeline that spends compute on a schedule is not something it will do — so there is no inverse here. To stop a pipeline without losing it, use snowflake_suspend_dynamic_table instead.

snowflake:ddl
snowflake_drop_schemaWRITE

DESTRUCTIVE — drop a schema inside the connection's database, and every table and view in it. YOU MUST PASS confirm SET TO DATABASE.SCHEMA. snowflake_undrop_schema restores it within the retention window.

snowflake:ddl
snowflake_drop_tableWRITE

DESTRUCTIVE — drop one table and all its rows, in the connection's table-creation schema only. YOU MUST PASS confirm SET TO THE FULL DATABASE.SCHEMA.TABLE NAME. snowflake_undrop_table restores it within the retention window, which is one day by default. Check what you are about to lose with snowflake_get_table first.

snowflake:ddl
snowflake_drop_viewWRITE

DESTRUCTIVE — drop one view in the connection's table-creation schema. YOU MUST PASS confirm SET TO THE FULL DATABASE.SCHEMA.VIEW NAME. A view holds no rows, so what is lost is the definition — but SNOWFLAKE HAS NO UNDROP VIEW, so unlike a table this cannot be restored at all. Read the definition with snowflake_get_view BEFORE dropping it, and you can re-create it with snowflake_execute_ddl.

snowflake:ddl
snowflake_execute_ddlWRITE

DESTRUCTIVE — create ONE table, inside the single schema named on this connection. CREATE TABLE with an explicit column list and nothing else: CREATE OR REPLACE, CREATE TABLE AS SELECT, CLONE, external and iceberg and dynamic tables, views, stages, functions, tasks, databases, schemas, DROP and ALTER are all refused, and no setting enables them. CREATE TABLE AS SELECT is refused specifically because it would write an UNMASKED copy of masked data into a new table — Snowflake attaches masking policies to columns, not to values. Every name in the statement must be fully qualified inside the connection's target schema. THERE IS NO UNDO through Agentic Fabriq beyond snowflake_undrop_table, and Snowflake's recovery window is a customer setting Agentic Fabriq cannot read. This tool does nothing unless a target schema is set on the connection itself.

snowflake:ddl
snowflake_execute_taskWRITE

DESTRUCTIVE — run one task the customer already defined, now, outside its schedule. The task's body is the customer's, not yours: this triggers work that was going to run anyway, it does not execute anything you supply. It still spends warehouse compute and still writes data through logic Agentic Fabriq never parsed, and there is no un-run. Check snowflake_get_task_complete_graphs afterwards to see what it did.

snowflake:pipelines
snowflake_execute_writeWRITE

DESTRUCTIVE — run ONE data-changing SQL statement against the warehouse. INSERT, UPDATE, DELETE and MERGE only; schema changes (DROP, TRUNCATE, ALTER, COMMENT), privilege changes (GRANT, REVOKE), file and stage operations (COPY, PUT, GET, REMOVE), INSERT OVERWRITE, CALL, EXECUTE IMMEDIATE, SYSTEM$ functions and unparseable statements are refused, and no setting enables them. MERGE is permitted because the alternative — a DELETE call followed by an INSERT call — cannot be made atomic here and is strictly more dangerous. THERE IS NO UNDO: a statement that commits cannot be rolled back through this tool, and Snowflake's own Time Travel is the customer's recovery path, not Agentic Fabriq's. This tool additionally requires data changes to be enabled on the connection itself; if they are not, it refuses and says so.

snowflake:write
snowflake_explain_queryWRITE

Show how Snowflake WOULD run a read-only statement, without running it. Returns the query plan — which tables are scanned, in what order, with what estimated row counts — and reads no rows from the table. USE THIS BEFORE AN EXPENSIVE QUERY: it is the only way to find out what a statement will cost before paying for it, and a plan showing a full scan of a large table is a good reason not to run the query at all. The statement goes through exactly the same read-only checks as snowflake_run_query, so this cannot be used to plan a data change. Uses no warehouse compute.

snowflake:query
snowflake_get_databaseREAD

Fetch one database's full properties as structured data — owner, comment, retention window, whether it came from a share, and its creation and drop times. More detail than snowflake_list_databases gives, for one named database. Uses no warehouse compute.

snowflake:metadata
snowflake_get_dynamic_tableREAD

Fetch one dynamic table's definition, target lag, refresh mode and columns. Read the lag before trusting its contents to be current. Uses no warehouse compute.

snowflake:metadata
snowflake_get_role_grantsREAD

List the privileges a named role holds — which objects it can read, write or own. The account-wide companion to snowflake_show_grants, which answers the same question about this connection's own role only. Use it to work out whether a connection's role is genuinely least-privilege, and what a narrower one would look like. Read-only.

snowflake:identity
snowflake_get_schemaREAD

Fetch one schema's full properties — owner, comment, retention window, whether it is managed-access or transient. Uses no warehouse compute.

snowflake:metadata
snowflake_get_statement_statusREAD

Check a statement Agentic Fabriq started earlier and report its status, returning its rows if it has finished. ALSO READS FURTHER PAGES: a large result is split into partitions, and partition_count in any result says how many there are — pass partition=1, 2, … to read past the first. Use this only with a statement_handle a previous Snowflake tool call returned; handles are not guessable and this tool cannot reach a statement started by anything else.

snowflake:operate
snowflake_get_tableREAD

Fetch one table's full definition as structured data — every column with its type, nullability, default, collation and comment, plus the table's clustering key, row count and bytes. Richer and easier to parse than snowflake_describe_table, which returns Snowflake's DESCRIBE row shape. Returns no row data and uses no warehouse compute.

snowflake:metadata
snowflake_get_taskREAD

Fetch one task's definition, schedule, warehouse, predecessors and current state. Uses no warehouse compute.

snowflake:metadata
snowflake_get_task_complete_graphsREAD

List the runs of this task's graph that have finished, with each run's state, start and end time and error message. THIS IS THE DIAGNOSTIC READ: when a downstream table is stale, this says whether the pipeline that fills it succeeded, failed or was skipped, and why. Uses no warehouse compute.

snowflake:metadata
snowflake_get_task_current_graphsREAD

List the runs of this task's graph that are executing or scheduled right now. Use this to tell 'it is still running' from 'it never started'. Uses no warehouse compute.

snowflake:metadata
snowflake_get_userREAD

Fetch one Snowflake user's properties. Never returns credential material: Snowflake reports whether a password or key is set, not the value. Read-only.

snowflake:identity
snowflake_get_viewREAD

Fetch one view, including the SQL it is defined by and its columns. Reading a view's definition is how to learn the shape of governed data without querying it — a view is often the customer's own curated slice of a table an agent should not read directly. Uses no warehouse compute.

snowflake:metadata
snowflake_get_warehouseREAD

Fetch one warehouse's size, state, cluster counts, auto-suspend and auto-resume settings. Ask this before running an expensive query: the size is the multiplier on what that query costs. Uses no warehouse compute and does not start the warehouse.

snowflake:metadata
snowflake_list_cortex_search_servicesREAD

List the Cortex Search services in one schema, with the columns each one indexes. A search service name is not guessable, so run this before snowflake_cortex_search. Uses no warehouse compute.

snowflake:cortex
snowflake_list_databasesREAD

List the databases this Snowflake connection's role can see, each with its name, owner, comment and creation time. START HERE: every other Snowflake tool identifies objects by NAME, and Snowflake names are case-sensitive as returned here — pass them back exactly as given. Uses no warehouse compute.

snowflake:metadata
snowflake_list_databases_detailedREAD

List databases as structured data, with owner, comment, retention window and origin. Richer than snowflake_list_databases, which returns Snowflake's SHOW row shape, and it can be filtered and paged. Uses no warehouse compute.

snowflake:metadata
snowflake_list_dynamic_tablesREAD

List the dynamic tables in one schema, with each one's target lag, refresh mode, warehouse and scheduling state. A dynamic table is a query Snowflake keeps materialised; its lag is how stale its data may be. Uses no warehouse compute.

snowflake:metadata
snowflake_list_functionsREAD

List the user-defined functions in one schema, with each one's arguments and return type. Discovery only — calling a schema-qualified function from snowflake_run_query is refused, because a user-defined function runs with its owner's privileges and may reach the network from inside the warehouse. Uses no warehouse compute.

snowflake:metadata
snowflake_list_pipesREAD

List the pipes in one schema, with each pipe's target table and notification channel. A pipe is the customer's continuous ingestion definition. Uses no warehouse compute.

snowflake:metadata
snowflake_list_proceduresREAD

List the stored procedures in one schema. Discovery only: CALL is refused on a Snowflake connection in every mode, because a procedure executes SQL Agentic Fabriq never parsed under a role Agentic Fabriq did not choose. Uses no warehouse compute.

snowflake:metadata
snowflake_list_role_granteesREAD

List who holds a named role — which users and which other roles. The other direction from snowflake_get_role_grants, and the one that answers 'if this role is over-privileged, who is affected'. Read-only.

snowflake:identity
snowflake_list_rolesREAD

List the Snowflake account's roles. Read-only: Agentic Fabriq cannot create a role, and cannot change any privilege in any mode — privilege changes are refused on a Snowflake connection whatever an agent has been granted.

snowflake:identity
snowflake_list_schemasREAD

List the schemas in one database. Pass the database name exactly as snowflake_list_databases returned it. Uses no warehouse compute.

snowflake:metadata
snowflake_list_schemas_detailedREAD

List one database's schemas as structured data, with owner, retention window and whether each is managed-access or transient. Uses no warehouse compute.

snowflake:metadata
snowflake_list_streamsREAD

List the streams in one schema, with each stream's source object, type and whether it is stale. A stream is a change feed over a table; a stale one means a pipeline has stopped consuming it. Uses no warehouse compute.

snowflake:metadata
snowflake_list_tablesREAD

List the tables and views in one schema, with each object's row count and size in bytes where Snowflake reports them. Uses no warehouse compute.

snowflake:metadata
snowflake_list_tables_detailedREAD

List one schema's tables as structured data, with row counts, bytes, clustering keys and comments, filterable and pageable. Returns no row data and uses no warehouse compute.

snowflake:metadata
snowflake_list_tasksREAD

List the tasks in one schema, with each task's schedule, state and warehouse. Tasks are the customer's scheduled data pipelines; this is where 'did last night's load run' starts. Uses no warehouse compute.

snowflake:metadata
snowflake_list_usersREAD

List the Snowflake account's users, with each one's login name, display name, default role and last login. READ-ONLY: Agentic Fabriq cannot create, alter or disable a user in any mode, because an operation that registers a key or sets a password creates a second way into the account that Agentic Fabriq could not audit or revoke. This is account directory data — treat it as personal information.

snowflake:identity
snowflake_list_viewsREAD

List the views in one schema, with each view's owner, comment and whether it is secure or materialised. Uses no warehouse compute.

snowflake:metadata
snowflake_list_warehousesREAD

List the virtual warehouses this connection's role can see, with each warehouse's size, state and auto-suspend setting. Useful for understanding what a query will cost to run and whether the warehouse is currently suspended.

snowflake:metadata
snowflake_list_warehouses_detailedREAD

List warehouses as structured data, with size, state, cluster counts and auto-suspend settings. Read this before an expensive query: the size is the multiplier on what it costs. Uses no warehouse compute and starts nothing.

snowflake:metadata
snowflake_query_historyREAD

List recent queries run by the Snowflake user this connection authenticates as, with each query's text, status, duration and the number of rows it produced. Scoped to that one user — it cannot see another user's queries. Query text may contain the values those queries filtered on.

snowflake:history
snowflake_refresh_dynamic_tableWRITE

DESTRUCTIVE — refresh one dynamic table now instead of waiting for its target lag. Spends warehouse compute and rewrites the table's contents from its definition, which is the customer's. There is no un-refresh; the previous contents are gone.

snowflake:pipelines
snowflake_refresh_pipeWRITE

DESTRUCTIVE — ask one pipe to re-scan its stage for files it has not loaded yet. The pipe's definition and its stage are the customer's and are not arguments here, so this cannot be pointed at a location you choose. It loads data into the pipe's target table and there is no un-load.

snowflake:pipelines
snowflake_rename_tableWRITE

Rename a table inside the connection's table-creation schema. Reversible by renaming back, so it is not marked destructive — but it BREAKS every view, task and saved query that referred to the old name, and Snowflake will not warn you.

snowflake:ddl
snowflake_resume_dynamic_tableWRITE

Resume a suspended dynamic table's refresh schedule. The inverse of snowflake_suspend_dynamic_table. IT RESTARTS SCHEDULED COMPUTE, so it begins spending again from the next refresh.

snowflake:pipelines
snowflake_resume_warehouseWRITE

Resume the warehouse this connection uses, so queries can run again. The inverse of snowflake_suspend_warehouse. IT STARTS SPENDING: from the moment it resumes, the warehouse bills for the time it is running, at its configured size. Takes no warehouse name — it operates on the one bound to this connection.

snowflake:operate_warehouse
snowflake_run_queryREAD

Run ONE read-only SQL statement against the warehouse. THIS TOOL IS READ-ONLY AND HAS NO SETTING THAT CHANGES THAT: only SELECT, UNION, INTERSECT and EXCEPT are permitted, and INSERT, UPDATE, DELETE, MERGE, CREATE, DROP, ALTER, TRUNCATE, REVOKE, COPY, PUT, GET, CALL, EXECUTE IMMEDIATE, USE, SYSTEM$ functions, schema-qualified user-defined function calls, the account-wide usage views and anything that cannot be parsed are refused before the request leaves Agentic Fabriq. Data changes are a different tool, snowflake_execute_write, which must be granted separately. Results are capped at max_rows and the response says when more existed.

snowflake:query
snowflake_show_grantsREAD

List the privileges Snowflake has given this connection's active role — which objects it can read, which it can write, and whether it holds anything account-wide. USE THIS TO FIND OUT WHAT THIS CONNECTION CAN ACTUALLY DO: Agentic Fabriq's permissions narrow what an agent may reach through Agentic Fabriq, but the Snowflake role decides what is reachable at all, and Agentic Fabriq cannot narrow it per call. Reports the role Snowflake is actually using, not the one stored in settings. Read-only, no warehouse compute.

snowflake:metadata
snowflake_suspend_dynamic_tableWRITE

Pause a dynamic table's refresh schedule, stopping the compute it spends. The definition is untouched and the current data stays readable — it just stops getting fresher. Reversible with snowflake_resume_dynamic_table. Use this rather than dropping a pipeline that is costing too much.

snowflake:pipelines
snowflake_suspend_warehouseWRITE

Suspend the warehouse this connection uses, stopping its credit burn immediately. This is the only cost-REDUCING action in the Snowflake integration. It takes no warehouse name — it operates on the one bound to this connection and cannot reach any other. AFFECTS OTHER PEOPLE: if this warehouse is shared, their running queries are interrupted and their next query waits for it to start again. Reversible with snowflake_resume_warehouse, and Snowflake resumes it automatically on the next query unless auto-resume has been turned off.

snowflake:operate_warehouse
snowflake_swap_tablesWRITE

Atomically swap two tables in the connection's table-creation schema — each takes the other's name in a single operation with no window where either is missing. THIS IS THE SAFE WAY TO PUBLISH A REBUILT TABLE: build the new one alongside, then swap. It is its own inverse, so swapping the same pair again puts everything back, which is why it needs no confirmation.

snowflake:ddl
snowflake_undrop_databaseWRITE

Restore a dropped database. The inverse of snowflake_drop_database. Fails if the Time Travel retention window has passed, or if a live database already holds the name.

snowflake:ddl
snowflake_undrop_schemaWRITE

Restore a dropped schema. The inverse of snowflake_drop_schema.

snowflake:ddl
snowflake_undrop_tableWRITE

Restore a table that was dropped, from Snowflake's Time Travel history. This is the recovery path for a table lost inside this connection's target schema. It cannot overwrite anything — Snowflake refuses it if a live table already holds the name — and it only reaches the one schema named on the connection. It fails if the table was dropped longer ago than the database's retention window, which is a customer setting Agentic Fabriq cannot read and which is one day by default. This tool does nothing unless a target schema is set on the connection itself.

snowflake:ddl

Often connected alongside

Put Snowflake behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.