Snowflake Intelligence
Snowflake Intelligence is the supported Snowflake-native agent integration path for Metatate.
Metatate keeps its canonical governance tools and MCP server intact:
core.metatate_mcpcore.discover_context(input VARIANT)and peers
But Snowflake Intelligence custom tools bind named scalar parameters, not a single VARIANT request object. To bridge that mismatch, Metatate provides an adapter layer of Snowflake Intelligence-friendly wrappers:
core.agent_discover_contextcore.agent_get_decision_contextcore.agent_inspect_data_meaningcore.agent_inspect_governance_rulescore.agent_authorize_usecore.agent_validate_query_contextcore.agent_explain_why
These wrappers forward into the canonical Metatate tools and return the same JSON payloads.
For authorization flows, core.agent_authorize_use returns the same matched_instructions payload as core.authorize_use, and core.agent_explain_why returns that same instruction payload plus the stored trace and snapshot metadata.
PrerequisitesDirect link to Prerequisites
- Metatate installed and running in your account
- At least one policy deployed so governance tables contain data
- Snowflake Intelligence enabled for your account and role
- An Intelligence agent created in a schema where your role can manage agents
Step 1: Create a Snowflake Intelligence agentDirect link to Step 1: Create a Snowflake Intelligence agent
- Open AI & ML -> Agents in Snowsight
- Click Create agent
- Choose a writable database and schema
- Create an agent such as:
- object name:
METATATE_TEST_AGENT - display name:
Metatate Test Agent
- object name:
Step 2: Add the Metatate custom toolsDirect link to Step 2: Add the Metatate custom tools
Open the agent's Tools tab and add the following custom tools.
1. core.agent_discover_contextDirect link to 1-coreagent_discover_context
- Resource type:
function - Object:
core.agent_discover_context - Parameters:
database_name-- stringschema_name-- stringmin_sensitivity-- stringcompliance_framework-- stringhas_pii-- booleandomain-- string
Use this for questions like:
Which governed tables contain PII in
<database>?
2. core.agent_get_decision_contextDirect link to 2-coreagent_get_decision_context
- Resource type:
function - Object:
core.agent_get_decision_context - Parameters:
table_name-- string, required
Use this for questions like:
What decision context applies to
<fully-qualified-governed-table>?
3. core.agent_inspect_data_meaningDirect link to 3-coreagent_inspect_data_meaning
- Resource type:
function - Object:
core.agent_inspect_data_meaning - Parameters:
table_name-- string, requiredcolumn_name-- string
Use this for questions like:
What does
<column_name>mean from a governance perspective for<fully-qualified-governed-table>?
4. core.agent_inspect_governance_rulesDirect link to 4-coreagent_inspect_governance_rules
- Resource type:
function - Object:
core.agent_inspect_governance_rules - Parameters:
table_name-- string, requiredcolumn_name-- string
Use this for questions like:
Which usage, validation, and transfer rules apply to
<column_name>in<fully-qualified-governed-table>?
5. core.agent_authorize_useDirect link to 5-coreagent_authorize_use
- Resource type:
procedure - Object:
core.agent_authorize_use - Parameters:
table_name-- string, requiredoperation-- string, requiredintended_use-- string, requiredactor_role-- stringcolumns_csv-- stringdestination_system-- stringdestination_jurisdiction-- stringconsumer_jurisdiction-- stringcontext_json-- string JSON object
Use this for questions like:
Can
<role>export<fully-qualified-governed-table>to<destination>for<intended-use>?
Use this wrapper for the full authorization contract, including column-scoped requests and audit metadata.
6. core.agent_validate_query_contextDirect link to 6-coreagent_validate_query_context
- Resource type:
procedure - Object:
core.agent_validate_query_context - Parameters:
sql_text-- string, requiredoperation-- stringintended_use-- stringactor_role-- stringdestination_system-- stringdestination_jurisdiction-- stringconsumer_jurisdiction-- string
Use this for questions like:
Validate this query for
<intended-use>: SELECT<columns>FROM<fully-qualified-governed-table>
7. core.agent_explain_whyDirect link to 7-coreagent_explain_why
- Resource type:
procedure - Object:
core.agent_explain_why - Parameters:
decision_id-- string, required
Use this for questions like:
Why was decision
<decision_id>denied?
Step 3: Save the agentDirect link to Step 3: Save the agent
Save the agent after adding or editing the custom tools. Snowflake Intelligence chat threads do not reliably pick up unsaved tool changes.
Step 4: Test the first workflowDirect link to Step 4: Test the first workflow
Start a new thread with the agent and ask:
What decision context applies to
<fully-qualified-governed-table>?
Expected behavior:
- the agent calls
core.agent_get_decision_context - Metatate returns the standard decision-context JSON payload
- the agent summarizes policy, sensitivity, instructions, compliance, and risk metadata
Practical prompt examplesDirect link to Practical prompt examples
| Intent | Prompt | Expected wrapper |
|---|---|---|
| Discovery | Which governed tables contain PII in <database>? | core.agent_discover_context |
| Decision context | What decision context applies to <fully-qualified-governed-table>? | core.agent_get_decision_context |
| Meaning inspection | Show me the governance meaning of <column_name> in <fully-qualified-governed-table>. | core.agent_inspect_data_meaning |
| Rule inspection | Which usage, validation, and transfer rules apply to <column_name> in <fully-qualified-governed-table>? | core.agent_inspect_governance_rules |
| Authorization | Can <role> export <fully-qualified-governed-table> to <destination> for <intended-use>? | core.agent_authorize_use |
| Query validation | Validate this query for <intended-use>: SELECT <columns> FROM <fully-qualified-governed-table> | core.agent_validate_query_context |
| Decision explanation | Why was decision <decision_id> denied? | core.agent_explain_why |
TroubleshootingDirect link to Troubleshooting
The agent says it hit a SQL compilation errorDirect link to The agent says it hit a SQL compilation error
Most likely cause: you wired a canonical core.*(input VARIANT) tool directly into the agent instead of the corresponding core.agent_* wrapper.
The agent ignores a newly added toolDirect link to The agent ignores a newly added tool
Save the agent, then start a new thread. Unsaved changes and old threads may not use the latest tool configuration.
Snowflake Intelligence says "No agents available"Direct link to Snowflake Intelligence says "No agents available"
Create an agent first and ensure your current role can access it.
The wrapper works in SQL but not in the agentDirect link to The wrapper works in SQL but not in the agent
Double-check:
- resource type matches the wrapper object type (
functionvsprocedure) - parameter names match exactly
- required parameters are present
Related external workflowDirect link to Related external workflow
This page covers Snowflake Intelligence. For runnable notebooks and AcmeCloud fixtures that exercise the same decision layer, use the Examples guide.
For Claude Code, use the Claude Code Plugin guide, which connects Claude Code directly to the Snowflake-managed MCP server through Snowflake OAuth.