| Requirement | Details |
|---|---|
| Snowflake account | Any commercial Snowflake account. An Enterprise edition is not required for the connection itself. |
| Administrator access | Someone who can use the ACCOUNTADMIN role, or a role with privileges to create roles, MCP servers and security integrations. |
| A warehouse | An existing warehouse to run queries. We suggest a small, dedicated one so you can track and cap cost. |
| Network access | If your account uses a network policy, your users' networks must be allowed to sign in. |
| Optional: Cortex features | If you want Cortex Analyst or Cortex Search tools, your account must have those features available in its region. |
https://<EJENTO_AUTH_DOMAIN>/api/v2/mcp-sso/snowflake/callbackImportant: You can't use ACCOUNTADMIN,SECURITYADMINorORGADMIN. Snowflake blocks these admin roles for OAuth sign-ins.
<PLACEHOLDER> with your own values, then run:To add Cortex Analyst (semantic views) or Cortex Search tools, contact us and we'll help with the specification.
<REDIRECT_URI> with the exact URI Ejento sent you.{"OAUTH_CLIENT_SECRET_2":"...","OAUTH_CLIENT_SECRET":"...","OAUTH_CLIENT_ID":"..."}OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET. OAUTH_CLIENT_SECRET_2 is a backup Snowflake keeps for rotation, so you don't need to send it.Check the integration name. If your account has other OAuth integrations, make sure you ran this for the one you just created. A client ID from a different integration causes a "redirect URI mismatch" error.
<ORG_NAME>-<ACCOUNT_NAME>.If your account name contains underscores, tell us. The MCP server hostname needs hyphens in place of underscores.
| Value | Where it comes from |
|---|---|
| Account identifier | Step 6 |
| OAuth client ID | Step 5 (OAUTH_CLIENT_ID) |
| OAuth client secret | Step 5 (OAUTH_CLIENT_SECRET) |
| Role name | Step 2 (<MCP_ROLE>) |
| MCP server name | Step 3 (<MCP_DATABASE>.<MCP_SCHEMA>.<MCP_SERVER_NAME>) |
| To... | Run |
|---|---|
| Let another user connect | GRANT ROLE <MCP_ROLE> TO USER <USERNAME>; |
| Remove one user's access | REVOKE ROLE <MCP_ROLE> FROM USER <USERNAME>; |
| Share more data with Ejento | GRANT SELECT ON ... TO ROLE <MCP_ROLE>; |
| Temporarily disable Ejento for everyone | ALTER SECURITY INTEGRATION <INTEGRATION_NAME> SET ENABLED = FALSE; |
| Rotate the client secret | ALTER SECURITY INTEGRATION <INTEGRATION_NAME> REFRESH OAUTH_CLIENT_SECRET;, then send us the new secret |
| Error | Cause | Fix |
|---|---|---|
| Redirect URI mismatch | The redirect URI isn't exactly the one Ejento sent, or the client ID belongs to a different integration. | Run DESC SECURITY INTEGRATION <INTEGRATION_NAME>; and check OAUTH_REDIRECT_URI and OAUTH_CLIENT_ID. |
| Role ... has been explicitly blocked | An admin role is in use, or secondary roles are enabled. | Use the dedicated role (Step 2) and keep OAUTH_USE_SECONDARY_ROLES = NONE. |
| User is not granted role | The person signing in doesn't have <MCP_ROLE>. | GRANT ROLE <MCP_ROLE> TO USER <USERNAME>; |
| Insufficient privileges when a query runs | The role can't read the table or use the warehouse. | Grant the missing USAGE/SELECT privileges to <MCP_ROLE>. |
| Connection or hostname errors | The account hostname contains underscores. | Use the hyphenated form of the account identifier. |
| Sign-in blocked by network policy | Your account restricts sign-in by IP address. | Make sure your users' networks are allowed. Contact us if you need Ejento's outbound IP addresses. |