Install Nimble’s Snowflake Native Apps — Search and Agents — connect your API key inside Snowflake, and call live web data from SQL.
Nimble ships two Native Apps on the Snowflake Marketplace. Both run inside your account, call live web data from any worksheet, pipeline, or Snowflake Intelligence agent, and read your Nimble API key from a Snowflake Secret you control. They share the same one-time account setup, so connect your key once and use whichever app you install.
Both apps install in one click from the Marketplace, ship a guided Streamlit setup screen, and keep your key inside your account — the app reads it from a Snowflake Secret at call time, and only authorized outbound calls reach Nimble.
Both apps read your key from a Snowflake Secret and reach Nimble through an External Access Integration. These are account-level objects shared by either app, so create them once. The per-app sections below just bind to them.
1
Store your key as a Secret
Run this in a worksheet, in any database and schema you own (outside the app). Paste your Nimble API key in place of the placeholder.
CREATE DATABASE IF NOT EXISTS nimble_integration;CREATE SCHEMA IF NOT EXISTS nimble_integration.tools;CREATE OR REPLACE SECRET nimble_integration.tools.nimble_api_key TYPE = GENERIC_STRING SECRET_STRING = 'YOUR_NIMBLE_API_KEY';
2
Authorize outbound access to Nimble
Create a network rule and an External Access Integration so an app can reach sdk.nimbleway.com.
CREATE OR REPLACE NETWORK RULE nimble_integration.tools.nimble_api_rule MODE = EGRESS TYPE = HOST_PORT VALUE_LIST = ('sdk.nimbleway.com');CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION nimble_api_access ALLOWED_NETWORK_RULES = (nimble_integration.tools.nimble_api_rule) ALLOWED_AUTHENTICATION_SECRETS = (nimble_integration.tools.nimble_api_key) ENABLED = TRUE;
The Nimble Search listing on the Snowflake Marketplace
1
Open the listing
In Snowsight, go to Data Products → Marketplace and search for Nimble Search, or open the listing directly.
2
Get the app
Click Get. Choose the database name the app installs into (the default is fine) and the role allowed to use it, then confirm. Snowflake installs the application into your account.
3
Open the setup app
From Data Products → Apps, open Nimble Search. The setup screen lists three steps: connect your API key, approve external access, and create the procedures.
The Secret and External Access Integration already exist from Set up account access. Bind both to the app, then create the procedures.
1
Bind both references in the setup app
In the Nimble Search setup app:
Click Bind API key secret and select nimble_integration.tools.nimble_api_key.
Click Approve external access and select nimble_api_access.
Each opens a Snowflake dialog that grants the app scoped access to that one object.
2
Create the procedures
Click Create / refresh procedures. This creates CORE.NIMBLE_SEARCH and CORE.NIMBLE_ANSWER with the references you just bound. When it returns ok, the app is ready.
Prefer SQL over the setup screen? See Set up with SQL below for the equivalent statements.
NIMBLE_SEARCH returns a VARIANT with results, request_id, and total_results. The arguments are the query, the maximum number of results, and the search depth ('lite' or 'deep').
CALL nimble_search.core.nimble_search('latest AI news', 5, 'lite');
CORE.NIMBLE_ANSWER(VARCHAR) returns a single STRING, so it registers cleanly as a Cortex Agent tool. In Snowsight, go to AI & ML → Agents → your agent → Tools → Add tool and point it at nimble_search.core.nimble_answer. The agent can then pull live web context into its answers.
The setup screen is the fastest path, but every step has a SQL equivalent. After setting up account access, bind the references and create the procedures directly.
Run Nimble Web Search Agents — site-specific extraction for Amazon, Google, Walmart, Maps, social platforms, and hundreds of community agents — directly from SQL. The app also exposes agent discovery in-warehouse, so you can find agents and inspect their inputs without leaving Snowflake.
In Snowsight, go to Data Products → Marketplace and search for Nimble Agents, or open the listing directly. Click Get.
2
Grant a warehouse
On the app’s page, grant it USAGE on a warehouse when prompted (or from the setup app). The app needs compute to run its setup screen and procedures.
3
Open the setup app
From Data Products → Apps, open Nimble Agents. The setup screen covers connecting your API key, approving external access, and creating the procedures.
Nimble’s agent catalog is large, so the app exposes discovery directly in SQL — no hunting through docs. Replace nimble_agents with the database name you chose at install if it differs.
-- Search the catalog (keyword, domain, or vertical)CALL nimble_agents.core.list_agents('amazon');-- Flatten the matches into rowsSELECT a.value:name::STRING AS agent, a.value:display_name::STRING AS title, a.value:vertical::STRING AS vertical, a.value:description::STRING AS descriptionFROM TABLE(RESULT_SCAN(LAST_QUERY_ID())), LATERAL FLATTEN(input => $1) a;-- Inspect one agent's inputs before calling itCALL nimble_agents.core.describe_agent('amazon_best_sellers');-- returns input_properties (name, type, required, examples) + output_schema
The setup app’s Explore agents section does the same visually, and links to the Nimble Agent Gallery.
NIMBLE_AGENT_RUN returns a VARIANT with status, task_id, url, and a data payload. There are two forms — short (agent, params) and full (with optional country, locale).
-- Short formCALL nimble_agents.core.nimble_agent_run( 'amazon_best_sellers', OBJECT_CONSTRUCT('category', 'appliances'));-- Full form, with localizationCALL nimble_agents.core.nimble_agent_run( 'google_search', OBJECT_CONSTRUCT('query', 'best espresso machine 2026'), 'us', 'en-US');-- Read the parsed payloadSELECT $1:status::STRING AS status, $1:data:parsing AS parsedFROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
agent is the identifier from list_agents (e.g. google_search, amazon_pdp). params is the agent-specific input object — use describe_agent to see exactly what each agent expects.
Every procedure returns a VARIANT. On failure — an unknown agent, a missing required parameter, or a transient upstream error — the procedure returns a structured error object instead of raising, so you can branch on it in SQL.
CALL nimble_agents.core.describe_agent('does_not_exist');SELECT $1:status::STRING AS status, -- 'error' when the call failed $1:error:code::STRING AS code, -- e.g. not_found, invalid_input $1:error:message::STRING AS messageFROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
list_agents, describe_agent, and nimble_agent_run register cleanly as Cortex Agent tools, so a Snowflake Intelligence chat can discover the right agent and run it without the user knowing agent names. Wire them in AI & ML → Agents, pointing each tool at the matching core procedure.