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.
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 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 tools
Open the agent's Tools tab and add the following custom tools.
1. core.agent_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_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_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_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_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_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_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 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 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 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 |
Troubleshooting
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 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"
Create an agent first and ensure your current role can access it.
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 workflow
This page covers Snowflake Intelligence. For Claude Code, use the Claude Code Plugin guide, which connects Claude Code directly to the Snowflake-managed MCP server through Snowflake OAuth.