How Mindset AI connects
Mindset AI connects to your MCP server using a Programmatic Access Token (PAT) passed as a Bearer token in theAuthorization header. No OAuth configuration is needed on the Mindset AI side. You manage the Snowflake setup entirely; we just need the endpoint URL and the PAT.
Key setup considerations
The following are the most important things to get right during setup. Each one has clear diagnostic steps if something doesn’t look right.Tool type naming
When defining stored procedure or UDF tools in your MCP server specification, the tool type must beGENERIC. Some Snowflake documentation references CUSTOM as the type name, but the runtime does not accept it. Use GENERIC for all stored procedure and UDF tools.
input_schema is required for all tools
Every tool in the MCP server specification must include an input_schema in its config block, even if the procedure or function takes no parameters. Without it, the tool will not appear when clients call tools/list.
For zero-parameter tools, an empty schema is sufficient:
Permissions are multi-layered
The role associated with the PAT needs access at three independent layers:- MCP server access — the role must have
USAGEon the MCP server object itself - Tool object access — the role must have
USAGEon each tool’s backing procedure or function - Data access — if a procedure uses
EXECUTE AS CALLER, the role also needsSELECTon the underlying tables
tools/list or fail at invocation. The Troubleshooting reference below covers how to identify which layer to check.
Re-apply grants after replacing the MCP server
RunningCREATE OR REPLACE MCP SERVER creates a new object, which means all previously granted permissions on the old object are lost. After every replace, re-apply the USAGE grant on the MCP server. Without it, connecting clients will receive a does not exist or not authorized error.
SERVICE users require a network policy for PAT generation
Snowflake requires a network policy to be assigned to a SERVICE-type user before a PAT can be generated. For initial testing, an open network policy works; for production, restrict to the IP ranges relevant to the connecting service.Use hyphens instead of underscores in account hostnames
If your Snowflake account name contains underscores (e.g.,myorg-my_account), replace them with hyphens in the hostname portion of the MCP endpoint URL. Most SSL libraries require this because underscores are not valid hostname characters under RFC 952, and the SSL certificate will only match the hyphenated form.
For example:
PAT lifecycle and rotation
PATs have a maximum lifetime of 365 days and cannot be refreshed. Plan for rotation ahead of expiry and make sure the team responsible for the Snowflake account knows when the token was created.Validate before connecting to Mindset AI
We recommend verifying your MCP server works end to end before sharing connection details with the Mindset AI team. Validating upfront means that if anything needs adjusting, it’s straightforward to identify — once the connection goes through the Mindset AI agent pipeline, MCP is one of several layers, so it’s much easier to resolve issues before that point. A couple of curl calls take under a minute.Step 1: Verify tool discovery
tools array is empty, check for a missing input_schema in the tool spec or a missing permission on the tool’s backing object.
Step 2: Verify each tool is callable
For each tool returned bytools/list, invoke it and confirm it returns the expected data:
"isError": false and the expected result. If the tool takes parameters, include them in the arguments object.
Both steps should pass before sharing connection details with Mindset AI.
What Mindset AI needs from you
Once both validation steps pass, provide the Mindset AI team with:- MCP endpoint URL —
https://<account>.snowflakecomputing.com/api/v2/databases/<DB>/schemas/<SCHEMA>/mcp-servers/<SERVER_NAME> - PAT value — the token string
Troubleshooting reference
| Symptom | Likely cause |
|---|---|
tools/list returns an empty array | Missing input_schema in the tool config, or the connecting role lacks USAGE on the tool’s backing procedure/function |
does not exist or not authorized | The MCP server was replaced and the USAGE grant was not re-applied |
Unknown tool type: CUSTOM | Use GENERIC instead of CUSTOM for stored procedure and UDF tools |
Network Policy is required | SERVICE-type users need a network policy assigned before a PAT can be created |
| Tool listed but invocation fails | The connecting role may lack SELECT on tables queried by the procedure (relevant for EXECUTE AS CALLER procedures) |
SSL CERTIFICATE_VERIFY_FAILED / hostname mismatch | Account name contains underscores in the hostname — replace underscores with hyphens in the URL (see Key setup considerations) |
Who can see what: access scoping
Snowflake native MCP servers are an excellent fit for exposing data that should be available to all users interacting with a particular agent — product catalogs, company reference data, reporting dashboards, knowledge bases. These are strong fits because the data is the same regardless of who is asking. Snowflake native MCP servers authenticate using a single PAT tied to a single Snowflake role. That role determines what data the tools can access. On the Mindset AI side, you control which agents (and therefore which users) can reach the MCP server through entitlement configuration. Within the MCP server itself, all requests use the same role and data access. Mindset AI sends user identity headers (x-user-id, x-session-tags) on every request. With custom-built MCP servers these headers enable per-user data filtering. Snowflake’s managed MCP server does not currently pass these headers through to stored procedures, so tools cannot tailor their responses based on which end user is asking. This is expected to be addressed in a future Snowflake release — the MCP protocol already defines a mechanism for passing client metadata to tools (the _meta field), and Snowflake is anticipated to adopt it, at which point per-user scoping within Snowflake native MCP servers will be possible without any custom code.