DataPilot MCP Server
Leverages OpenAI's GPT models to transform natural language into SQL queries, provide analysis of query results, suggest query optimizations, explain queries in plain English, and generate insights about table data.
Enables querying and managing Snowflake databases through natural language, providing tools for executing SQL, listing databases/schemas/tables, retrieving table samples, managing warehouses, and generating AI-powered insights from Snowflake data.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DataPilot MCP Servershow me the top 10 customers by total sales last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DataPilot MCP Server
Navigate your data with AI guidance. A comprehensive Model Context Protocol (MCP) server for interacting with Snowflake using natural language and AI. Built with FastMCP 2.0 and OpenAI integration.
Features
ποΈ Core Database Operations
execute_sql - Execute SQL queries with results
list_databases - List all accessible databases
list_schemas - List schemas in a database
list_tables - List tables in a database/schema
describe_table - Get detailed table column information
get_table_sample - Retrieve sample data from tables
π Warehouse Management
list_warehouses - List all available warehouses
get_warehouse_status - Get current warehouse, database, and schema status
π€ AI-Powered Features
natural_language_to_sql - Convert natural language questions to SQL queries
analyze_query_results - AI-powered analysis of query results
suggest_query_optimizations - Get optimization suggestions for SQL queries
explain_query - Plain English explanations of SQL queries
generate_table_insights - AI-generated insights about table data
π Resources (Data Access)
snowflake://databases- Access database listsnowflake://schemas/{database}- Access schema listsnowflake://tables/{database}/{schema}- Access table listsnowflake://table/{database}/{schema}/{table}- Access table details
π Prompts (Templates)
sql_analysis_prompt - Templates for SQL analysis
data_exploration_prompt - Templates for data exploration
sql_optimization_prompt - Templates for query optimization
Related MCP server: Snowflake MCP Service
Installation
Clone and setup the project:
git clone <repository-url> cd datapilot python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtConfigure environment variables:
cp env.template .env # Edit .env with your credentials
Configuration
Environment Variables
Create a .env file with the following configuration:
# Required: Snowflake Connection
# Account examples:
# - ACCOUNT-LOCATOR.snowflakecomputing.com (recommended)
# - ACCOUNT-LOCATOR.region.cloud
# - organization-account_name
SNOWFLAKE_ACCOUNT=ACCOUNT-LOCATOR.snowflakecomputing.com
SNOWFLAKE_USER=your_username
SNOWFLAKE_PASSWORD=your_password
# Optional: Default Snowflake Context
SNOWFLAKE_WAREHOUSE=your_warehouse_name
SNOWFLAKE_DATABASE=your_database_name
SNOWFLAKE_SCHEMA=your_schema_name
SNOWFLAKE_ROLE=your_role_name
# Required: OpenAI API
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-4 # Optional, defaults to gpt-4Snowflake Account Setup
Get your Snowflake account identifier - Multiple formats supported:
Recommended:
ACCOUNT-LOCATOR.snowflakecomputing.com(e.g.,SCGEENJ-UR66679.snowflakecomputing.com)Regional:
ACCOUNT-LOCATOR.region.cloud(e.g.,xy12345.us-east-1.aws)Legacy:
organization-account_name
Ensure your user has appropriate permissions:
USAGEon warehouses, databases, and schemasSELECTon tables for queryingSHOWprivileges for listing objects
Usage
Running the Server
Method 1: Direct execution
python -m src.mainMethod 2: Using FastMCP CLI
fastmcp run src/main.pyMethod 3: Development mode with auto-reload
fastmcp dev src/main.pyConnecting to MCP Clients
Claude Desktop
Add to your Claude Desktop configuration:
{
"mcpServers": {
"datapilot": {
"command": "python",
"args": ["-m", "src.main"],
"cwd": "/path/to/datapilot",
"env": {
"SNOWFLAKE_ACCOUNT": "your_account",
"SNOWFLAKE_USER": "your_user",
"SNOWFLAKE_PASSWORD": "your_password",
"OPENAI_API_KEY": "your_openai_key"
}
}
}
}Using FastMCP Client
from fastmcp import Client
async def main():
async with Client("python -m src.main") as client:
# List databases
databases = await client.call_tool("list_databases")
print("Databases:", databases)
# Natural language to SQL
result = await client.call_tool("natural_language_to_sql", {
"question": "Show me the top 10 customers by revenue",
"database": "SALES_DB",
"schema": "PUBLIC"
})
print("Generated SQL:", result)Example Usage
1. Natural Language Query
# Ask a question in natural language
question = "What are the top 5 products by sales volume last month?"
sql = await client.call_tool("natural_language_to_sql", {
"question": question,
"database": "SALES_DB",
"schema": "PUBLIC"
})
print(f"Generated SQL: {sql}")2. Execute and Analyze
# Execute a query and get AI analysis
analysis = await client.call_tool("analyze_query_results", {
"query": "SELECT product_name, SUM(quantity) as total_sales FROM sales GROUP BY product_name ORDER BY total_sales DESC LIMIT 10",
"results_limit": 100,
"analysis_type": "summary"
})
print(f"Analysis: {analysis}")3. Table Insights
# Get AI-powered insights about a table
insights = await client.call_tool("generate_table_insights", {
"table_name": "SALES_DB.PUBLIC.CUSTOMERS",
"sample_limit": 50
})
print(f"Table insights: {insights}")4. Query Optimization
# Get optimization suggestions
optimizations = await client.call_tool("suggest_query_optimizations", {
"query": "SELECT * FROM large_table WHERE date_column > '2023-01-01'"
})
print(f"Optimization suggestions: {optimizations}")Architecture
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β MCP Client β β FastMCP β β Snowflake β
β (Claude/etc) βββββΊβ Server βββββΊβ Database β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β OpenAI API β
β (GPT-4) β
βββββββββββββββββββProject Structure
datapilot/
βββ src/
β βββ __init__.py
β βββ main.py # Main FastMCP server
β βββ models.py # Pydantic data models
β βββ snowflake_client.py # Snowflake connection & operations
β βββ openai_client.py # OpenAI integration
βββ requirements.txt # Python dependencies
βββ env.template # Environment variables template
βββ README.md # This fileDevelopment
Adding New Tools
Define your tool function in
src/main.py:
@mcp.tool()
async def my_new_tool(param: str, ctx: Context) -> str:
"""Description of what the tool does"""
await ctx.info(f"Processing: {param}")
# Your logic here
return "result"Add appropriate error handling and logging
Test with FastMCP dev mode:
fastmcp dev src/main.py
Adding New Resources
@mcp.resource("snowflake://my-resource/{param}")
async def my_resource(param: str) -> Dict[str, Any]:
"""Resource description"""
# Your logic here
return {"data": "value"}Troubleshooting
Common Issues
Connection Errors
Verify Snowflake credentials in
.envCheck network connectivity
Ensure user has required permissions
OpenAI Errors
Verify
OPENAI_API_KEYis set correctlyCheck API quota and billing
Ensure model name is correct
Import Errors
Activate virtual environment
Install all requirements:
pip install -r requirements.txtRun from project root directory
Logging
Enable debug logging:
LOG_LEVEL=DEBUGContributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
This project is licensed under the MIT License.
Support
For issues and questions:
Check the troubleshooting section
Review FastMCP documentation: https://gofastmcp.com/
Open an issue in the repository
Available Tools
13 toolsanalyze_query_resultsC
Execute a query and analyze its results using AI
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| results_limit | No | ||
| analysis_type | No | summary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions AI-based analysis but doesn't specify what 'analyze' entails (e.g., statistical summaries, pattern detection, recommendations), performance characteristics, rate limits, authentication needs, or error handling. The description is too vague about the tool's actual behavior beyond the high-level concept.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 7 words, front-loading the core purpose with zero wasted words. Every element ('Execute a query', 'analyze its results', 'using AI') contributes essential information without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return value documentation) but no annotations and 0% schema description coverage, the description is minimally complete for understanding the high-level purpose. However, it lacks crucial details about parameter meanings, behavioral constraints, and differentiation from siblings that would make it fully adequate for a 3-parameter AI analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for all 3 parameters, the description adds no semantic information about what 'query', 'results_limit', or 'analysis_type' mean. It doesn't explain query format, valid analysis types beyond the default 'summary', or how the limit applies. The description fails to compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Execute a query and analyze its results using AI', which specifies both the action (execute+analyze) and resource (query results). It distinguishes from siblings like 'execute_sql' (execution only) and 'generate_table_insights' (table-focused analysis). However, it doesn't explicitly mention what kind of query or database system is involved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'execute_sql' (for raw execution) or 'natural_language_to_sql' (for query generation). It doesn't mention prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage from the name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableC
Get detailed information about a table's columns
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| database | No | ||
| schema | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a read operation ('Get'), but doesn't disclose behavioral traits like whether it requires specific permissions, what format the detailed information returns, if there are rate limits, or how it handles missing tables. For a tool with 3 parameters and no annotation coverage, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place: 'Get' (action), 'detailed information' (scope), 'about a table's columns' (resource). There's zero waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which should document return values), the description doesn't need to explain outputs. However, with 3 parameters, 0% schema coverage, and no annotations, the description is incompleteβit doesn't address parameter meanings or behavioral context adequately. It's minimally viable but leaves clear gaps for the agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description mentions 'table's columns' which hints at the table_name parameter, but doesn't explain the database or schema parameters at all. With 3 parameters (table_name, database, schema) and only one implicitly addressed, the description fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('table's columns') with specificity about what information is retrieved ('detailed information'). It distinguishes from siblings like list_tables (which lists names) or get_table_sample (which retrieves data rows). However, it doesn't explicitly differentiate from analyze_query_results or explain_query which might also provide table metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like list_tables (for table names), get_table_sample (for data rows), and explain_query (for query structure), there's clear potential for confusion, but the description offers no when-to-use or when-not-to-use advice. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_sqlB
Execute a SQL query on Snowflake and return results
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| error | No | |
| columns | Yes | |
| success | Yes | |
| query_id | No | |
| row_count | Yes | |
| warehouse_used | No | |
| execution_time_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Execute a SQL query' implies a write operation could occur, but it doesn't disclose whether this is read-only, requires specific permissions, has rate limits, or what happens with DML/DDL queries. The description lacks critical behavioral context for a SQL execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded with the essential information, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (SQL execution can involve queries with varying impacts) and the presence of an output schema (which handles return values), the description is minimally adequate. However, without annotations and with incomplete parameter documentation, it leaves significant gaps in understanding the tool's full behavior and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'SQL query' which aligns with the 'query' parameter in the schema, but with 0% schema description coverage, it doesn't explain the nested 'request' object structure or other parameters like 'limit' and 'warehouse'. The description adds minimal value beyond what's implied by the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute a SQL query') and target resource ('on Snowflake'), providing a specific verb+resource combination. However, it doesn't differentiate from siblings like 'natural_language_to_sql' or 'explain_query' which also involve SQL operations, missing explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'natural_language_to_sql' for converting natural language to SQL or 'explain_query' for analyzing query execution, there's no indication of appropriate contexts, prerequisites, or exclusions for this execution tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_queryA
Explain what a SQL query does in plain English
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool explains queries but does not describe how it handles errors (e.g., invalid SQL), what the output format is (though an output schema exists), or any limitations (e.g., query complexity). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It is front-loaded with the core purpose and efficiently communicates the tool's function without unnecessary elaboration, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose and parameter semantics adequately, though it lacks behavioral details like error handling or limitations, which are not fully compensated by the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It mentions 'SQL query' as the parameter, adding meaning beyond the schema's generic 'query' property name. However, it does not specify format requirements (e.g., must be valid SQL) or examples, providing only basic semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('explain what a SQL query does') and the resource ('SQL query'), with the qualifier 'in plain English' distinguishing it from siblings like execute_sql or suggest_query_optimizations. It precisely communicates the tool's function without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding SQL queries, but does not explicitly state when to use this tool versus alternatives like natural_language_to_sql (for translation) or analyze_query_results (for post-execution analysis). It provides basic context but lacks explicit guidance on exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_table_insightsC
Generate AI-powered insights about a table's data
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| sample_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'AI-powered insights' but doesn't explain what this entailsβe.g., whether it's a read-only analysis, if it requires specific permissions, potential costs or rate limits, or the nature of the output. This leaves significant gaps in understanding the tool's behavior and implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the core function without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of AI-powered analysis and the lack of annotations, the description is incomplete. It doesn't explain what 'insights' include, how the AI works, or any behavioral traits. The presence of an output schema helps by documenting return values, but the description fails to provide enough context for safe and effective use, especially compared to detailed siblings like 'execute_sql' or 'natural_language_to_sql'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It doesn't mention the parameters 'table_name' or 'sample_limit' at all, failing to add meaning beyond the bare schema. However, with only 2 parameters and an output schema present, the baseline is slightly mitigated, but the description provides no semantic context for how these parameters affect the insights generation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Generate AI-powered insights about a table's data', which provides a clear verb ('Generate') and resource ('table's data'), but it's vague about what 'insights' entail compared to siblings like 'describe_table' or 'analyze_query_results'. It doesn't specifically differentiate from these alternatives, leaving the purpose somewhat ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'describe_table' or 'analyze_query_results'. The description implies usage for AI analysis of table data but offers no context on prerequisites, exclusions, or specific scenarios, making it unclear how it fits among the many data-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_sampleC
Get a sample of data from a table
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| error | No | |
| columns | Yes | |
| success | Yes | |
| query_id | No | |
| row_count | Yes | |
| warehouse_used | No | |
| execution_time_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't cover critical traits like whether this is a read-only operation, if it requires specific permissions, how sampling is performed (e.g., random vs. first rows), or any rate limits. The description is minimal and leaves key behaviors unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words, making it appropriately concise. It's front-loaded with the core action, though it could benefit from slightly more detail given the lack of annotations and low schema coverage. Overall, it's well-structured but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations) and the presence of an output schema, the description is minimally adequate. The output schema likely covers return values, reducing the need for description details. However, with 0% schema coverage and no annotations, the description should do more to explain parameters and behavior, making it borderline complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'table' and 'sample' but doesn't explain the 'table_name' parameter's format or scope, nor the 'limit' parameter's role in defining sample size. The description adds minimal meaning beyond the bare schema, failing to clarify parameter usage effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a sample of data from a table' clearly states the verb ('Get') and resource ('data from a table'), making the purpose understandable. However, it's vague about what constitutes a 'sample' and doesn't differentiate from siblings like 'describe_table' or 'execute_sql' that might also retrieve table data. It avoids tautology but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'execute_sql' for custom queries or 'describe_table' for metadata, there's no indication of context, prerequisites, or exclusions. It implies usage for sampling data but offers no comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warehouse_statusB
Get current warehouse, database, and schema status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves status information but doesn't specify what 'status' entails (e.g., operational health, usage metrics, configuration), whether it's real-time or cached, or any authentication or rate limit considerations. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resources, making it efficient and easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, it lacks details on what 'status' includes, which could be crucial for usage. With no annotations and a vague resource scope, more context would improve completeness for a status-checking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it could have clarified if any implicit parameters (like context or filters) are involved. Since there are no parameters, a baseline of 4 is applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resources ('warehouse, database, and schema status'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_warehouses' or 'list_databases', which focus on listing rather than retrieving status information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or comparisons to siblings like 'list_warehouses' (which might list warehouses without status details) or 'analyze_query_results' (which could involve status indirectly).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_databasesB
List all databases available to the user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool lists databases but doesn't describe return format, pagination, authentication requirements, rate limits, or any side effects. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the essential purpose without any wasted words. It's appropriately sized for a simple listing tool and front-loads the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema exists), the description is adequate but minimal. With no annotations and an output schema, it covers the basic purpose but lacks behavioral context that would help an agent understand how to properly interpret results or handle edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters with high schema coverage is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('databases'), and specifies scope ('all databases available to the user'). It doesn't explicitly differentiate from sibling tools like 'list_schemas' or 'list_tables', but the resource specificity provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_schemas' or 'list_tables', nor does it mention prerequisites or context for usage. It simply states what the tool does without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schemasC
List all schemas in a database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all schemas') but doesn't describe how the listing worksβwhether it returns all schemas at once, uses pagination, requires specific permissions, or has rate limits. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every part of the sentence earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return values), the description is somewhat complete for basic understanding. However, it lacks details on usage context, parameter meaning, and behavioral traits, which are needed for effective tool selection and invocation in a database environment with multiple listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, meaning the parameter 'database' is undocumented. The description doesn't add any meaning beyond the schemaβit doesn't explain what 'database' refers to (e.g., a database name, ID, or connection string) or provide examples. This fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all schemas in a database'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'list_databases' or 'list_tables', which perform similar listing operations on different resources, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_databases' or 'list_tables'. It doesn't mention prerequisites, such as needing to know the database name first, or contextual factors like performance implications. This leaves the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesB
List all tables in a database/schema
| Name | Required | Description | Default |
|---|---|---|---|
| database | No | ||
| schema | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits such as permissions needed, rate limits, pagination, or what 'all tables' entails (e.g., includes system tables?). It lacks details on safety, performance, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, front-loaded with the core purpose. Every word earns its place, making it appropriately sized and structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (list operation), no annotations, and an output schema exists (reducing need to explain return values), the description is minimally adequate. However, it lacks context on parameter usage and behavioral aspects, leaving gaps for a tool with 2 parameters and sibling alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds no parameter details beyond implying 'database/schema' scope. It doesn't explain what 'database' and 'schema' parameters do, their relationships, or default behaviors. Baseline is 3 due to 0 parameters being required, but value beyond schema is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all tables') and target resource ('in a database/schema'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'list_databases' or 'list_schemas' beyond the obvious resource difference, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_databases' or 'list_schemas', nor does it mention prerequisites or exclusions. Usage is implied by the name alone, with no explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_warehousesB
List all warehouses available to the user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'lists all warehouses available to the user', implying a read-only operation that returns a list, but doesn't disclose key traits like pagination, rate limits, authentication requirements, error conditions, or what 'available to the user' means (e.g., permissions-based filtering). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's front-loaded with the core action ('List all warehouses') and adds necessary context ('available to the user'). Every word earns its place, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, simple list operation) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral disclosure, it doesn't fully cover aspects like authentication or operational constraints. It meets the basic need but lacks depth for confident agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description appropriately doesn't discuss parameters, focusing on the tool's purpose. Baseline for 0 parameters is 4, as the description doesn't need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('warehouses'), specifying 'all warehouses available to the user'. It distinguishes from siblings like 'get_warehouse_status' (which checks status) and 'list_databases/tables/schemas' (which list different resources). However, it doesn't explicitly differentiate from all siblings, such as 'describe_table' or 'analyze_query_results', though those are clearly different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), when to use 'list_warehouses' vs 'get_warehouse_status' (for status checks) or other listing tools like 'list_databases', or any exclusions. The agent must infer usage from the name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
natural_language_to_sqlC
Convert natural language question to SQL query using AI
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool uses AI for conversion but doesn't mention accuracy limitations, potential errors, rate limits, authentication needs, or what the output looks like (though an output schema exists). This is inadequate for an AI-powered tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (AI-based conversion), no annotations, and 0% schema coverage, the description is incomplete. It lacks parameter details and behavioral context, though the existence of an output schema mitigates some gaps by handling return values externally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning none of the parameters (question, context, database, schema) are documented in the schema. The description adds no information about these parameters beyond what's implied by the tool name, failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as converting natural language questions to SQL queries using AI, which is a specific verb+resource combination. However, it doesn't differentiate from siblings like 'execute_sql' or 'explain_query' that also deal with SQL queries, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'execute_sql' (which runs SQL) and 'explain_query' (which explains SQL), there's no indication of whether this tool should be used before execution or as a standalone conversion step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_query_optimizationsB
Get AI-powered suggestions for optimizing a SQL query
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool provides 'AI-powered suggestions' but doesn't elaborate on what that entailsβe.g., whether it modifies the query, returns textual advice, requires specific permissions, has rate limits, or handles errors. For a tool that likely involves computational analysis, this minimal description leaves critical behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get AI-powered suggestions for optimizing a SQL query') with zero wasted words. It avoids redundancy and is appropriately sized for a straightforward tool, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (AI-powered optimization), lack of annotations, and an output schema (which should cover return values), the description is minimally adequate. It states what the tool does but omits usage guidelines, behavioral details, and parameter nuances. The presence of an output schema lifts some burden, but for a tool with potential behavioral implications, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the schema provides no semantic context. The description mentions 'optimizing a SQL query', which implies the 'query' parameter should be a SQL string, adding some meaning beyond the schema's bare 'string' type. However, it doesn't detail constraints (e.g., query length, supported SQL dialects) or examples, resulting in a baseline score given the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get AI-powered suggestions') and the resource ('optimizing a SQL query'), making the purpose immediately understandable. It distinguishes itself from siblings like 'execute_sql' or 'explain_query' by focusing on optimization suggestions rather than execution or analysis. However, it doesn't explicitly contrast with all potential alternatives like 'analyze_query_results' or 'generate_table_insights', keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a query to optimize), exclusions (e.g., not for non-SQL queries), or comparisons to siblings like 'explain_query' (which might analyze performance) or 'natural_language_to_sql' (which generates queries). This lack of contextual direction leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- Changed
analyze_query_results5 fields changed- removed
Input schema / properties / analysis_type / titleRemoved value: -"Analysis Type" - removed
Input schema / properties / query / titleRemoved value: -"Query" - removed
Input schema / properties / results_limit / titleRemoved value: -"Results Limit" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
describe_table5 fields changed- removed
Input schema / properties / database / titleRemoved value: -"Database" - removed
Input schema / properties / schema / titleRemoved value: -"Schema" - removed
Input schema / properties / table_name / titleRemoved value: -"Table Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
execute_sql14 fields changed- removed
Input schema / $defs / SQLQueryRequest / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / $defs / SQLQueryRequest / properties / query / titleRemoved value: -"Query" - removed
Input schema / $defs / SQLQueryRequest / properties / warehouse / titleRemoved value: -"Warehouse" - removed
Input schema / $defs / SQLQueryRequest / titleRemoved value: -"SQLQueryRequest" - removed
Input schema / properties / request / titleRemoved value: -"Request" - removed
Output schema / properties / columns / titleRemoved value: -"Columns" - removed
Output schema / properties / data / titleRemoved value: -"Data" - removed
Output schema / properties / error / titleRemoved value: -"Error" - removed
Output schema / properties / execution_time_ms / titleRemoved value: -"Execution Time Ms" - removed
Output schema / properties / query_id / titleRemoved value: -"Query Id" - removed
Output schema / properties / row_count / titleRemoved value: -"Row Count" - removed
Output schema / properties / success / titleRemoved value: -"Success" - removed
Output schema / properties / warehouse_used / titleRemoved value: -"Warehouse Used" - removed
Output schema / titleRemoved value: -"QueryResult"
- Changed
explain_query3 fields changed- removed
Input schema / properties / query / titleRemoved value: -"Query" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
generate_table_insights4 fields changed- removed
Input schema / properties / sample_limit / titleRemoved value: -"Sample Limit" - removed
Input schema / properties / table_name / titleRemoved value: -"Table Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_table_sample11 fields changed- removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / table_name / titleRemoved value: -"Table Name" - removed
Output schema / properties / columns / titleRemoved value: -"Columns" - removed
Output schema / properties / data / titleRemoved value: -"Data" - removed
Output schema / properties / error / titleRemoved value: -"Error" - removed
Output schema / properties / execution_time_ms / titleRemoved value: -"Execution Time Ms" - removed
Output schema / properties / query_id / titleRemoved value: -"Query Id" - removed
Output schema / properties / row_count / titleRemoved value: -"Row Count" - removed
Output schema / properties / success / titleRemoved value: -"Success" - removed
Output schema / properties / warehouse_used / titleRemoved value: -"Warehouse Used" - removed
Output schema / titleRemoved value: -"QueryResult"
- Changed
list_databases2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_schemas3 fields changed- removed
Input schema / properties / database / titleRemoved value: -"Database" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_tables4 fields changed- removed
Input schema / properties / database / titleRemoved value: -"Database" - removed
Input schema / properties / schema / titleRemoved value: -"Schema" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_warehouses2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
natural_language_to_sql8 fields changed- removed
Input schema / $defs / NaturalLanguageRequest / properties / context / titleRemoved value: -"Context" - removed
Input schema / $defs / NaturalLanguageRequest / properties / database / titleRemoved value: -"Database" - removed
Input schema / $defs / NaturalLanguageRequest / properties / question / titleRemoved value: -"Question" - removed
Input schema / $defs / NaturalLanguageRequest / properties / schema / titleRemoved value: -"Schema" - removed
Input schema / $defs / NaturalLanguageRequest / titleRemoved value: -"NaturalLanguageRequest" - removed
Input schema / properties / request / titleRemoved value: -"Request" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
suggest_query_optimizations3 fields changed- removed
Input schema / properties / query / titleRemoved value: -"Query" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
13 tool updates
- First observed
analyze_query_results - First observed
describe_table - First observed
execute_sql - First observed
explain_query - First observed
generate_table_insights - First observed
get_table_sample - First observed
get_warehouse_status - First observed
list_databases - First observed
list_schemas - First observed
list_tables - First observed
list_warehouses - First observed
natural_language_to_sql - First observed
suggest_query_optimizations
TDQS
Every tool has a clearly distinct purpose with no ambiguity. For example, 'execute_sql' runs queries while 'explain_query' describes them, and 'list_databases' enumerates databases whereas 'describe_table' provides column details. The tools cover different aspects of the data workflow without overlap.
All tool names follow a consistent verb_noun pattern using snake_case, such as 'list_databases', 'execute_sql', and 'generate_table_insights'. This uniformity makes the toolset predictable and easy to navigate, with no deviations in naming conventions.
With 13 tools, the count is well-scoped for a Snowflake data management server. Each tool serves a specific function in querying, listing, analyzing, or optimizing data, and none appear redundant, fitting the domain appropriately.
The toolset provides complete coverage for data exploration and SQL workflows, including listing resources (databases, schemas, tables), executing and explaining queries, generating insights, and optimizing performance. There are no obvious gaps, enabling agents to handle end-to-end tasks without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
A Model Context Protocol server for Wix AI tools
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to execute SQL queries on Snowflake databases with automatic connection lifecycle management.45MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides access to Snowflake databases for any MCP-compatible client, allowing execution of SQL queries with automatic connection management.5MIT
- AlicenseAqualityBmaintenanceA Model Context Protocol server that enables large language models to access database metadata and perform cross-engine data querying across diverse database ecosystems.1652Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides AI assistants with comprehensive access to SQL databases, enabling schema inspection, query execution, and database operations with enterprise-grade security.467MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rickyb30/datapilot-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server