Skip to main content
Glama
microsoft

Microsoft Fabric RTI MCP Server

Official
by microsoft

kusto_get_shots

Retrieves KQL query examples matching your prompt to reveal correct databases, tables, and column names for writing accurate queries.

Instructions

Retrieves KQL query examples that semantically resemble the user's prompt.

IMPORTANT: Call this tool BEFORE writing any KQL query. The returned shots contain
expert-written KQL examples that reveal the correct databases, tables, column names,
and query patterns for this cluster. Without this context, you are likely to query
the wrong table or database.

Use this to:
- Discover which databases and tables contain the data you need
- Learn the correct column names and schema for a given domain
- Find proven query patterns as starting points

The returned shots come from a curated collection of expert-written examples
paired with natural language descriptions.

:param prompt: The user prompt to find similar shots for.
:param shots_table_name: Name of the table containing the shots. The table should have "EmbeddingText" (string)
                         column containing the natural language prompt, "AugmentedText" (string) column containing
                         the respective KQL, and "EmbeddingVector" (dynamic) column containing the embedding vector
                         for the NL.
                         If not provided, uses the KUSTO_SHOTS_TABLE environment variable.
:param cluster_uri: The URI of the Kusto cluster.
:param sample_size: Number of most similar shots to retrieve. Defaults to 3.
:param database: Optional database name. If not provided, uses the "AI" database or the default database.
:param embedding_endpoint: Optional endpoint for the embedding model to use. If not provided, uses the
                         AZ_OPENAI_EMBEDDING_ENDPOINT environment variable. If no valid endpoint is set,
                         this function should not be called.
:param client_request_properties: Optional dictionary of additional client request properties.
:return: List of dictionaries containing the shots records.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptYes
cluster_uriYes
shots_table_nameNo
sample_sizeNo
databaseNo
embedding_endpointNo
client_request_propertiesNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and destructiveHint=false, but the description reveals that the tool retrieves examples based on semantic similarity using embeddings, returns a list of dictionaries, and relies on environment variables. This adds behavioral context beyond annotations. However, there is a contradiction: the description implies a read-only operation ('Retrieves') while annotations say it is not read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a critical instruction ('Call this tool BEFORE writing any KQL query') followed by purpose and use cases. Parameter descriptions are detailed but necessary given low schema coverage. The text is slightly verbose but every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, 2 required) and the presence of an output schema, the description fully covers the purpose, usage, parameter meanings, and return value. It explains the importance of the tool and how to use it effectively, leaving no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema parameter descriptions are absent (0% coverage). The description compensates fully with detailed docstring for each parameter, including the required columns for shots_table_name, defaults for sample_size and database, and how environment variables are used. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieves KQL query examples that semantically resemble the user's prompt.' It also emphasizes calling this tool before writing any KQL query, distinguishing it from siblings like kusto_query which execute queries. The verb 'Retrieves' and resource 'KQL query examples' are specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this tool BEFORE writing any KQL query' and explains why: without this context, you may query the wrong table or database. It lists three use cases: discover databases/tables, learn column names, and find query patterns. It does not provide explicit when-not-to-use scenarios, but the context clearly implies it's for preparation, not execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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/microsoft/fabric-rti-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server