fabric-dw-mcp-cli
The fabric-dw MCP server provides comprehensive administration and management capabilities for Microsoft Fabric Data Warehouses and SQL Analytics Endpoints, with built-in security controls for destructive operations.
Workspace Management: List workspaces, get details, and set default collations.
Warehouse & SQL Endpoint Management: List, create, rename, delete, and take ownership of warehouses and SQL Analytics Endpoints; refresh endpoint metadata; get permissions (requires Fabric Admin role).
SQL Execution & Query Analysis: Execute arbitrary SQL (DDL, DML, SELECT) and retrieve estimated execution plans (SHOWPLAN_XML).
Monitoring & Performance: List running queries and active connections; terminate sessions; view request/session history, frequent queries, and long-running queries.
Audit Management: Get, enable, and disable SQL auditing; manage action groups and log retention periods.
Data Versioning & Recovery: List, create, rename, and delete snapshots and restore points; restore a warehouse in-place to a restore point.
Schema & Object Management: Manage schemas, views, stored procedures, and user-defined functions (scalar UDFs, inline TVFs) β list, get, create, update, drop, and rename.
Table Management: List, read, create, delete, truncate, clone, rename, and count rows in tables; load data from remote URLs (CSV/Parquet via COPY INTO).
Statistics Management: List, inspect (with histograms), create, update, and delete table statistics.
Warehouse Settings: Get/set result-set caching and time-travel retention periods.
SQL Pools (Beta): List, create, update, delete, enable, and disable custom SQL pools; view SQL pool insight events.
Utilities: Clear internal caches and generate dbt-fabric project files (profiles.yml, dbt_project.yml, sources, requirements, .gitignore).
Generates dbt-fabric project file contents for a Fabric Data Warehouse, enabling data transformation workflows with dbt.
Click on "Deploy 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., "@fabric-dw-mcp-clilist all data warehouses in my Fabric workspace"
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.
Python CLI and MCP server for Microsoft Fabric Data Warehouses and SQL Analytics Endpoints: administer, query, optimize, and secure them from your terminal or your AI agent.
Full documentation: fdw.debruyn.dev
π£ Just announced! Read the story behind fabric-dw in the announcement blog post.
Description
fabric-dw provides two interfaces for managing Microsoft Fabric Data Warehouses and SQL Analytics Endpoints:
CLI: a command-line tool for common DW administration tasks.
MCP server: a Model Context Protocol server that exposes DW operations as tools for AI assistants.
Authentication is configured via the FABRIC_AUTH environment variable. The default (FABRIC_AUTH=default) uses azure-identity DefaultAzureCredential, which walks environment variables, Workload/Managed Identity, Azure CLI, Azure Developer CLI, Azure PowerShell, and interactive browser in order. Any of these will satisfy it. See the Authentication docs for the full chain, all supported sources, and debugging tips.
Related MCP server: mcp-fabric-api
Installation
pip install fabric-dw
# or run without installing:
uvx fabric-dw --help
# or install persistently on PATH:
uv tool install fabric-dwAfter installation, the fdw command is a short alias for fabric-dw; both invoke the same entry point. See the Install docs for MCP server setup, upgrading, and prerelease builds.
Quick Start
CLI
The workspace is a global root option -w / --workspace placed before the command group. Set a default once with fdw config set workspace <NAME> and omit -w on every subsequent call. Workspace resolution order: (1) -w flag, (2) FABRIC_DW_DEFAULT_WORKSPACE env var, (3) configured default.
# Run without installing; install to get the fdw alias
uvx fabric-dw --help
# Set a default workspace once; all subsequent commands pick it up
fdw config set workspace SalesWS# -- Run and explain SQL --
# Execute a query against a warehouse
fdw sql exec SalesWH -q "SELECT TOP 10 * FROM dbo.orders ORDER BY order_date DESC"
# Capture an estimated execution plan as SVG -- no SSMS or Windows needed
fdw sql plan SalesWH -f query.sql --format svg -o plan.svg
# -- Performance mission-control --
# See what is running right now
fdw queries running SalesWH
# Long-running queries from the past hour
fdw queries long-running SalesWH --ago 1h
# Kill a runaway session by ID
fdw queries kill SalesWH 55
# Most-repeated queries over the past 24 hours
fdw queries frequent SalesWH --ago 24h
# -- Optimize --
# Inspect a statistics histogram with inline terminal bar charts
fdw statistics show SalesWH dbo.orders st_order_date --histogram
# Re-cluster a table on a new key (transactional CTAS-swap, auto-rollback on failure)
fdw tables cluster-by SalesWH dbo.orders --cluster-by customer_id
# -- Time travel + export --
# Browse the table as it looked 2 hours ago
fdw tables read SalesWH dbo.orders --ago 2h
# Export a point-in-time snapshot to Parquet
fdw tables export SalesWH dbo.orders --output snapshot.parquet --ago 2h
# -- Governance --
# Grant SELECT on a specific table
fdw permissions sql grant SalesWH SELECT --to analyst@company.com --object dbo.orders
# Deny access to sensitive columns (column-level security)
fdw permissions cls deny SalesWH SELECT --to contractor@company.com \
--object dbo.orders --columns salary,bonus
# Create a row-level security policy (filter rows by SalesRep)
fdw permissions rls create SalesWH rls.SalesFilter \
--filter "rls.fn_sales_filter(SalesRep)" --on dbo.orders
# -- Load + scaffold --
# Load a local Parquet file and auto-create the table from its schema
fdw tables load SalesWH dbo.orders --file orders.parquet --create
# Scaffold a full dbt-fabric project wired to the warehouse
fdw dbt init SalesWH ./my-dbt-project --project-name sales_dw --with-sourcesMCP Server
Add to your MCP client configuration (e.g. Claude Desktop, VS Code):
{
"mcpServers": {
"fabric-dw": {
"command": "uvx",
"args": ["--from", "fabric-dw", "fabric-dw-mcp"]
}
}
}The MCP server exposes all CLI operations as MCP tools (workspaces, warehouses, SQL endpoints, schemas, tables, views, queries, snapshots, restore points, audit, statistics, permissions, sql-pools). Bundled Claude Code agent skills (query-optimizer, warehouse-performance, dbt-setup) are included for deeper AI-assisted analysis. Set FABRIC_AUTH in the environment if you need a non-default auth mode.
Both the skills and the MCP server install in one command via the fabric-dw plugin marketplace, for Claude Code and GitHub Copilot CLI alike: /plugin marketplace add sdebruyn/fabric-dw-mcp-cli then /plugin install fabric-dw@fabric-dw. See the Agent Skills docs for details.
Run in Docker
The Docker image's default ENTRYPOINT is the MCP server (fabric-dw-mcp). Use it as-is with your MCP client, or override the entrypoint to run the CLI instead.
docker pull ghcr.io/sdebruyn/fabric-dw:latest
# Run the MCP server (default entrypoint, connect via stdio from your MCP client):
docker run --rm -i \
-e AZURE_CLIENT_ID=β¦ \
-e AZURE_TENANT_ID=β¦ \
-e AZURE_CLIENT_SECRET=β¦ \
-e FABRIC_AUTH=sp \
ghcr.io/sdebruyn/fabric-dw
# Run the CLI instead (override the entrypoint):
docker run --rm \
--entrypoint fabric-dw \
-e AZURE_CLIENT_ID=β¦ \
-e AZURE_TENANT_ID=β¦ \
-e AZURE_CLIENT_SECRET=β¦ \
-e FABRIC_AUTH=sp \
ghcr.io/sdebruyn/fabric-dw --helpDev images (built from every main merge): ghcr.io/sdebruyn/fabric-dw:main or :<version>.dev<N>.
Package page: ghcr.io/sdebruyn/fabric-dw
Security environment variables
Variable | Default | Description |
| unset | Set to |
| unset | Set to |
| unset | Comma-separated workspace names or GUIDs the server may touch. Unset = all workspaces allowed. |
| unset | Set to |
HTTP transport
The MCP server can be started in HTTP mode for remote clients:
fabric-dw-mcp --transport http [--host 127.0.0.1] [--port 8000]It binds to loopback by default, where Host and Origin validation is handled for you. Binding anywhere else requires FABRIC_MCP_ALLOW_REMOTE=1 and --allowed-host, and the endpoint has no built-in authentication or TLS, so always front it with an authenticating reverse proxy. See Hosting the MCP server for that setup.
Develop in a container
Open the repo in GitHub Codespaces or VS Code's Remote-Containers extension. The devcontainer pre-installs Python 3.14, uv, Azure CLI, and the GitHub CLI.
Contributing
See CONTRIBUTING.md for dev setup, branch flow, and how to run tests locally.
π Docs: fdw.debruyn.dev (or run uv run --only-group docs zensical serve locally).
Security
Please report vulnerabilities privately. See SECURITY.md.
Code of Conduct
This project follows the Contributor Covenant 2.1.
License
MIT. Copyright (c) 2026 Sam Debruyn
Available Tools
123 toolsadd_audit_groupA
Add a single audit action group without overwriting the others.
Idempotent -- if the group is already present the current settings are returned unchanged. Auditing must already be enabled.
CAUTION: changes take effect immediately on the live audit policy.
CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.
Args:
workspace: Workspace name or GUID.
warehouse: Warehouse or SQL analytics endpoint name or GUID.
group: Action group name, e.g. BATCH_COMPLETED_GROUP.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses idempotency, immediate effect on live policy, and the eventual consistency risk with clear mitigation advice.
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?
Well-structured with purpose, idempotency, cautions, and args. Efficiently uses sentences without waste, though the args section could be more concise.
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?
Covers preconditions (auditing enabled), behavioral nuances (eventual consistency), and output schema exists. Does not describe return value, but that is covered by output schema.
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 has 0% description coverage. Description lists parameters and gives an example for 'group' (e.g., BATCH_COMPLETED_GROUP), but workspace and warehouse lack any format or context beyond names.
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?
Description clearly states it adds a single audit action group without overwriting others, distinguishing it from bulk operations. The idempotency note reinforces its specific behavior.
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?
Explicitly states auditing must already be enabled and warns about spacing writes due to eventual consistency. However, it does not explicitly contrast with siblings like set_audit_action_groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_security_predicateA
Add a FILTER predicate to an existing row-level security policy.
Executes ALTER SECURITY POLICY ... ADD FILTER PREDICATE. There is
no predicate-type or operation parameter (#966): Fabric Data
Warehouse supports FILTER predicates only.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
policy_name: Qualified policy name ("schema.name" or "name").
fn_name: Name of the predicate function.
fn_args: Column names to pass to the predicate function.
table_schema: Schema name of the target table.
table_name: Name of the target table.
fn_schema: Schema name of the predicate function (optional -- omit
when the function lives in the default schema).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| fn_args | Yes | ||
| fn_name | Yes | ||
| fn_schema | No | ||
| workspace | Yes | ||
| table_name | Yes | ||
| policy_name | Yes | ||
| table_schema | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 describes the SQL command executed but does not disclose side effects, permissions required, error conditions (e.g., policy must exist, function must exist), or behavior if predicate already exists.
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 well-structured with a one-line summary, a brief explanation, and an Args list. It is front-loaded and concise, with no extraneous 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?
The description thoroughly covers the 8 parameters (7 required) but lacks behavioral context such as prerequisites (e.g., policy must exist) and output details. Since there is an output schema, the absence of return value explanation is acceptable, but more behavioral completeness would improve the score.
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 Args section explains each parameter clearly, including that 'fn_schema' is optional and 'policy_name' should be qualified. It adds meaning beyond the input schema, which has 0% description coverage. The description clarifies that 'fn_args' are column names passed to the function.
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 adds a FILTER predicate to an existing row-level security policy, using the specific SQL command. It distinguishes from related tools like 'drop_security_predicate' and 'create_security_policy'.
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 mentions that there is no predicate-type or operation parameter because Fabric Data Warehouse only supports FILTER predicates, which is a useful caveat. However, it does not provide explicit guidance on when to use this tool versus alternatives or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_workspace_to_capacityB
Assign a workspace to a Fabric capacity.
Args: workspace: Workspace name or GUID. capacity_id: UUID of the capacity to assign the workspace to.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes | ||
| capacity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses the action (assignment) but omits side effects (e.g., overwriting existing assignments), required permissions, or success/failure indicators.
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: one sentence plus brief parameter explanations. No redundant information, ideal for quick parsing.
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 (implied) but the description does not mention return values, error conditions, or prerequisites. For a command-like mutation, important context is missing.
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 adds minimal value beyond the schema by specifying that workspace can be 'name or GUID' and capacity_id is a 'UUID'. However, it does not explain how to obtain these values or provide constraints, such as format validation.
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 'assign' and the resources 'workspace to Fabric capacity', making the tool's function explicit. It distinguishes from siblings, which are predominantly SQL and table management 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?
No guidance is provided on when to use this tool versus alternatives (e.g., prerequisites like ensuring the capacity exists via list_capacities). There is no mention of conditions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cacheA
Erase cached workspace and item name-to-UUID mappings.
Args: scope: Which portion of the cache to clear.
- ``"workspaces"`` β clear only workspace nameβUUID entries.
- ``"items"`` β clear only item (warehouse/endpoint) entries.
- ``"all"`` (default) β clear all entries.Returns:
A dict with keys scope (the value used), workspaces_cleared
(number of workspace entries removed), and items_cleared (number
of item workspace buckets removed).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly states what gets destroyed (name-to-UUID cache entries), the available scopes, and the exact return dict keys and their meanings. This gives an agent a solid mental model of the operation's side effects.
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 first sentence is a clear, front-loaded summary. The Args and Returns sections are tightly written with no redundant or promotional fluff, and every sentence earns its place by explaining a concrete aspect of invocation or output.
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?
For a single-parameter tool with an output schema, the description is complete: it covers the parameter semantics, default behavior, and the return contract. Nothing an agent needs to call the tool correctly is missing.
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 coverage is 0% and the only parameter 'scope' is documented entirely in the description. The description explains each enum value ('workspaces', 'items', 'all'), its effect, and the default behavior, adding semantic meaning well beyond the bare schema enum.
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 a specific verb ('Erase') and a precise resource ('cached workspace and item name-to-UUID mappings'), making the tool's function immediately clear. It is distinct from siblings like clear_table because it targets name-resolution cache entries, not table data.
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 explicit guidance on when to use this tool versus alternatives, nor any conditions or exclusions. It explains what the tool does and the scope options, but usage context (e.g., 'use when cached mappings are stale') is left unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_tableA
Truncate a SQL table (remove all rows, keep structure).
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
The service rejects SQL Analytics Endpoints with a ToolError.
CAUTION: This is a destructive, irreversible operation. All rows will be permanently deleted. The table structure and schema are preserved. Confirm with the user before calling.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses destructive irreversible nature, structure preservation, and platform restrictions. No contradictions.
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?
Well-structured with clear main action, caution, and args list. Front-loaded and every sentence adds value; no unnecessary text.
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 3 parameters and no annotations, description covers all aspects: function, constraints, caution, parameter guidance. Complete for agent to use correctly.
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, the description explains all three parameters: workspace, item (warehouse), and qualified_name with example. Provides meaning beyond schema.
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?
Description clearly states it truncates a SQL table (removes all rows, keeps structure). Distinct from sibling tools like delete_table, clone_table, etc.
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?
Explicitly states only supported on Fabric Data Warehouses, not SQL Analytics Endpoints, and provides caution for destructive irreversible operation, advising user confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_tableA
Create a zero-copy clone of a table using CREATE TABLE β¦ AS CLONE OF β¦.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID.
source: Qualified source table name, e.g. dbo.sales.
new_table: Qualified name for the new cloned table, e.g. dbo.sales_clone.
at: Optional ISO-8601 UTC timestamp for a point-in-time clone,
e.g. 2024-05-20T14:00:00. Must be within the data-retention
window (30 days by default). When omitted, the clone reflects the
current state of the source table.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| item | Yes | ||
| source | Yes | ||
| new_table | Yes | ||
| workspace | Yes |
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, the description carries the disclosure burden, and it does disclose the key behavioral traits: zero-copy semantics, point-in-time behavior, the 30-day retention window, and default to current state when `at` is omitted. It does not cover permissions or failure behavior, but the essential operational traits are present.
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 front-loaded with the core purpose, followed by the essential platform caveat and an Arg list that uses compact line-per-parameter formatting. No wasted words; the structure makes scanning easy.
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?
The description covers purpose, platform restriction, and all parameter semantics, and an output schema exists so return values need not be described. It omits edge-case behavior such as whether `new_table` must not already exist, but the overall calling context is sufficiently 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 coverage is 0%, but the Args block fully compensates: workspace/item are clarified as name or GUID, source/new_table get qualified-name examples, and `at` gets an ISO-8601 format, a retention-window constraint, and default behavior. This is more useful than a typical schema description.
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 opening line names a specific operation ('Create a zero-copy clone of a table') and the exact SQL construct used (`CREATE TABLE β¦ AS CLONE OF β¦`). This clearly separates it from sibling table tools like create_table or create_empty_table, even without naming them.
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 gives a clear platform constraint ('Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints)'), which helps an agent avoid misuse. However, it never explicitly directs when to choose clone_table over create_table/create_empty_table/import_table_from_url; the usage is implied by the 'zero-copy clone' wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_table_rowsA
Return the total row count of a table via SELECT COUNT_BIG(*).
Works on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
as_of: Optional ISO-8601 UTC timestamp for a point-in-time (time-travel)
count. When supplied the query uses OPTION (FOR TIMESTAMP AS OF ...).
Omit to count the latest data.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| as_of | No | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 behavioral disclosure burden. It reveals the exact query mechanism (`SELECT COUNT_BIG(*)`), the time-travel behavior via `OPTION (FOR TIMESTAMP AS OF ...)`, and the supported platforms. This is meaningful behavioral context beyond the bare input schema, though it could go further on performance or permission 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 well-structured and front-loaded with the core purpose. The Args section is compact and every line adds necessary informationβparameter meanings, format examples, and time-travel behavior. No filler 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?
The description covers all parameters, supported platforms, and optional time-travel behavior, which is sufficient for a fairly simple count tool. An output schema exists, so return-value details need not be described. It stops short of explicitly addressing the sibling `count_view_rows` case, which would have made it fully 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 fully compensates. Every parameter is explained with its meaning and format: `workspace` as name/GUID, `item` as warehouse or SQL endpoint name/GUID, `qualified_name` with a `dbo.sales` example, and `as_of` with ISO-8601 semantics and exact query behavior. This is strong value beyond the schema.
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 a specific actionβreturn the total row count of a tableβand the exact SQL mechanism (`SELECT COUNT_BIG(*)`). It is unambiguous about the resource type (table) but does not explicitly distinguish itself from the sibling `count_view_rows`, so it misses full sibling 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 gives useful context: it works on both Fabric Data Warehouses and SQL Analytics Endpoints, and it explains when to use or omit the `as_of` parameter for time-travel counts. However, it does not provide explicit guidance on when to use this tool versus alternatives like `count_view_rows` or `read_table`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_view_rowsA
Return the total row count of a view via SELECT COUNT_BIG(*).
Works on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
as_of: Optional ISO-8601 UTC timestamp for a point-in-time (time-travel)
count. When supplied the query uses OPTION (FOR TIMESTAMP AS OF ...).
Omit to count the latest data.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| as_of | No | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description carries the full behavioral burden. It discloses the exact SQL mechanism (COUNT_BIG(*)) and the OPTION (FOR TIMESTAMP AS OF ...) behavior when as_of is supplied. This gives the agent meaningful insight beyond the schema.
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 compact and well-structured: a one-line purpose, a compatibility note, then a clean Args block. Every sentence contributes to correct invocation, with no filler.
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?
An output schema exists, so lacking return-value prose is acceptable. The description covers platform compatibility, all parameters, and optional time-travel usage. It does not mention alternatives like count_table_rows, but that is a minor completeness gap given the tool's simplicity.
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 Args section fully compensates. Every parameter is explained with type guidance and an example for qualified_name. The optional as_of parameter's format and effect are explicitly described.
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?
States with a specific verb and resource: 'Return the total row count of a view via SELECT COUNT_BIG(*).' The view scoping clearly distinguishes it from count_table_rows and other view tools.
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?
Provides clear context on valid targets: 'Works on both Fabric Data Warehouses and SQL Analytics Endpoints.' It also clarifies when as_of should be used or omitted. It does not explicitly name sibling alternatives, but the scope is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_empty_tableA
Create an empty table from an explicit column spec (DDL only, no data).
Builds CREATE TABLE [schema].[table] (col TYPE [NULL|NOT NULL], β¦) from
the supplied column definitions. No data is read or inserted; this is a
pure DDL operation.
Server-side file access is unreliable in MCP deployments, so CSV/Parquet
inference is not available via this tool β use the fabric-dw tables create --from-parquet or --from-csv CLI commands instead.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
When cluster_by is supplied, each column must appear in columns.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
columns: List of column definitions, each a dict with:
name (str) β column identifier;
sql_type (str) β Fabric-DW T-SQL type, e.g. "INT", "VARCHAR(255)";
nullable (bool, optional, default true) β whether the column allows NULL.
cluster_by: Optional list of column names for the CLUSTER BY clause
(up to 4). Each name must appear in columns.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| columns | Yes | ||
| workspace | Yes | ||
| cluster_by | No | ||
| qualified_name | Yes |
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, the description carries the behavioral disclosure burden, and it does so well: it states this is a pure DDL operation, that no data is read or inserted, and that server-side file access is unreliable in MCP deployments. It also discloses the cluster_by constraint. It falls short of a 5 only because it doesn't mention common behavioral edge cases such as behavior when the table already exists or required permissions.
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 front-loaded with a one-sentence summary, then provides a compact DDL template, relevant limitations, platform support, and an Arg list. Every sentence adds useful information: the server-side access note explains why inference is excluded, and the constraint about cluster_by prevents misuse. There is no filler or repetition.
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 five parameters, no annotations, and an output schema, the description covers the essential behavior, parameter semantics, constraints, supported platforms, and alternatives. An agent has enough context to decide whether to invoke it, construct valid arguments, and know what to expect. The output schema relieves the description of needing to explain return values.
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?
Even though the schema has 0% description coverage, the description fully documents all five parameters, including workspace/item as name or GUID, qualified_name as a dot-separated table name with an example, columns as dicts with name, sql_type, and nullable defaulting to true, and cluster_by as optional with a max of 4 and a validity constraint. This goes well beyond the bare schema.
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 opens with a specific verb and resource: 'Create an empty table from an explicit column spec (DDL only, no data).' It clearly separates this tool from general table creation by emphasizing that it builds a CREATE TABLE statement and reads or inserts no data. It also differentiates from CSV/Parquet-inference workflows by explicitly disclaiming them.
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 gives explicit when-not guidance: CSV/Parquet inference is not available here, and users are directed to the fabric-dw tables create --from-parquet/--from-csv CLI commands instead. It also states the platform constraint: 'Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).' This provides clear usage boundaries and a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_functionA
Create a new T-SQL user-defined function.
Scalar UDFs and inline TVFs are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.
CAUTION: body is executed verbatim as DDL. Ensure the body matches the
user's intent before calling this tool.
The body should include the parameter list, RETURNS clause, and function body
(everything that follows CREATE FUNCTION [schema].[name]).
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input.
body: The function body (parameter list, RETURNS clause, and implementation).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so the description carries full burden. It discloses that 'body' is executed verbatim as DDL and explains what the body should include. This is critical behavioral context. However, it omits prerequisites (e.g., permissions) or error conditions like if function already exists.
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?
Description is well-structured: starts with purpose, then context about preview features, a CAUTION, and parameter details. The caution and example add value without excessive verbosity. Slightly dense but appropriate for the complexity.
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 that an output schema exists, return values are not needed. The description covers what the tool does, behavioral warnings, and parameter semantics. It does not discuss error handling or confirmation, but for a creation tool this is adequate.
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%, but the description provides detailed explanations for all four parameters in the Args section. It includes examples (e.g., 'qualified_name' with 'dbo.fn_clean_input') and clarifies the content of 'body'. This fully compensates for the missing schema descriptions.
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?
Description clearly states 'Create a new T-SQL user-defined function' with specific verb and resource. It distinguishes from siblings like 'create_procedure' and 'create_view' by focusing on functions, and adds context about supported environments (Fabric DW, Data Warehouses, SQL Analytics Endpoints).
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?
Provides context about preview features and a CAUTION about executing DDL verbatim, but does not explicitly compare to similar creation tools (e.g., when to use create_procedure instead). No exclusion or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_procedureA
Create a new stored procedure.
Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.
CAUTION: body is executed verbatim as DDL. Ensure the body
matches the user's intent before calling this tool.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.
body: The procedure body (the AS β¦ section).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full responsibility. It prominently warns that the body is executed verbatim as DDL and instructs the agent to verify intent before callingβthis is a critical behavioral disclosure. It does not mention permissions or what happens if the procedure already exists, but the most significant risk is explicitly surfaced.
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 compact and well-structured: a clear purpose statement, a brief platform-support note, a high-visibility caution, and a straightforward parameter list. Every sentence earns its place, and the most important warning is placed before the parameter details.
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?
For a creation tool with no annotations and an existing output schema, the description covers the core essentials: what it does, where it works, what each parameter means, and the major execution hazard. It omits permission requirements and behavior if the procedure already exists, but these are secondary to the primary safety concern already disclosed.
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 provides only type and title for each parameter, so the Args section is essential. It adds concrete meaning by explaining workspace and item as names or GUIDs, providing a dot-separated example for qualified_name ('dbo.usp_load'), and clarifying that body contains the 'AS β¦' section. This fully compensates for the 0% schema description 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 opens with 'Create a new stored procedure,' which names the specific action and resource. It also distinguishes the tool from sibling operations like update_procedure, drop_procedure, and get_procedure by the verb, and clarifies the supported environments (Fabric Data Warehouses and SQL Analytics Endpoints).
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 clear contextual guidance by stating which platforms support stored procedures, helping the agent determine when the tool is applicable. It does not explicitly contrast with alternatives like update_procedure or list_procedures, but the verb 'create' and the overall context make the intended usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_restore_pointB
Create a restore point for a warehouse at the current timestamp.
Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. name: Optional display name (max 128 chars). description: Optional description (max 512 chars).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| warehouse | Yes | ||
| workspace | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only mentions the creation action and parameter constraints, but lacks disclosure of side effects, required permissions, reversibility, or any behavioral traits beyond the basic operation. The agent has no insight into whether this is a safe, destructive, or constrained operation.
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 concise: one sentence for purpose followed by a clear parameter list. Every sentence is necessary and there is no extraneous text. The structure is clean 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 that the tool has 4 parameters (2 required) and an output schema (though not displayed), the description provides enough to understand the core operation and parameter inputs. It could be enhanced with more context about the purpose and usage of restore points, but it is largely sufficient for an agent to invoke the tool correctly.
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. It explains required vs optional parameters and adds constraints (max 128 chars for name, max 512 for description). However, it does not clarify the meaning or effect of a restore point, nor how the parameters influence behavior. The description adds some value but not deep 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 action ('Create a restore point') and the resource ('for a warehouse at the current timestamp'). It is specific and distinguishes from sibling tools like delete_restore_point, get_restore_point, and list_restore_points.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical scenarios, or when not to use it. The description merely states what the tool does without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_schemaA
Create a new SQL schema on a warehouse or SQL Analytics Endpoint.
Both Fabric Data Warehouses and SQL Analytics Endpoints support
CREATE SCHEMA per the Microsoft Fabric T-SQL reference.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. name: The schema name. Must be a valid SQL identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| name | Yes | ||
| workspace | Yes |
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 full burden. It does not disclose potential errors (e.g., schema name conflicts), permission requirements, or side effects beyond stating it creates a schema.
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 concise, front-loaded with the main purpose, and includes an Args section. No superfluous words.
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 presence of an output schema (so return values are covered), the description covers purpose and parameters but lacks detail on error cases, prerequisites, or behavior in 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?
Despite 0% schema description coverage, the description adds meaning for all three parameters: workspace and item as name/GUID, name as a valid SQL identifier. This compensates for the lack of schema descriptions.
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 (create), the resource (SQL schema), and the target (warehouse or SQL Analytics Endpoint). It effectively distinguishes from sibling tools like delete_schema or list_schemas.
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 context about supported platforms and T-SQL reference, but does not explicitly specify when to use this tool versus alternatives (e.g., create_table, create_view) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_security_policyA
Create a row-level security policy.
Executes CREATE SECURITY POLICY with one or more FILTER
predicates. There is no predicate-type option (#966): Fabric Data
Warehouse supports FILTER predicates only. Each entry in predicates
must include:
fn_schema: schema of the predicate functionfn_name: name of the predicate functionfn_args: list of column names to pass to the functiontable_schema: schema of the target tabletable_name: name of the target table
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
policy_name: Qualified policy name ("schema.name" or "name").
predicates: List of predicate definitions (see above).
state: Initial policy state -- True to enable, False to disable
(default: True).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| state | No | ||
| workspace | Yes | ||
| predicates | Yes | ||
| policy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It details the SQL operation, predicate requirements, and state parameter behavior. However, it does not disclose permission requirements or consequences of creating duplicate policies.
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?
Well-structured: one-line summary, predicate details, then argument list. Front-loaded with the action. Slightly verbose but every sentence is informative.
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 output schema exists, return values are covered. The description explains the creation process well, but misses edge cases like duplicate policy names and fails to explicitly mention Fabric Data Warehouse context.
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 coverage is 0%, so the description fully compensates by explaining each parameter: workspace, item, policy_name, predicates (with required subfields), and state (boolean with default). Adds significant value beyond the schema.
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 it creates a row-level security policy using 'CREATE SECURITY POLICY'. It specifies the predicate type limitation (FILTER only) and the required fields. This distinguishes it from siblings like add_security_predicate and set_security_policy_state.
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 explains when to use the tool (to create a new policy) and provides detailed parameter structure. It implicitly differentiates from siblings, but lacks explicit exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotA
Create a new warehouse snapshot.
Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. name: Display name for the new snapshot. description: Optional description. snapshot_dt: Optional ISO-8601 datetime string for the snapshot point-in-time. Naive datetimes (no timezone offset) are interpreted as UTC.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| warehouse | Yes | ||
| workspace | Yes | ||
| description | No | ||
| snapshot_dt | No |
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, the description must cover behavioral traits. It adds a detail about snapshot_dt timezone handling (naive datetimes as UTC). However, it does not disclose side effects, permission requirements, or immutability of snapshots.
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 concise, front-loads the purpose, and lists parameters efficiently. Every line adds value without 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?
The description covers input parameters adequately but lacks broader context about snapshot lifecycle, prerequisites (e.g., warehouse existence), or post-creation effects. Although output schema exists, 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?
Schema description coverage is 0%, so the description fully explains parameter meanings. It specifies that workspace/warehouse accept name or GUID, names the optional parameters, and gives format and timezone interpretation for snapshot_dt.
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 begins with 'Create a new warehouse snapshot', which is a specific verb and resource. It clearly states the action and object, distinguishing it from related tools like create_restore_point.
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 such as create_restore_point or list_snapshots. There is no context about prerequisites or expected use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sql_poolA
Add a new custom SQL pool to a workspace.
Args:
workspace: Workspace name or GUID.
name: Pool name (must be unique within the workspace).
max_percent: Max resource percentage (1-100).
is_default: Whether this pool is the default pool. Defaults to false.
optimize_for_reads: Enable read optimisation. Defaults to true.
classifier_type: Classifier type (e.g. "Application Name").
classifier_values: List of classifier values (e.g. application names).
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| workspace | Yes | ||
| is_default | No | ||
| max_percent | Yes | ||
| classifier_type | No | ||
| classifier_values | No | ||
| optimize_for_reads | No |
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 available, the description carries the behavioral transparency burden. It discloses that workspace admin role is required and that the API is beta/preview, which is useful context. It does not describe side effects beyond creating the pool, such as billing impact, reversibility, or validation behavior, but the permission and stability warnings add meaningful 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 well-organized: a one-sentence purpose, a clean Arg list with per-parameter guidance, and a short final line for permissions and API status. Every sentence provides useful information without fluff 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 seven parameters, no annotations, and zero schema description coverage, the description covers all parameters, defaults, permissions, and beta API risk. The main gap is the absence of usage-routing guidance compared to related pool/warehouse tools, and it does not clarify what a returned result looks like, though an output schema exists. Overall it is nearly complete for a create operation.
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, and it does. Every parameter is explained with additional context: workspace accepts name or GUID, name must be unique, max_percent has a 1-100 range, defaults are stated for is_default and optimize_for_reads, and classifier_type/classifier_values include concrete examples. This goes well beyond the schema alone.
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 opens with a specific verb and object: 'Add a new custom SQL pool to a workspace.' This clearly conveys a create-type operation and the target resource. It does not explicitly differentiate from related sibling tools like create_warehouse, but the phrase 'custom SQL pool' narrows the scope.
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?
No explicit guidance is given about when to use this tool versus alternatives such as create_warehouse, list_sql_pools, or update_sql_pool. The description states the admin role requirement and beta API status, which are prerequisites and risk warnings, but does not provide when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_statisticsA
Create a single-column statistic on a table.
Only supported on Data Warehouses (SQL Analytics Endpoints are read-only). Only single-column statistics are supported (Fabric limitation).
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_table: Qualified table name, e.g. dbo.sales.
column: Column name to build the statistic on.
stat_name: Name for the new statistic.
fullscan: When True (default), use WITH FULLSCAN.
Ignored when sample_percent is provided.
sample_percent: Sample percentage (1-100). When provided, overrides fullscan
and uses WITH SAMPLE n PERCENT.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| column | Yes | ||
| fullscan | No | ||
| stat_name | Yes | ||
| workspace | Yes | ||
| sample_percent | No | ||
| qualified_table | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It explains the Fabric single-column limitation, the SQL Analytics Endpoints read-only restriction, and the fullscan/sample_percent override interaction. It does not discuss permissions, overwrite behavior, or failure modes, but it covers the most material behavioral constraints.
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 front-loaded with the core purpose and key limitations, then organized into a clear Args block. Each parameter receives one concise line. The slight repetition of the SQL Analytics Endpoints restriction is acceptable because it appears at both overview and parameter-specific levels.
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?
For a create operation, the description covers platform support, supported statistic type, parameter semantics, and scan/sample behavior. An output schema exists, so return-value details are not required here. The remaining gaps, such as duplicate-handling and permission requirements, are minor compared to the completeness of the provided context.
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. It documents all seven parameters, adds practical meaning (workspace name or GUID, warehouse selectivity, qualified table example, sample_percent overrides fullscan), and clarifies how fullscan and sample_percent interact beyond the raw schema.
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 opens with a specific verb and resource: 'Create a single-column statistic on a table.' It immediately distinguishes itself from sibling statistics tools (list/update/delete/show) by stating the single-column scope and the Data Warehouse target. The purpose is unambiguous.
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 gives clear when/where context: only Data Warehouses are supported, SQL Analytics Endpoints are read-only and rejected, and only single-column statistics are possible. It does not name alternative tools such as update_statistics or show_statistics, so it falls just short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tableA
Create a new SQL table via CTAS (CREATE TABLE AS SELECT).
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
The service rejects SQL Analytics Endpoints with a ToolError.
CAUTION: select_body is executed verbatim as DDL on the warehouse.
Ensure the body matches the user's intent before calling this tool.
select_body must be a single read-only SELECT or WITH (CTE)
statement. The guard is always on and fail-closed: a write keyword
(DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is
rejected, even inside a string literal or quoted identifier. If a
legitimate query body contains a write keyword (e.g. a column alias
'DELETE'), rewrite the expression to avoid the keyword.
When cluster_by is supplied, the DDL becomes
CREATE TABLE β¦ WITH (CLUSTER BY ([c1], [c2])) AS SELECT β¦.
Column existence is not validated for CTAS because the result columns
come from the SELECT and are not known ahead of time.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
select_body: Single read-only SELECT or WITH (CTE) statement for the
CTAS source. Write keywords and semicolons are rejected
fail-closed, even inside string literals or quoted identifiers.
cluster_by: Optional list of column names for the CLUSTER BY clause
(up to 4).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| cluster_by | No | ||
| select_body | Yes | ||
| qualified_name | Yes |
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, the description carries the full behavioral disclosure burden and does so thoroughly. It reveals that select_body is executed verbatim as DDL, that the guard is fail-closed and rejects write keywords and semicolons even inside literals, and that column existence is not validated for CTAS. It also explains the exact DDL transformation when cluster_by is supplied.
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 long but every section earns its place given the high-risk DDL execution. The key caution is front-loaded early, followed by the guard mechanics and then the parameter details. The warning about write keywords is repeated briefly in Args but that repetition reinforces a safety-critical point rather than wasting space.
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?
The tool combines DDL execution, platform restrictions, and a security guard, all of which are disclosed. The description explains the CTAS behavior, the fail-closed validation, the endpoint rejection, the cluster_by DDL shape, and the column validation caveat. Since an output schema exists, return-value details are not required, and nothing essential is missing.
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 the bare input schema, and it does. Each parameter (workspace, item, qualified_name, select_body, cluster_by) gets a meaningful explanation, including the example for qualified_name, the single-read-only-SELECT constraint, and the cluster_by limit of 4 columns.
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 a specific verb and resource: 'Create a new SQL table via CTAS (CREATE TABLE AS SELECT).' It clearly distinguishes this from siblings like create_empty_table by emphasizing the SELECT-based creation method. The Fabric-specific scope further sharpens what the tool does.
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 explicitly states where the tool is supported (Fabric Data Warehouses) and where it is not (SQL Analytics Endpoints), including the resulting ToolError behavior. It also explains when select_body is acceptable and warns about the guard, giving clear context for use. It does not name a specific alternative tool for non-CTAS table creation, but the exclusion is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_viewA
Create a new SQL view.
CAUTION: select_body is executed verbatim as DDL. Ensure the body
matches the user's intent before calling this tool.
select_body must be a single read-only SELECT or WITH (CTE)
statement. The guard is always on and fail-closed: a write keyword
(DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is
rejected, even inside a string literal or quoted identifier. If a
legitimate view body contains a write keyword (e.g. a column alias
'DELETE'), rewrite the expression to avoid the keyword.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
select_body: Single read-only SELECT or WITH (CTE) statement for the
view body. Write keywords and semicolons are rejected
fail-closed, even inside string literals or quoted identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| select_body | Yes | ||
| qualified_name | Yes |
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 fully discloses key behaviors: select_body is executed as DDL, the guard is always on and fail-closed, and specific keywords are rejected even inside literals. This equips the agent to handle the tool safely.
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 well-structured with a purpose line, caution, detailed constraints, and argument descriptions. However, the argument descriptions partially repeat the guard mechanism from the caution, introducing slight redundancy. It remains mostly concise and front-loaded.
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 existence of an output schema, return values don't need description. The description covers the creation action, the critical guard, and parameter details. It lacks explicit error handling or prerequisites (e.g., workspace/item must exist), but these are secondary for an AI agent. Overall, it is sufficiently 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?
Despite 0% schema description coverage, the description compensates by providing clear explanations for each parameter: workspace (name or GUID), item (warehouse or SQL endpoint), qualified_name (dot-separated view name), and select_body (with constraints). This adds significant meaning beyond the schema.
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 'Create a new SQL view.' as the first line, specifying the verb (create) and resource (SQL view). This distinguishes it from sibling tools like drop_view, update_view, or read_view.
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 explicit warnings about executing select_body verbatim as DDL, specifies that it must be a single read-only SELECT or WITH statement, and details the guard mechanism that rejects write keywords and semicolons. It also gives guidance on rewriting legitimate bodies that contain write keywords.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_warehouseA
Create a new Warehouse in a workspace.
Args: workspace: Workspace name or GUID. name: Display name for the new warehouse. collation: Optional default collation for the new warehouse. Fabric Data Warehouse supports a fixed set of collations. Supported values include:
- ``Latin1_General_100_BIN2_UTF8`` (recommended default)
- ``Latin1_General_100_CI_AS_KS_WS_SC_UTF8``
- ``Latin1_General_CI_AS``
- ``SQL_Latin1_General_CP1_CI_AS``
When omitted, the workspace default collation is used.
Supplying an unsupported value will cause the Fabric API to
return an error. See the Fabric documentation for the full
list of supported collations.
description: Optional description for the new warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| collation | No | ||
| workspace | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It only says 'Create a new Warehouse' without disclosing side effects, authorization needs, or error cases. Minimal 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 efficient: front-loaded purpose, then parameter details. The collation list is necessary and well-structured. Slightly verbose but justified.
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?
Covers parameters well but lacks behavioral context (e.g., workspace existence, permissions). Output schema exists but is not referenced; some gaps remain for a creation 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?
Schema coverage is 0%, but the description explains all four parameters thoroughly, including collation values and defaults. This adds significant meaning beyond the schema.
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 'Create a new Warehouse in a workspace', which is a specific verb and resource. It distinguishes from sibling tools like delete_warehouse, get_warehouse, and list_warehouses.
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?
No guidance on when to use this tool versus alternatives, no prerequisites or limitations mentioned. For example, it does not say when to use create vs rename or restore.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_restore_pointA
Delete a user-defined restore point.
System-created restore points cannot be deleted.
Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes | ||
| restore_point_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It notes that only user-defined restore points can be deleted, but lacks details on side effects, permissions required, or the 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 very concise, front-loading the main purpose, then adding a rule, followed by parameter explanations. No wasted sentences.
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?
The description is adequate for a delete operation with 3 simple parameters and an output schema present, but it does not mention the return value or error cases. Given the context, it meets the minimum but could be more 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?
With 0% schema description coverage, the description compensates by explaining each parameter: workspace, warehouse, and restore_point_id, including type hints (name or GUID, ID string). This adds meaning beyond the schema.
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 'Delete a user-defined restore point', providing a specific verb and resource. It distinguishes from sibling tools like create_restore_point, get_restore_point, and list_restore_points.
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 includes an exclusion rule: 'System-created restore points cannot be deleted.' This gives clear guidance but does not explicitly mention when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_schemaA
Drop a SQL schema from a warehouse.
CAUTION: This is a destructive, irreversible operation. The schema will
be permanently deleted. If the schema still contains tables or views,
the operation will fail unless cascade is True.
CAUTION: When cascade is True, all tables and views in the schema
are permanently deleted along with their data. Confirm explicitly with
the user before calling with cascade=True.
Both Fabric Data Warehouses and SQL Analytics Endpoints support
DROP SCHEMA per the Microsoft Fabric T-SQL reference.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
name: The schema name to drop.
cascade: When True, drop all tables and views in the schema first.
Defaults to False.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| name | Yes | ||
| cascade | No | ||
| workspace | Yes |
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 fully carries the behavioral disclosure burden, and it does so exceptionally. It warns that the operation is destructive and irreversible, that the schema is permanently deleted, that non-empty schemas fail unless cascade is true, and that cascade deletes all tables, views, and data. It also instructs the agent to explicitly confirm with the user before calling with cascade=True.
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 well-structured: a clear one-line action, prominent CAUTION warnings for destructive behavior, a supporting note about platform support, and a concise Args section. Every sentence contributes necessary information, and the most safety-critical details are front-loaded.
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 destructive nature and the absence of annotations, the description covers all essential context: what is deleted, when the operation fails, what cascade does, and the need for explicit user confirmation. The existence of an output schema reduces the need to describe return values, so no critical behavioral context is missing.
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 provides only names, types, and defaults, so parameter semantics are entirely absent from structured data. The description compensates by explicitly defining workspace, item, name, and cascade, including that workspace and item accept names or GUIDs, item refers to a warehouse or SQL Analytics Endpoint, and cascade controls whether contained tables and views are dropped first.
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 opens with a specific verb and resource: 'Drop a SQL schema from a warehouse.' It further disambiguates from siblings like drop_view and delete_warehouse by making clear that the target is a schema, and that both Fabric Data Warehouses and SQL Analytics Endpoints are supported.
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 clearly conveys when this tool applies: dropping schemas from supported Fabric data warehouse endpoints. It also explains failure conditions when tables/views exist and the need for cascade, which helps an agent decide whether this tool or a safer alternative is appropriate. It does not explicitly name sibling tools to exclude, but the resource-specific language makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_snapshotC
Delete a warehouse snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It does not mention irreversibility, required permissions, or effects on dependent objects, leaving the agent without critical safety information.
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 no redundant words. However, it could be expanded slightly to include essential context without becoming verbose.
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?
The tool has an output schema, but no return details are described. The description does not address the irreversible nature of deletion or the need for confirmation, making it incomplete for a destructive operation.
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%. The description only restates the parameter names (workspace, snapshot) without adding any meaning beyond what the schema provides.
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 'Delete a warehouse snapshot' clearly states the action (delete) and the resource (warehouse snapshot). It effectively distinguishes from siblings like create_snapshot and rename_snapshot.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., restore_warehouse_in_place, roll_snapshot_timestamp). No prerequisites or context for safe usage are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sql_poolA
Delete an SQL pool from a workspace.
Args: workspace: Workspace name or GUID. pool_name: Name of the pool to delete.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| pool_name | Yes | ||
| workspace | Yes |
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 must carry the behavioral burden. It does disclose the admin role requirement and the beta/preview API status, which is useful, but it does not mention whether deletion is permanent, whether dependent objects are affected, or any other side effects beyond the implied destructive action.
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 concise and well-structured: a one-sentence summary, a short Args list, and then relevant requirement notes. Every sentence adds information without waste.
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?
For a simple two-parameter delete operation, the description covers the core requirements: what is deleted, what parameters to provide, admin role, and API status. An output schema exists, so return-value documentation is not needed. It could add more about side effects, but the essentials are present.
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. It explains that workspace accepts a name or GUID and that pool_name is the pool to delete. This adds some meaning, though the parameter meanings are largely evident from their names.
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 ('Delete an SQL pool from a workspace') with a specific verb and resource. It is immediately distinguishable from sibling tools like delete_warehouse, and the resource type is unambiguous.
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?
No guidance is given about when to choose this tool versus alternatives such as delete_warehouse, or any conditions under which deletion is appropriate. The admin role requirement is a prerequisite, not a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_statisticsA
Drop a statistic via DROP STATISTICS.
CAUTION: This is a destructive, irreversible operation. Only supported on Data Warehouses (SQL Analytics Endpoints are read-only).
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_table: Qualified table name, e.g. dbo.sales.
stat_name: Name of the statistic to drop.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| stat_name | Yes | ||
| workspace | Yes | ||
| qualified_table | Yes |
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, the description carries full burden. It prominently warns 'This is a destructive, irreversible operation' and adds platform constraints (read-only SQL Analytics Endpoints) and the rejection case. This discloses the most important behavioral traits. It does not cover permissions, error behavior, or dependency conflicts, but for a destructive drop operation the core warning is present.
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 compact and well-organized: a one-line purpose, a two-line caution/constraint block, and a clean Args list. No filler; every sentence adds operational information. The destructive warning is front-loaded before the args.
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 four required parameters, zero schema descriptions, no annotations, and an output schema present, this description covers what the tool does, where it works, what is rejected, and what each argument means. The omission of return-value details is acceptable because an output schema exists. The warning and scope fully equip an agent to invoke it correctly.
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 and does. Each of the four required parameters gets a meaningful explanation: workspace (name/GUID), item (warehouse name/GUID, with SQL Analytics Endpoints rejected), qualified_table (with an example), and stat_name. This adds real semantic value the schema lacks.
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 opens with 'Drop a statistic via DROP STATISTICS', naming a specific verb ('Drop') and resource ('a statistic'), and equates it to the SQL command. This distinguishes it clearly from sibling tools like create_statistics, update_statistics, and list/show_statistics.
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?
It explicitly states the tool is 'Only supported on Data Warehouses (SQL Analytics Endpoints are read-only)' and later repeats that SQL Analytics Endpoints are rejected for the 'item' parameter. This gives clear context and a hard exclusion, though it does not explicitly name alternatives or say 'use this when you need to permanently remove a statistic' beyond the obvious purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tableA
Drop a SQL table.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
The service rejects SQL Analytics Endpoints with a ToolError.
CAUTION: This is a destructive, irreversible operation. The table and all its data will be permanently deleted. Confirm with the user before calling.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It clearly warns that the operation is destructive, irreversible, permanently deletes the table and all its data, and instructs the agent to confirm with the user. It also discloses the endpoint rejection behavior, which is valuable beyond basic intent.
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?
Front-loaded with a one-sentence purpose, then a short constraint paragraph, a caution warning, and a compact Args list. No filler or redundancy; every sentence earns its place.
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?
For a destructive tool with no annotations and no schema descriptions, it covers what the tool does, where it works, what fails, the safety warning, and every parameter. The output schema exists to handle return shape, so nothing essential is missing.
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%, but the description documents all three parameters with real meaning: workspace name/GUID, warehouse name/GUID with endpoint rejection, and qualified_name format with the example 'dbo.sales'. This adds substantial value beyond the bare schema.
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?
Opens with 'Drop a SQL table.' β a specific verb and resource that immediately distinguishes it from sibling delete/drop tools like delete_warehouse, drop_view, and drop_procedure. The title and field names reinforce the intent.
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?
States an explicit constraint: only supported on Fabric Data Warehouses, not SQL Analytics Endpoints, and even discloses that the service rejects endpoints with a ToolError. It does not explicitly name alternative tools for non-table objects, but the resource scope plus the exclusion is enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_warehouseC
Delete a Warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It only states 'Delete' with no mention of irreversibility, permissions, side effects on dependent objects, or whether it requires the warehouse to be idle. This is insufficient for safe use.
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 short (5 words), but this is not efficient conciseness; it is under-specification. It fails to earn its place by omitting critical information that would be expected in a minimal viable description.
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?
The tool has an output schema, but the description does not hint at return values. It lacks details on prerequisites, side effects, or error conditions. For a delete operation with two required parameters, the description is severely incomplete.
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%, and the description provides no explanation of the 'workspace' and 'warehouse' parameters. Although the parameter names are self-explanatory, the description adds no semantic value beyond what the schema already implies.
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 verb 'Delete' and the resource 'Warehouse', making the basic purpose clear. However, it is a tautology of the tool name and lacks any scope or distinguishing details from sibling tools like restore_warehouse_in_place or rename_warehouse.
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?
No guidance on when to use this tool versus alternatives. It does not specify prerequisites (e.g., warehouse must exist), when not to use it, or any order of operations relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deny_permissionA
Deny permissions on a securable to a principal.
Executes DENY <permissions> ON <scope> TO <principal>.
Blocked by FABRIC_MCP_READONLY. Does NOT require
FABRIC_MCP_ALLOW_DESTRUCTIVE.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
permissions: Comma-separated permission tokens (e.g. "SELECT").
principal: Principal name to deny (Entra UPN, app GUID, or role name).
scope: Securable class -- "DATABASE" (default), "SCHEMA", or
"OBJECT".
schema: Schema name (required when scope is "SCHEMA").
object_name: Qualified object name <schema>.<object> (required when
scope is "OBJECT").
columns: Optional list of column names for column-level security
(OBJECT scope only; permissions must be SELECT, UPDATE, or
REFERENCES). Pass None (omit) for no column restriction.
Passing an empty list raises a ToolError.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| scope | No | DATABASE | |
| schema | No | ||
| columns | No | ||
| principal | Yes | ||
| workspace | Yes | ||
| object_name | No | ||
| permissions | Yes |
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. It discloses that the tool executes a SQL DENY command, lists preconditions (blocked by readonly), and provides constraints on parameters (e.g., columns only for OBJECT scope with specific permissions, empty list raises error). It could be improved by noting return value or idempotency.
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 well-structured with a brief intro followed by a parameter list. The parameter descriptions are concise but comprehensive. Minor repetition could be trimmed, but overall it is efficient and front-loaded.
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 8 parameters, 4 required, and no schema descriptions, the description covers all necessary information for usage, including constraints and examples. It does not describe the output schema, but that exists separately. Overall, it is complete enough for an AI agent to invoke correctly.
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 add meaning. It does so thoroughly, explaining each parameter's purpose, default values, required conditions, and constraints (e.g., schema required when scope is SCHEMA, columns limited to certain permissions). This far exceeds what the schema alone provides.
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 ('Deny permissions') and the target ('securable to a principal'), and provides the SQL equivalent. This is a specific verb-resource pair that distinguishes it from siblings like grant_permission and revoke_permission.
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 mentions that the tool is blocked by FABRIC_MCP_READONLY and does not require FABRIC_MCP_ALLOW_DESTRUCTIVE, providing some behavioral context. However, it does not explicitly guide when to use deny vs. grant/revoke, nor does it mention prerequisites like having appropriate permissions to execute the denial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_auditA
Disable SQL auditing on a warehouse or SQL analytics endpoint.
CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
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 fully carries the behavioral disclosure burden. It explicitly details the eventual-consistency mechanism, the risk of silent reversion, and the recommended spacing of writes. This is excellent 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 concise (five sentences) with a clear structure: purpose statement, caution block, and parameter list. Every sentence adds valueβno fluff 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?
Although an output schema exists (not shown), the description covers the essential action and critical behavioral nuance. It does not mention what the tool returns or failure cases, but the presence of an output schema mitigates the need for that in the description. The tool's context among siblings (e.g., enable_audit) is not explicitly addressed, but the core purpose is 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 coverage is 0%, so the description must compensate. It adds value by clarifying that both 'workspace' and 'warehouse' accept names or GUIDs, which is not evident from the schema (which only provides titles). This is helpful but could be more detailed (e.g., no default values or examples).
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 'Disable SQL auditing' on a defined resource ('a warehouse or SQL analytics endpoint'). It uses a strong verb-noun combination that distinguishes it from sibling tools like enable_audit and get_audit_settings.
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 warns about eventual consistency and silent reversion, providing a crucial 'when to use with caution' guideline. However, it lacks explicit direction on when to prefer this tool over alternatives (e.g., enable_audit) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_sql_poolsA
Disable custom SQL Pools for a workspace, preserving pool configuration.
Re-enabling with enable_sql_pools restores the previously saved configuration.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
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, the description carries the behavioral burden and does this well by disclosing that configuration is preserved, re-enabling restores it, admin role is required, and the API is beta/preview. It doesn't describe effects on currently running SQL pools or idempotency, but the key behavioral traits are communicated.
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 compact and front-loaded with the core action. Each line earns its place: preserving configuration, re-enabling via the sibling tool, admin requirement, and beta API warning. There is no filler.
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?
For a low-complexity tool with one required parameter and an output schema present, the description covers prerequisites, reversibility, and API stability. The main gap is the missing workspace identifier format, which prevents fully confident invocation without elsewhere.
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%, and the only parameter 'workspace' is a bare string. The description repeats the word 'workspace' but does not clarify whether it expects a workspace ID, name, path, or how to format it. Given the low coverage, the description needed to compensate with parameter semantics and did not.
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 a specific action ('Disable custom SQL Pools for a workspace') with a precise resource and scope. It also differentiates itself from enable_sql_pools and implies a non-destructive distinction from delete_sql_pool by noting configuration is preserved.
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 clear context: it is an admin-only, reversible operation, and it explicitly names enable_sql_pools as the re-enabling counterpart. It does not explicitly say 'use this instead of delete_sql_pool' or when not to use it, but the context is strong enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_column_maskA
Remove a dynamic data mask from a column.
Executes ALTER TABLE ... ALTER COLUMN ... DROP MASKED.
This is a permanently destructive operation -- the mask is removed from the
column and unmasked values become visible to all users who query the column.
Requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. table_schema: Schema name of the target table. table_name: Name of the target table. column_name: Name of the column whose mask to remove.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| table_name | Yes | ||
| column_name | Yes | ||
| table_schema | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 clearly labels the operation as 'permanently destructive' and warns that unmasked values become visible. It also notes the environment variable requirement. This is good transparency for a destructive 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 concise with a clear purpose sentence, followed by the SQL invocation, destructive warning, requirement, and parameter list. Every sentence adds value without redundancy. Front-loaded with the most important info.
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 (5 required params, destructive operation, no annotations), the description covers the essential behavior and prerequisites. It does not explain return values, but an output schema exists. Missing details like error conditions are acceptable for this level of detail.
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. It lists each parameter with brief clarification (e.g., 'Workspace name or GUID', 'Warehouse or SQL endpoint name or GUID'). This adds minor meaning beyond the schema titles, but does not explain constraints or formats.
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 explicitly states 'Remove a dynamic data mask from a column,' which is a specific verb and resource. It clearly distinguishes from sibling tools like set_column_mask (sets a mask) and list_masked_columns (lists masks).
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 mentions the underlying SQL command and requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1, but does not explicitly state when to use this tool versus alternatives like set_column_mask. Usage context is implied but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_functionA
Drop a T-SQL user-defined function.
Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input.
if_exists: When true, a missing function is treated as a no-op and
{"dropped": false} is returned instead of raising an error.
Defaults to false.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| if_exists | No | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 behavioral disclosure burden. It discloses the if_exists no-op behavior, the exact return payload {'dropped': false} for missing functions, and the default of false. It does not discuss irreversibility or permission requirements, but 'drop' inherently signals destruction and the added behavioral specifics are valuable.
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 compact and well-organized. The action statement comes first, followed by a short platform note and a clean Args list. Every sentence adds necessary information without repetition or filler.
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?
The description covers the tool's purpose, supported environments, all parameter semantics, and the key edge case (if_exists). Since an output schema exists, the success return shape does not need to be spelled out in the description, though a brief note about the non-if_exists success response would have been slightly more 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%, but the description fully documents all four parameters: workspace is a name or GUID, item is a Warehouse or SQL Analytics Endpoint, qualified_name is a dot-separated qualified function name with a concrete example, and if_exists is explained with its behavior and default. This goes well beyond the bare schema titles.
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 opens with a specific verb and resource: 'Drop a T-SQL user-defined function.' This cleanly distinguishes the tool from sibling drop tools like drop_view and drop_procedure based on the object type, and it adds platform scope by noting support for both Data Warehouses and SQL Analytics Endpoints.
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 gives useful context for when the tool applies: it is for T-SQL user-defined functions and works on both Data Warehouses and SQL Analytics Endpoints. It does not explicitly name alternatives or exclusions, but the resource type and platform note make the intended use clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_procedureA
Drop a stored procedure.
Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description must carry the burden of disclosing destructive behavior. It does state the object being dropped and the supported platforms, but it doesn't mention permanence, permission requirements, or whether the drop cascades to dependencies. This is not misleading but leaves some behavioral depth unstated.
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 compact and front-loaded: the core action appears in the first sentence, followed by platform context and then a clean Args list. Every sentence earns its place with no 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?
For a three-parameter drop tool, the description covers the action, target platforms, and parameter semantics. The presence of an output schema reduces the need to explain return values. It could add an explicit irreversibility warning, but the overall definition is sufficiently complete for an agent to call the tool correctly.
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 Args section is essential. It explains each parameter: workspace as name or GUID, item as warehouse or SQL endpoint, and qualified_name as a dot-separated qualified procedure name with a concrete example ('dbo.usp_load'). This fully compensates for the bare schema.
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 opens with a specific verb and resource ('Drop a stored procedure'), making the tool's action unambiguous and distinguishing it from sibling drop tools like drop_view and drop_function. The supported environments add further precision about what kinds of items can be targeted.
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 statement that stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints gives clear context about when this tool can be applied. It doesn't explicitly exclude alternatives, but the resource type is clear enough that an agent can select it for dropping procedures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_security_policyA
Drop a row-level security policy.
Executes DROP SECURITY POLICY. This is a permanently destructive
operation -- the policy and all its predicates are removed.
Requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
policy_name: Qualified policy name ("schema.name" or "name").
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| policy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses permanent destruction of policy and predicates, and the environment variable prerequisite. This is sufficient for a destructive operation.
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?
Highly concise: two main sentences plus a bullet-pointed args list. Front-loaded with the action, no superfluous text.
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 and presence of output schema (context signal), the description covers all necessary aspects: purpose, destructive nature, prerequisite, parameter guidance. Minor omission: no mention of return value, but not critical for drop operations.
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 coverage is 0%, but description adds meaning by explaining 'policy_name' format (qualified name) and context for workspace and item. This compensates for lack of schema descriptions.
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?
Description clearly states 'Drop a row-level security policy' and references 'Executes DROP SECURITY POLICY', making the verb and resource explicit. It distinguishes itself from siblings like create_security_policy and set_security_policy_state.
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?
Explicitly warns it is a permanently destructive operation and requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1, guiding when to use. Does not explicitly state when not to use, but the destructive nature implies alternatives (e.g., disabling).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_security_predicateB
Drop the FILTER predicate from an existing row-level security policy.
Executes ALTER SECURITY POLICY ... DROP FILTER PREDICATE ON. The
T-SQL DROP PREDICATE ON syntax takes no operation qualifier.
There is no predicate-type parameter (#966): Fabric Data Warehouse
supports FILTER predicates only.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
policy_name: Qualified policy name ("schema.name" or "name").
table_schema: Schema name of the target table.
table_name: Name of the target table.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| table_name | Yes | ||
| policy_name | Yes | ||
| table_schema | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses the underlying SQL command and notes that Fabric Data Warehouse supports only FILTER predicates, referencing a GitHub issue. However, it omits permissions, side effects, or reversibility, leaving gaps in behavioral understanding.
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 concise: a clear action sentence, a technical detail paragraph, and an Args list. It is well-structured and free of unnecessary content, though the Args list could be integrated into the prose.
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 no annotations, the description covers the core action and SQL details. It references a GitHub issue and explains the lack of predicate-type parameter. However, it does not cover prerequisites (e.g., policy existence), error scenarios, or output behavior, leaving some contextual gaps.
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 description must compensate. It lists all five parameters in an Args block and adds format info for policy_name ('"schema.name" or "name"'). Other parameters have no added semantics beyond their names, which is acceptable but not fully compensating.
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: 'Drop the FILTER predicate from an existing row-level security policy.' It distinguishes from related tools like add_security_predicate and drop_security_policy by specifying the exact operation on a predicate.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., drop_security_policy or set_security_policy_state). The description mentions technical constraints but does not provide usage scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_viewA
Drop a SQL view.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 full burden for behavioral disclosure. It merely states 'Drop' without mentioning irreversibility, permission requirements, or side effects (e.g., cascading drops). For a destructive operation, this is insufficient.
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 concise: a single line for purpose followed by parameter details. Every sentence earns its place with no redundancy or unnecessary text.
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 simple nature of the tool and the presence of an output schema, the description covers basic purpose and parameters. However, it lacks usage context or clarification of behavior (e.g., error cases, prerequisites), making it minimally adequate.
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?
Since the input schema has no descriptions (0% coverage), the description compensates by explaining each parameter: workspace, item, and qualified_name with an example format. This adds meaningful guidance beyond the schema structure.
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 explicitly states 'Drop a SQL view,' which is a clear verb+resource combination. This distinguishes it from sibling tools like create_view, read_view, or rename_view.
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 (e.g., drop_table, drop_function) nor any prerequisites or context. It only states the action without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_auditA
Enable SQL auditing on a warehouse or SQL analytics endpoint.
CAUTION: The pre-flight GET used to round-trip the existing action-group list is eventually consistent and may lag a recent PATCH by several minutes. If the action-group list was changed within that window, this call may silently revert it. Space audit writes at least a few minutes apart.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. retention_days: Log retention in days (0-3650; 0 = unlimited). Default 0.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes | ||
| retention_days | No |
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, the description carries full burden and reveals a critical behavioral trait: the pre-flight GET is eventually consistent and may silently revert recent changes. This is valuable transparency. However, it does not mention idempotency or behavior when audit is already enabled.
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 concise with a clear purpose statement, a caution note, and parameter explanations. It is well-structured and front-loaded. The caution is somewhat lengthy but necessary for transparency.
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 there is an output schema (not provided), the description does not need to cover return values. However, it omits prerequisites like required permissions or warehouse existence. The caution about eventual consistency is helpful but the description lacks information about error states or idempotency.
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 no descriptions (0% coverage), but the description includes an Args block that explains each parameter beyond the schema's property titles. It clarifies the meaning of workspace, warehouse, and retention_days with range and default, adding significant semantics.
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 enables SQL auditing on a warehouse or SQL analytics endpoint. This is specific and distinguishes it from sibling tools like 'disable_audit' and 'set_audit_retention'.
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 a caution about spacing writes due to eventual consistency, but does not explicitly state when to use this tool versus alternatives such as 'set_audit_retention' or 'add_audit_group'. The caution implies some usage advice but not comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_sql_poolsB
Enable custom SQL Pools for a workspace without modifying pool definitions.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
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, the description carries the behavioral disclosure burden. It adds some useful context: admin role requirement, beta API warning, and the behavioral guarantee that pool definitions are not modified. However, it does not disclose side effects, idempotency, reversibility, or what happens if SQL pools are already enabled.
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 concise at three sentences, each earning its place: the core function, the access requirement, and the beta warning. It is front-loaded and contains no filler. Minor improvement could be made by more explicit off-ramps to siblings.
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?
The tool has a simple single-parameter schema and an output schema to explain return values, so complexity is low. Still, the description omits whether this is a one-time enablement, whether it affects existing SQL pools, or how to check current status (even though get_sql_pools_status is a sibling). It is minimally adequate but leaves operational context unclear.
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 the undocumented 'workspace' parameter. It only repeats 'for a workspace' without specifying whether the value is a workspace ID, name, or URL, and without any additional format or usage guidance. The single parameter remains under-specified.
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 a specific verb and resource: 'Enable custom SQL Pools for a workspace.' The clarifying phrase 'without modifying pool definitions' sets it apart from create/update/delete SQL pool siblings, so an agent can distinguish it from those tools. It does not explicitly mention the corresponding disable_sql_pools sibling, but the action is clearly scoped.
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 prerequisites: workspace admin role and beta/preview API status. It does not explicitly state when to choose this over alternatives, though 'without modifying pool definitions' implies its scope relative to pool definition mutation. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_sqlA
Execute an arbitrary SQL statement or batch against a warehouse or SQL Analytics Endpoint.
Prefer dedicated tools for common operations: use read_table or read_view to fetch rows, count_table_rows or count_view_rows to count, list_tables, list_views, list_schemas to discover objects, get_table_columns or get_view_columns to inspect schemas, and delete_table, rename_table, or clear_table to mutate. Dedicated tools return structured, typed results with no dialect pitfalls or batch-truncation surprises.
WARNING: this tool executes arbitrary SQL against the target. DDL (DROP,
ALTER, TRUNCATE) and DML (DELETE, UPDATE) are permitted unless
FABRIC_MCP_READONLY=1 is set. Use only when the user explicitly
requests data modification. Default to SELECT when the user's intent is
read-only investigation.
Supports both Warehouse and SQL Analytics Endpoint items. Multi-statement
batches are allowed; the tool keeps the last result set that has a column
list (i.e. the last query), not the last statement. A batch that ends with
DDL/DML after a query, such as SELECT id FROM t; UPDATE t SET x = 1;,
returns the SELECT result and does not separately report that the
UPDATE ran. A statement with no result set at all (DDL/DML with nothing
else in the batch) returns columns=[] and rows=[].
datetime and Decimal column values are pre-serialised to strings.
bytes / varbinary columns are base64-encoded and their column names are
suffixed with __base64.
For large tables, add a TOP clause or WHERE predicate to the query rather
than relying solely on max_rows. The driver fetches at most
max_rows + 1 rows (enough to detect truncation) so memory is bounded,
but pushing the limit into the query itself is always more efficient.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
query: SQL statement or batch to execute.
max_rows: Maximum rows to return (1-10000, default 1000). When the
result set is larger the response includes "truncated": true.
Returns:
A dict with keys columns (list[str]), rows (list[list[Any]]),
rowcount (int; -1 when the driver does not report a count),
row_count_returned (int), and truncated (bool).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| query | Yes | ||
| max_rows | No | ||
| workspace | Yes |
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 full responsibility for behavioral disclosure, and it does so thoroughly. It warns that DDL and DML are permitted, explains multi-statement batch result selection, describes how datetime, Decimal, and bytes values are serialized, and documents truncation behavior via max_rows + 1.
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 long but every major block earns its place: purpose, usage guidance, safety warning, batch semantics, serialization details, performance advice, and parameter meanings. It is front-loaded with the most decision-relevant information and uses clear paragraph separation.
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?
For a high-complexity, potentially destructive tool with no annotations, the description is exceptionally complete. It covers safety, alternative routing, batch semantics, return value structure, type serialization, and performance considerations, leaving little for an agent to guess.
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, and it does. Each parameter is explained beyond its raw schema definition: workspace and item accept names or GUIDs, query is a SQL statement or batch, and max_rows has bounds, default, and truncation implications.
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 opens with a specific verb and resource: 'Execute an arbitrary SQL statement or batch against a warehouse or SQL Analytics Endpoint.' It clearly distinguishes this generic SQL tool from the many dedicated sibling tools by emphasizing arbitrariness and raw SQL execution.
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 explicitly lists dedicated alternatives (read_table, read_view, count_table_rows, etc.) and states to prefer them for common operations. It also gives direct when-to-use guidance: use execute_sql only when the user explicitly requests data modification, and default to SELECT for read-only investigation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dbt_profileA
Generate dbt-fabric project file contents for a Fabric Data Warehouse.
Returns the generated file contents as text strings. Because the MCP server cannot write to the caller's local filesystem, it is the caller's responsibility to write the returned strings to the appropriate files.
Authentication note: dbt-fabric is Entra-only. ServicePrincipal mode emits
{{ env_var(...) }} placeholders for tenant_id / client_id / client_secret
β no literal secrets are included in the output.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID.
project_name: dbt project name (default: sanitized warehouse name).
profile_name: dbt profile name (default: same as project_name).
schema: Default schema (default: dbo).
target: dbt output target name (default: dev).
threads: Number of dbt threads (default: 4).
authentication: dbt-fabric authentication string β
auto (DefaultAzureCredential), CLI (interactive),
or ServicePrincipal. Defaults to the server's auth mode.
with_sources: When True, generate a _sources.yml from the
warehouse's actual schemas and tables.
Returns:
A dict with keys:
- profiles_yml: content for profiles.yml.
- dbt_project_yml: content for dbt_project.yml.
- sources_yml: content for models/staging/_sources.yml.
- requirements_txt: content for requirements.txt.
- gitignore: content for .gitignore.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| schema | No | dbo | |
| target | No | dev | |
| threads | No | ||
| workspace | Yes | ||
| profile_name | No | ||
| project_name | No | ||
| with_sources | No | ||
| authentication | No |
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, the description carries the full burden and discloses the two most important behaviors: the server cannot write to the caller's filesystem, and ServicePrincipal mode emits env_var placeholders with no literal secrets. It also documents the conditional behavior of with_sources and the exact return format, though it never explicitly states the operation is read-only and says nothing about error behavior for invalid workspace/item input.
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 long but proportionally justified: every block β purpose, filesystem limitation, auth note, Args, Returns β adds information the schema and annotations fail to provide. It is front-loaded with purpose and the key behavioral caveat before the parameter reference, and each sentence earns its place.
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?
For a 9-parameter tool with zero annotations, zero schema descriptions, and a complex multi-file return contract, the description is nearly exhaustive: all parameters, all 5 return keys, and the critical auth and filesystem caveats are covered. Missing only error behavior for invalid workspace/item and an explicit side-effect profile, which are minor relative to what is provided.
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 β and it documents all 9 parameters with plain-language meaning and default resolution (e.g., project_name defaults to 'sanitized warehouse name', authentication defaults to the server's auth mode, with_sources triggers actual schema/table introspection). Every parameter receives context beyond its title, which is exceptional at this coverage level.
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?
States a specific verb and resource: 'Generate dbt-fabric project file contents for a Fabric Data Warehouse.' The output contract (multi-file text contents) is uniquely identifiable, and no sibling tool performs file-content generation, so it is immediately distinguishable from the ~120 siblings without opening the schema.
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?
Provides clear operational context: the caller must write returned strings because the MCP server cannot write to the local filesystem, and the authentication note explains supported modes (auto/CLI/ServicePrincipal) and defaulting behavior. Does not explicitly state when-not-to-use or name alternatives, but no sibling tool competes for this generation task, so exclusion guidance is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_settingsA
Fetch the current SQL audit settings for a warehouse or SQL analytics endpoint.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
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, the description correctly implies a read-only operation ('Fetch'), but does not explicitly state non-destructiveness or any required permissions. Adequate but could be more explicit.
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?
Very concise: one-line purpose followed by a clear parameter list. No wasted words, front-loaded with key 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?
Sufficient for a simple retrieval tool with output schema available. Covers parameters adequately, but missing usage guidelines and behavioral disclaimers prevent a higher score.
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?
Adds meaningful detail beyond input schema by specifying that workspace and warehouse accept names or GUIDs. Schema has 0% coverage, so description compensates well, though could include format hints.
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?
Clearly states it fetches current SQL audit settings for a warehouse or SQL analytics endpoint. Differentiates from sibling tools like enable_audit, disable_audit, and set_audit_action_groups by focusing on retrieval.
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?
No guidance on when to use this tool versus alternatives like enable_audit or set_audit_action_groups. Lacks context for appropriate usage or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cluster_columnsA
Return the data-clustering columns of a table, ordered by clustering ordinal.
Only supported on Fabric Data Warehouses. SQL Analytics Endpoints raise a
ToolError. Returns an empty list when no clustering columns are defined.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | 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 discloses the platform limitation, the error condition on SQL Analytics Endpoints, and the empty-list result when no clustering columns exist, which gives the agent useful expectations beyond the raw operation.
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 compact and front-loaded, leading with the primary purpose and ordering behavior, then adding constraints and parameters. Every sentence contributes useful information with no filler.
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?
The description fully covers what the tool does, its supported platforms, failure behavior, edge case, and all parameter formats. Since an output schema exists, the return structure does not need to be explained in the description.
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 coverage is 0%, but the description compensates fully by documenting all three parameters: workspace name or GUID, warehouse name or GUID, and a dot-separated qualified table name with an example. This adds real meaning that the bare input schema lacks.
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 a specific verb and resource: 'Return the data-clustering columns of a table, ordered by clustering ordinal.' It clearly differs from siblings like get_table_columns or set_cluster_columns by focusing on clustering-column metadata and mentioning ordering behavior.
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 gives clear usage constraints: it is supported only on Fabric Data Warehouses and raises a ToolError on SQL Analytics Endpoints. It does not explicitly name alternatives, but this exclusion is strong enough to guide selection in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_functionA
Fetch the full definition of a T-SQL user-defined function (schema.fn).
Returns the function definition (from sys.sql_modules) and its parameter list
(from sys.parameters). Scalar UDFs and inline TVFs are supported on both
Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 transparently explains that it returns the function definition from sys.sql_modules and parameter list from sys.parameters, and specifies supported function types and platforms. Missing details on permissions or error handling, but sufficient for a read-only 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 highly concise with clear section headings (Args:) and front-loaded key details. Every sentence adds value without 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's simplicity and presence of an output schema, the description covers purpose, parameters, supported types, and platforms adequately. Minor gap: does not mention error cases (e.g., function not found), but overall complete for agent usage.
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. It defines 'qualified_name' as a dot-separated function name with an example, but does not explain 'workspace' and 'item' beyond their types. Thus, it adds some value but not comprehensive parameter semantics.
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 it fetches the full definition of a T-SQL user-defined function, including function definition and parameter list. It specifies supported types (scalar UDFs, inline TVFs) and platforms (Data Warehouses, SQL Analytics Endpoints), distinguishing it from sibling tools like get_view or get_procedure.
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 lacks explicit guidance on when to use this tool versus alternatives like list_functions. It implies usage for detailed function definitions but does not state when not to use or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_procedureA
Fetch the full definition of a stored procedure (schema.proc).
Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description must disclose behavior. 'Fetch' implies a read-only operation, which is adequate. It does not detail side effects, permissions, or error handling, but the presence of an output schema covers return values. The description meets the minimum but lacks depth for a no-annotation setting.
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 short and to the point: one sentence for the action, one for support context, then a concise list of parameters. It is front-loaded with the purpose and contains no unnecessary words.
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 (fetching a procedure definition) and the presence of an output schema, the description sufficiently covers the purpose, supported environments, and required arguments. An agent has enough information to use the tool correctly.
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 coverage is 0%, so parameters are undocumented in the schema. The description adds meaning by naming and briefly explaining each parameter: workspace (name or GUID), item (warehouse or SQL endpoint), and qualified_name (dot-separated, with example). This compensates for the schema gap, though more detail on GUIDs could be added.
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 starts with 'Fetch the full definition of a stored procedure (schema.proc)', clearly stating the specific verb (fetch) and resource (stored procedure definition). It distinguishes from siblings like list_procedures and create_procedure by specifying 'full definition' and mentioning the qualified name format.
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 states that stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints, providing context for when to use it. However, it does not explicitly contrast with alternatives like list_procedures for names or create_procedure for creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_query_planA
Capture the estimated SHOWPLAN_XML execution plan for a SQL query without executing it.
This tool does NOT execute the query β it only retrieves the estimated execution
plan as SHOWPLAN_XML. Because no data is modified, this tool is permitted even
under FABRIC_MCP_READONLY=1.
The plan XML uses the standard namespace
http://schemas.microsoft.com/sqlserver/2004/07/showplan and can be opened
in SSMS, Azure Data Studio, or uploaded to pastetheplan.com for visual analysis.
Since the query is not executed, DDL/DML query text is safe to plan without modifying any data.
Supports both Warehouse and SQL Analytics Endpoint items.
Format options:
"xml"(default, backwards-compatible) β returns the raw SHOWPLAN_XML string inplan_xml. Existing callers relying on{"plan_xml": str}continue to work unchanged."tree"β parses the XML into a native nested list of dicts (one entry per statement) inplan. Best for agent reasoning over the plan structure."json"β same tree, serialised to an indented JSON string inplan_json. Ready to write out or pass through as compact text."mermaid"β renders a Mermaidflowchart TDdiagram string inmermaid. Paste into mermaid.live or embed in GitHub Markdown.
Artifact formats (SVG/HTML/DOT) are CLI-only. They write files to disk and
are only available via fdw sql plan --format <fmt> -o <file>. The MCP
server never writes files (ambiguous cwd, invisible side-effects).
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
query: SQL statement to generate an estimated execution plan for.
format: Output format β one of "xml" (default), "tree",
"json", or "mermaid".
Returns: A dict whose shape depends on format:
- ``xml`` β ``{"format": "xml", "plan_xml": str}``
- ``tree`` β ``{"format": "tree", "plan": list[dict]}``
- ``json`` β ``{"format": "json", "plan_json": str}``
- ``mermaid`` β ``{"format": "mermaid", "mermaid": str}``
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| query | Yes | ||
| format | No | xml | |
| workspace | Yes |
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 fully discloses behavior: no query execution, no side effects, format options, and artifact formats are CLI-only. It contradicts no annotations.
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 well-structured with clear sections, bullet points, and a format table. While somewhat lengthy, each section adds value. It is front-loaded with the most critical info.
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 presence of many sibling tools and an output schema, the description is complete. It covers purpose, usage guidelines, parameters, format options, and return types, leaving no gaps for an AI agent.
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?
Despite 0% schema description coverage, the description provides a detailed Args section explaining each parameter, including format enum options with defaults. This adds substantial meaning beyond the raw schema.
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 it captures the estimated execution plan as SHOWPLAN_XML without executing the query. It distinguishes itself from sibling tools like execute_sql that actually run queries.
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?
It explicitly states when to use this tool (to get an execution plan without execution) and when not to (requires actual execution). It also mentions safety under FABRIC_MCP_READONLY=1 and that DDL/DML is safe because no data is modified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_request_detailA
Look up a completed query from queryinsights.exec_requests_history.
Uses distributed_statement_id to retrieve full query text and execution metrics after the query completes.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. dist_statement_id: The GUID identifying the distributed statement to look up.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| dist_statement_id | 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, the description carries the full burden. It does disclose the source table, the lookup key, and the returned content (query text and execution metrics), but it does not clarify read-only safety, permissions, or error/not-found 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 well-structured with a clear opening sentence and a parameter list. There is minor redundancy between 'completed query' and 'after the query completes,' but the text remains compact and easily scannable.
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?
For a simple lookup tool with an output schema, the description is mostly complete: it identifies the source, the lookup key, the parameters, and the output type. It could be stronger by noting how to obtain distributed_statement_id or how this relates to request history 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?
Schema description coverage is 0%, so the parameter documentation in the description is essential and effective. Each parameter gets a clear semantic definition, including accepted forms like 'name or GUID' for workspace and item, and 'GUID' for dist_statement_id.
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 a specific action ('Look up a completed query') and a precise resource (queryinsights.exec_requests_history), and explains that it returns full query text and execution metrics. This distinguishes it clearly from list-oriented siblings like list_request_history and running-query tools.
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 when to use the tool: after a query has completed and when a distributed_statement_id is available. However, it does not explicitly mention alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_restore_pointA
Return a single restore point by ID.
Args:
workspace: Workspace name or GUID.
warehouse: Warehouse name or GUID.
restore_point_id: The restore point ID string (e.g. "1726617378000").
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes | ||
| restore_point_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It clearly indicates a read operation ('Return') and provides an example for the restore_point_id parameter. No conflicting behavior is stated, and the tool is straightforward.
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: one sentence for the purpose followed by three lines listing parameters with minimal explanation. No redundant information, and the main action is front-loaded.
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 (3 required parameters, output schema present), the description covers the essential behavior and parameters. It does not mention error handling or prerequisites, but for a straightforward get operation, it is adequate.
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 coverage is 0%, so the description must compensate. It lists all three parameters and notes that workspace and warehouse are 'name or GUID', and gives an example for restore_point_id. This adds basic meaning but lacks detailed format or constraints.
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 'Return a single restore point by ID' uses a specific verb and resource, clearly distinguishing it from sibling tools like list_restore_points (multiple) and create/delete/update (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?
No guidance is provided on when to use this tool versus alternatives such as list_restore_points or get_warehouse. The description simply states what it does without context on appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sql_endpointA
Return details for a single SQL analytics endpoint (name or GUID).
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only states 'Return details' without mentioning error behavior, permissions, idempotency, or rate limits. This is insufficient for a safe agent invocation.
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?
Single sentence, 10 words, directly states purpose with no redundancy. Front-loaded and efficient.
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?
Tool has an output schema, so return details need not be described. However, the description misses constraints (e.g., workspace requirement, what if endpoint not found). Still, for a simple retrieval tool, it is mostly 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 coverage is 0%, but description adds minimal semantics by specifying endpoint identifier as 'name or GUID'. However, both parameters (workspace and endpoint) lack further explanation of format or constraints.
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?
Description clearly states the action ('Return'), resource ('details for a single SQL analytics endpoint'), and identifier type ('name or GUID'), distinguishing it from sibling tools like list_sql_endpoints (listing all) and get_sql_endpoint_permissions (permissions).
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 use when needing details for one endpoint, but no explicit when-not or alternatives (e.g., vs list_sql_endpoints). However, the clear purpose and sibling list provide enough context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sql_poolA
Return details for a single SQL pool by name.
Args: workspace: Workspace name or GUID. pool_name: The pool name.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| pool_name | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full behavioral disclosure burden. It adds two genuinely useful facts beyond the name: the workspace admin role requirement and the beta/preview API warning. However, it discloses nothing about the return shape, error behavior, or lack of side effects, which leaves gaps for a no-annotation 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 well structured: purpose sentence first, then compact arg docs, then two one-line caveats. Only minor waste is 'pool_name: The pool name', which echoes the schema title, but overall the text is tight and front-loaded.
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?
For a simple two-parameter get-by-name tool, the description covers the essentials: what it does, both parameters, the admin-role precondition, and API stability. The two notable omissions are the explicit return-value format (no output schema exists to cover it) and differentiation from get_sql_pools_status, but the core invocation needs are met.
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. It adds meaning for workspace ('Workspace name or GUID'), which is valuable beyond the schema's bare string type. But 'pool_name: The pool name' merely restates the property title and adds no meaning about format, uniqueness, or qualification.
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 opens with a specific verb-resource pair: 'Return details for a single SQL pool by name.' This clearly identifies a singular-get operation and distinguishes it from siblings like list_sql_pools (plural listing) and get_sql_pools_status (status-specific). The scope is unambiguous.
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 useful context (requires workspace admin role, targets a beta/preview API) but never explicitly states when to use this tool versus alternatives such as list_sql_pools or get_sql_pools_status. Usage is implied rather than stated; no exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sql_pools_statusA
Return whether custom SQL Pools are enabled for a workspace.
Returns only the workspace-level enabled/disabled switch
(customSQLPoolsEnabled). Use list_sql_pools to see the pool
list, or get_sql_pool for a single pool's details.
Requires workspace admin role. This tool targets a beta / preview API endpoint that may change before general availability.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
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. It discloses the workspace admin role requirement and notes that the tool targets a beta/preview API endpoint that may change. This is valuable behavioral context beyond the schema.
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 concise and well-structured. The main purpose is front-loaded, followed by alternative tools, and then important caveats. Every sentence adds useful information with no 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?
For a simple status-check tool with one parameter and an output schema, the description covers the core purpose, the exact return field, admin requirements, API stability, and clear sibling tool differentiation. Nothing essential is missing.
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 the single `workspace` parameter. It says 'for a workspace' but does not clarify whether the value should be a workspace ID, name, URL, or provide any format or constraints. The parameter meaning is largely inferred from its 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 tool's purpose: 'Return whether custom SQL Pools are enabled for a workspace.' It also explicitly names what it returns (the `customSQLPoolsEnabled` switch), distinguishing it from related pool-list and pool-detail tools.
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 explicit guidance for when to use this tool vs alternatives: it returns only the workspace-level switch, while `list_sql_pools` is for the pool list and `get_sql_pool` is for a single pool's details. This is direct and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_columnsB
Return column metadata for a SQL table via sys.columns.
Works on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | 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 implies a read-only operation by saying 'Return column metadata,' and adds useful context about supported platforms and the use of sys.columns. It doesn't mention permissions, side effects, or response details, but for a simple metadata retrieval this is minimally adequate.
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 concise and front-loaded with the tool's purpose, followed by a short scope statement and a structured Args block. No unnecessary filler or redundancy is present.
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?
For a simple read-only metadata tool with an output schema present, the description covers the core purpose, supported platforms, and parameter formats. It lacks explicit usage guidance and alternative routing, but overall it provides enough information for an agent to call the tool correctly.
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, and it does with an Args section that explains all three parameters. It clarifies that workspace and item accept names or GUIDs, and that qualified_name is a dot-separated table name with an example. This adds meaningful semantics beyond the raw schema.
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 a specific verb and resource: 'Return column metadata for a SQL table via sys.columns.' It clearly identifies what the tool does and its scope. It doesn't explicitly distinguish itself from the sibling get_view_columns, but the 'SQL table' qualifier 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 notes compatibility with Fabric Data Warehouses and SQL Analytics Endpoints, but gives no explicit guidance on when to use this tool versus alternatives. It does not mention that get_view_columns would be the appropriate choice for views, nor any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_health_metricsA
Return health metrics for a table via sp_get_table_health_metrics.
Only supported on SQL Analytics Endpoints (not Data Warehouses). The proc surfaces Delta/Parquet layout issues such as small files, fragmentation, excessive deletes/updates, and delayed checkpoints.
The stored procedure is Generally Available (announced at Build 2026) but its output column schema is not yet documented by Microsoft. Columns and rows are passed through verbatim.
Args:
workspace: Workspace name or GUID.
item: SQL Analytics Endpoint name or GUID. Data Warehouses are
rejected with a ToolError.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description carries full burden. It discloses that the output schema is undocumented, that columns/rows are passed verbatim, and that Data Warehouses are rejected with a ToolError. It also lists the types of issues surfaced, providing comprehensive 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 well-structured, front-loaded with purpose and constraint, followed by details and parameter explanations. Every sentence adds value without 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 context of no annotations, 3 parameters, and an output schema, the description covers purpose, endpoint constraint, behavioral caveats, and parameter semantics completely. It leaves no critical gaps for an AI agent to select and invoke the tool correctly.
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, but the description's Args section provides detailed descriptions for all three parameters, including constraints for 'item' and an example for 'qualified_name'. This fully compensates for the schema 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 returns health metrics for a table via a specific stored procedure. It uniquely identifies the resource and action, and the sibling list contains many table-related tools, but health metrics is distinct.
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 explicitly states that it is only supported on SQL Analytics Endpoints, not Data Warehouses, providing a clear constraint. It implies usage for detecting layout issues, but does not mention alternatives or when not to use it among the many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewB
Fetch the full definition of a view (schema.view).
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry behavioral disclosure. It states the tool is read-only ('Fetch'), but does not mention authentication needs, rate limits, or any side effects. More detail is expected for a tool with no annotations.
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 short and front-loaded with the main action. The Args section is clearly structured. However, it could be slightly more efficient by integrating the parameter descriptions directly.
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 presence of an output schema (not shown), the description need not detail return values. However, the lack of behavioral information and usage guidance leaves the tool less complete than it could be for a standalone description.
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?
Although the input schema has no descriptions and schema coverage is reported as 0%, the description's Args section provides meaningful explanations for each parameter: purpose and expected format (e.g., 'Dot-separated qualified view name, e.g. dbo.vw_sales'). This adds significant value beyond the schema.
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 fetches the full definition of a view with 'Fetch the full definition of a view'. The verb+resource is specific, but it does not explicitly differentiate from the sibling 'read_view' which likely returns view data.
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?
No guidance is provided on when to use this tool versus alternatives like 'read_view' or 'list_views'. The description lacks usage context such as prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_view_columnsA
Return column metadata for a SQL view via sys.columns.
Works on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | 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, the description carries the behavioral burden. It is transparent enough: 'Return column metadata via sys.columns' indicates a read-only catalog lookup, and listing supported platform types adds useful context. It does not discuss edge cases like missing views or permissions, but the operation's nature is clear.
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 compact and front-loaded: a one-sentence purpose, a one-sentence applicability note, and a brief Args block. Every sentence adds useful information, and there is no filler or repetition of schema defaults.
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?
For a simple getter tool with three fully described parameters and an output schema available, the description is complete. It explains what the tool returns, what inputs are needed, and where it works, so an agent can invoke it correctly without ambiguity.
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 provides only parameter names with no descriptions, yet the description documents all three arguments: workspace, item, and qualified_name. It also specifies accepted formats (name or GUID) and gives a concrete example for qualified_name, fully compensating for the 0% schema description 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 states a specific verb ('Return') and a specific resource ('column metadata for a SQL view'), and even names the underlying mechanism ('sys.columns'). This clearly distinguishes it from siblings like get_table_columns or get_view.
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 gives clear context by stating it works on both Fabric Data Warehouses and SQL Analytics Endpoints, and the target is unambiguously a SQL view. It does not explicitly name alternatives or exclusions, but the usage context is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warehouseC
Return details for a single warehouse (name or GUID).
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states 'Return details', giving no information about side effects, permissions, or error behavior. The agent is left uninformed about critical behavioral traits.
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?
Very concise single sentence with no wasted words. However, it could benefit from a brief structure (e.g., listing parameters) without losing conciseness.
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 presence of an output schema, full return value details are not required. However, the description lacks context on prerequisites, error handling, or when to use this tool among siblings. Adequate but incomplete for a tool with no annotations.
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%. The description only clarifies that 'warehouse' can be a name or GUID, but does not explain the 'workspace' parameter. Insufficient compensation for missing schema descriptions.
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 'Return details' and the resource 'single warehouse', specifying it returns details for one warehouse identified by name or GUID. It distinguishes from list_warehouses but is less clear against get_warehouse_permissions or get_warehouse_settings.
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?
No guidance on when to use this tool versus alternatives like list_warehouses or specific detail tools. No when-not-to-use or contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warehouse_settingsA
Return the current server-side database settings for a warehouse.
Reads result_set_caching, time_travel_retention_days,
time_travel_retention_cutoff_date, and data_lake_log_publishing
from sys.databases.
Both Data Warehouses and SQL Analytics Endpoints are supported.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes |
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, the description carries the full burden of behavioral disclosure. It clearly indicates a read operation by saying 'Return' and 'Reads ... from sys.databases', which conveys a read-only nature. However, it does not explicitly state that no modifications or side effects occur, nor does it mention permissions, error conditions, or other behavioral caveats an agent might need.
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 well-structured and compact. It front-loads the core purpose, then lists the exact settings read, states supported resource types, and closes with concise argument documentation. Every sentence earns its place without redundancy or filler.
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, the description is largely complete: it covers purpose, source table, supported resource types, and both parameters. Since an output schema is present, the absence of return-value detail is acceptable. The only notable gap is the lack of explicit guidance about how this tool relates to sibling set_* tools, but this does not prevent correct invocation.
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, and it does. Both parameters are documented with meaningful semantics: workspace as 'Workspace name or GUID' and item as 'Warehouse or SQL Analytics Endpoint name or GUID.' This goes beyond the bare schema titles of 'Workspace' and 'Item' and fully clarifies what values are acceptable.
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 uses a specific verb-resource combination: 'Return the current server-side database settings for a warehouse.' It further lists exactly which settings are read (result_set_caching, time_travel_retention_days, time_travel_retention_cutoff_date, data_lake_log_publishing) and from where, making it clearly distinguishable from siblings like get_warehouse or get_audit_settings.
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 states that both Data Warehouses and SQL Analytics Endpoints are supported, which gives useful context about when the tool applies. However, it does not explicitly explain when to choose this tool over alternatives, nor does it mention that related set_* tools exist for modifying these settings. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaceB
Return details for a single workspace (name or GUID).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 implies a read-only operation by saying 'Return details', but does not explicitly state idempotence, safety, or lack of side effects. This is insufficient for a 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 sentence that is front-loaded and concise, with no unnecessary words. It efficiently communicates the tool's function.
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?
With a simple single-parameter tool and an output schema present, the description is minimally adequate. However, it does not mention error handling (e.g., workspace not found) or provide any additional behavioral details.
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 has 0% coverage, so the description must compensate. It adds the valuable clarification that 'workspace' can be a name or GUID, which is not evident from the schema alone.
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 it returns details for a single workspace, and specifies the input can be a name or GUID. It implicitly differentiates from the sibling 'list_workspaces' which returns all workspaces.
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 does not explicitly state when to use this tool vs alternatives, but the name and purpose are clear enough for a simple retrieval tool. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grant_permissionA
Grant permissions on a securable to a principal.
Executes GRANT <permissions> ON <scope> TO <principal>.
Blocked by FABRIC_MCP_READONLY. Does NOT require
FABRIC_MCP_ALLOW_DESTRUCTIVE.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
permissions: Comma-separated permission tokens (e.g. "SELECT,INSERT").
principal: Grantee principal name (Entra UPN, app GUID, or role name).
scope: Securable class -- "DATABASE" (default), "SCHEMA", or
"OBJECT".
schema: Schema name (required when scope is "SCHEMA").
object_name: Qualified object name <schema>.<object> (required when
scope is "OBJECT").
with_grant_option: When True, allows the grantee to grant the
permission to others (adds WITH GRANT OPTION).
columns: Optional list of column names for column-level security
(OBJECT scope only; permissions must be SELECT, UPDATE, or
REFERENCES). Pass None (omit) for no column restriction.
Passing an empty list raises a ToolError.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| scope | No | DATABASE | |
| schema | No | ||
| columns | No | ||
| principal | Yes | ||
| workspace | Yes | ||
| object_name | No | ||
| permissions | Yes | ||
| with_grant_option | No |
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, the description reveals behavior: it is a write operation blocked by readonly, non-destructive per the flag absence, and describes error behavior for empty columns list.
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 well-structured with a lead paragraph and bulleted arg list. It is slightly long but front-loaded with purpose and SQL equivalent. Efficient overall.
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 the tool (9 params, no annotations, but output schema exists), the description covers all necessary details: parameter usage, error cases, and safety flags. It is fully sufficient for an agent to use the tool correctly.
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 coverage is 0%, but the description fully explains all 9 parameters with constraints, defaults, and special behaviors (e.g., column restrictions, required schema for SCHEMA scope), adding substantial value beyond the schema.
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 'Grant permissions on a securable to a principal', provides the SQL equivalent, and the tool name and title differentiate it from siblings like deny_permission and revoke_permission.
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?
It specifies blocking by FABRIC_MCP_READONLY and that FABRIC_MCP_ALLOW_DESTRUCTIVE is not required, giving usage constraints. It also details parameter dependencies (e.g., schema required when scope is SCHEMA). However, it does not explicitly compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_table_from_urlA
Load data into an existing Data Warehouse table via COPY INTO from a remote URL.
The target table must already exist and have a compatible schema.
For auto-create with schema inference from local files, use the CLI
tables load --file --create command instead.
if_exists controls behaviour when the table already exists:
"fail"(default): raise an error if the table already exists, or if it does not exist (the table must be created first with create_empty_table or create_table)."append": load rows into the existing table without modification. Raises an error if the table does not exist."truncate": TRUNCATE the existing table, then load, both inside a single transaction so a failed load leaves the existing rows intact (atomic replace). RequiresFABRIC_MCP_ALLOW_DESTRUCTIVE=1. Raises an error if the table does not exist."replace": not supported for remote URLs (schema inference requires downloading the file). Use"truncate"to keep the current schema, or download locally and use the CLI with--create --if-exists replace.
Supported file types: CSV, PARQUET. JSON remote URLs require
downloading and converting locally first; use the CLI tables load
command for local files (including JSON).
For OneLake or same-tenant URLs, no credential is needed. For secured
external URLs supply credential_type and the appropriate
secret/identity values.
CAUTION: truncate is permanently destructive.
Confirm the source URL and target table before calling.
Note: secret / identity values are accepted but are NEVER logged
or included in any debug output.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
url: Source URL (OneLake DFS URL or external Azure Blob URL).
file_type: CSV or PARQUET.
if_exists: Policy when the target table already exists.
credential_type: Credential type for the source URL.
secret: Credential secret (not logged).
identity: Identity for managed-identity or service-principal.
delimiter: CSV column delimiter.
has_header: Whether the CSV file has a header row.
encoding: CSV file encoding.
field_quote: CSV field-quote character.
row_terminator: CSV row terminator.
max_errors: Maximum errors before aborting.
rejected_row_location: URL for rejected-row output.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| item | Yes | ||
| secret | No | Credential secret (SAS token, client secret, or account key). NEVER log or echo this value. | |
| encoding | No | CSV file encoding (e.g. 'UTF8', 'UTF8BOM'). | |
| identity | No | Identity value for managed-identity or service-principal credential types. | |
| delimiter | No | CSV column delimiter (e.g. ',', '\t'). | |
| file_type | Yes | File type. JSON is not supported for remote URLs; download and convert locally first. | |
| if_exists | No | What to do when the target table exists or is absent. 'fail': error if the table already exists, or if it does not exist (default). 'append': load into the existing table; error if the table is absent. 'truncate': TRUNCATE then load (destructive). 'replace': DROP + recreate from inferred schema, then load (destructive). | fail |
| workspace | Yes | ||
| has_header | No | When True, the first CSV row is a header and is skipped. | |
| max_errors | No | Maximum number of errors before aborting. | |
| field_quote | No | CSV field-quote character. | |
| qualified_name | Yes | ||
| row_terminator | No | CSV row terminator (e.g. '\n', '\r\n'). | |
| credential_type | No | Credential type for secured external URLs. Use 'none' for OneLake or public URLs. | none |
| rejected_row_location | No | URL to write rejected rows to. |
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 and does so thoroughly. It discloses that truncate is atomic and permanently destructive, that it requires FABRIC_MCP_ALLOW_DESTRUCTIVE=1, that SQL Analytics Endpoints are rejected, that JSON is unsupported for remote URLs, and that secrets are never logged. This goes well beyond basic purpose and prevents unsafe calls.
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 long but appropriately so for a 16-parameter tool with destructive modes. It is front-loaded with the core purpose, then uses bullets and clear sections for if_exists behavior, file-type constraints, credentials, and warnings. The CAUTION note earns its place given the permanent destructiveness of truncate.
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 no annotations and a high-complexity 16-parameter tool, the description is effectively complete. It covers prerequisites, unsupported modes, credential handling, destructive behavior, error semantics for if_exists, and alternative workflows, while the output schema covers return-value details. An agent has sufficient context to invoke the tool safely and correctly.
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 75%, so the schema already does much of the work; the description still adds meaningful semantics by explaining that item rejects SQL Analytics Endpoints, that qualified_name is dot-separated, and what URL kinds are expected. Its if_exists bullets are also more actionable than the schema enum descriptions. Minor friction remains: the schema presents 'replace' as a valid option while the description says it is unsupported for remote URLs.
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 first sentence states a specific action and mechanism: loading data into an existing Data Warehouse table via COPY INTO from a remote URL. It also clearly imposes the prerequisite that the target table must already exist, separating it from create/delete/query tools. The auto-create CLI note further distinguishes it from schema-inference-based loading, though the sibling load_table_from_url is not explicitly differentiated.
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 explicitly says when to use the tool: remote URL loads into an existing table. It also says when not to: auto-create with schema inference from local files should use the CLI tables load --file --create command, and JSON remote URLs require local conversion and CLI use. The if_exists section additionally routes 'replace' cases to truncate or the local CLI, which is concrete, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_sessionA
Terminate a session on a warehouse by session_id.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. session_id: Session ID to terminate (must be a positive integer).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| session_id | Yes |
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, the description must fully convey behavioral traits. It only states 'terminate a session' without explaining consequences (e.g., queries aborted, connection lost), required permissions, or reversibility. This is insufficient for a destructive action.
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, using a single sentence for purpose followed by a clear parameter list. Every sentence adds value, and the information is front-loaded for quick parsing.
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 (3 required params, no enums, output schema exists), the description covers the basic action and parameters. However, it lacks usage guidelines and behavioral transparency, which are needed for a complete understanding.
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, but the description's Args section provides meaningful details for all three parameters: workspace, item, and session_id (e.g., 'must be a positive integer'). This adds significant value beyond the schema's minimal type and constraint information.
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 'Terminate a session on a warehouse by session_id', specifying the verb (terminate), resource (session), and method (by session_id). This uniquely identifies the tool's function among siblings, as no other sibling tool terminates sessions.
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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or conditions. The description lacks context such as 'use when a session is stuck or needs to be killed' or 'avoid terminating critical system sessions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesA
List all available MCP tools grouped by domain.
Call this tool first to discover what dedicated tools are available
before falling back to execute_sql. Dedicated tools return typed,
structured results and avoid SQL dialect pitfalls.
Returns: A dict mapping domain name to a sorted list of tool names in that domain. The dict itself is sorted by domain key.
| 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?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the return shape: a dict mapping domain names to sorted lists of tool names, sorted by domain key. The verb 'list' and the discovery framing sufficiently convey that this is a safe, read-only metadata operation.
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 compact and front-loaded with the core purpose. Each subsequent sentence adds distinct value: usage ordering, rationale, and return format. There is no redundant or filler content.
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?
For a zero-parameter discovery tool with an output schema, the description is complete. It explains what the tool does, when to invoke it, why it is preferable to the fallback, and what the returned data structure looks like. No meaningful contextual gap remains.
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 zero parameters and schema coverage is 100%, so there is no parameter semantics to clarify. The description appropriately focuses on return structure rather than input details, which is the only relevant semantic information an agent needs here.
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 uses a specific verb and resource: 'List all available MCP tools grouped by domain.' It clearly distinguishes this discovery tool from the many operational siblings by stating it inventories capabilities rather than performing actions, and it contrasts itself with execute_sql as the dedicated-tool discovery entry point.
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 explicitly instructs the agent to call this tool first before falling back to execute_sql, and explains why: dedicated tools return typed, structured results and avoid SQL dialect pitfalls. This provides clear when-to-use guidance and names the relevant alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capacitiesA
List all Fabric capacities the caller has access to.
Requires the Capacity.Read.All permission. Returns a 403
ToolError when the caller lacks that permission.
| 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?
Without annotations, the description carries the full burden. It discloses that the tool requires a specific permission and returns a 403 error on failure, which is important behavioral information. It also implies a read-only operation through 'list.'
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, consisting of two short sentences that cover purpose, permission requirement, and error condition. Every sentence provides necessary information without 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?
For a zero-parameter tool with an output schema, the description adequately covers the tool's purpose, scope (all capacities accessible by the caller), and key behavioral detail (permission requirement and error). It is sufficient for an agent to understand when and how to use the 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 zero parameters, so the baseline score is 4. The description does not add parameter-level detail beyond the schema, which is appropriate given there are no parameters.
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 'List all Fabric capacities the caller has access to,' specifying the verb (list) and resource (Fabric capacities). It does not explicitly differentiate from sibling list tools, but the resource is distinct enough to avoid confusion.
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 the prerequisite permission (Capacity.Read.All) and the error behavior when missing, giving context for when to call the tool. However, it does not mention alternative tools or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connectionsB
Return all active SQL connections on a warehouse or SQL Analytics Endpoint.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It implies a read-only operation ('Return all active SQL connections') but does not explicitly state it is non-destructive or safe. Missing information on authorization requirements, rate limits, or whether the output is filtered by current user permissions.
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 concise: a one-line summary plus an Args block listing two parameters. It is front-loaded with the core purpose. However, the Args block uses a non-standard format (Args: indentation) and could be more structured (e.g., bullet points) for readability.
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 presence of an output schema (context signals indicate 'Has output schema: true'), the description does not need to explain return values. It adequately states what the tool does and the required inputs. However, it is incomplete in terms of behavioral context and usage guidelines, which are absent.
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 only provides titles and types for workspace and item, with no descriptions. The description adds 'Workspace name or GUID' and 'Warehouse or SQL Analytics Endpoint name or GUID,' clarifying the parameter values beyond the schema. This is valuable context not present in the input schema.
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 'Return all active SQL connections on a warehouse or SQL Analytics Endpoint,' which clearly identifies the verb (return) and resource (active SQL connections) and scope (on a specific warehouse/endpoint). However, it does not differentiate from sibling list tools like list_sql_endpoints or list_warehouses, which are distinct but similar in pattern.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, context for using workspace and item parameters, or any exclusions. Sibling tools like list_sql_endpoints list logical entities, while this lists connections, but no comparative advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_database_principalsA
List database principals from sys.database_principals.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
principal_type: Filter by type -- "user" for users, "role" for
database roles, "all" or omit for no filter.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| principal_type | 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 must fully disclose behavior. It only states the source (sys.database_principals) and the filter, but lacks details on read-only nature, required permissions, pagination, or error conditions. This is insufficient for a tool with no annotations.
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 concise: one sentence for purpose and a simple args block. Every part is informative, and the main intent is front-loaded. No unnecessary words.
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?
With an output schema present, the description need not cover return values. It covers all three parameters adequately. However, it could provide more context about what database principals are or the behavior when the warehouse endpoint is invalid. Still, it is largely complete for a simple listing 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?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It clearly defines workspace and item as identifiers and explains principal_type filter values ('user', 'role', 'all'), adding meaning beyond the bare schema.
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 'List database principals from sys.database_principals', specifying the verb (list) and the resource (database principals). This distinguishes it from sibling tools like list_item_permissions which list permissions, not principals.
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 a filter parameter but does not give explicit guidance on when to use this tool versus alternatives. There is no mention of when not to use it or which sibling tools are more appropriate for related tasks like permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_frequent_queriesA
Return frequently-run queries from queryinsights.frequently_run_queries.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on last_run_start_time. until: Optional ISO-8601 upper bound on last_run_start_time.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| limit | No | ||
| since | No | ||
| until | No | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully convey safety and behavior. It only states 'Return' implying a read operation but does not explicitly confirm read-only status, nor mention permissions, side effects, or rate limits.
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 front-loaded with the core purpose and uses a structured argument list. It is not overly verbose, though the parameter details could be slightly more compact without losing 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 the simple read operation, the description covers inputs well but misses usage guidelines and behavioral transparency. An output schema exists so return values need not be detailed. Overall adequate but with gaps.
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 coverage, the description fully explains all 5 parameters: workspace and item as name/GUID, limit with range (1-10000, default 100), since/until as optional ISO-8601 bounds. Each parameter is clearly described beyond schema.
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 explicitly states 'Return frequently-run queries from queryinsights.frequently_run_queries', providing a specific verb and resource. It distinguishes from sibling list tools (e.g., list_long_running_queries) by naming the exact source table.
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?
No guidance on when to use this tool versus alternatives like list_long_running_queries or list_running_queries. The description lacks explicit context for selection or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionsA
List T-SQL user-defined functions on a warehouse or SQL Analytics Endpoint.
Scalar UDFs (FN) and inline TVFs (IF) are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
schema: When provided, only functions in this schema are returned.
kind: Filter by function kind β "scalar" (FN only),
"inline-tvf" (IF only), or "all" (FN + IF + TF, the default).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| kind | No | all | |
| schema | No | ||
| workspace | 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. It discloses that scalar UDFs and inline TVFs are preview features on Fabric DW as of mid-2026 and explains the 'kind' parameter values. While it does not explicitly state that the operation is read-only, the context implies it is a listing operation.
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 well-structured with a clear purpose sentence followed by a note on preview features and a bullet-like list for arguments. It is slightly longer than necessary but each sentence adds value. No wasted words.
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 presence of an output schema (not shown but exists), the description covers all necessary aspects: parameter explanations, supported platforms, preview status, and function kinds. It is complete for a listing tool with low complexity.
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?
Input schema has 0% description coverage, so the description fully compensates. It explains all four parameters: workspace, item (required), schema (optional), and kind (optional with default 'all'), including detailed explanation of kind values ('scalar', 'inline-tvf', 'all').
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 that the tool lists T-SQL user-defined functions on a warehouse or SQL Analytics Endpoint, specifying scalar UDFs and inline TVFs. It distinguishes itself from sibling tools like list_procedures and list_views by focusing specifically on functions.
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 explains what the tool does and the available filters (schema, kind) but does not provide explicit guidance on when to use this tool versus alternatives or any prerequisites. It is adequate but lacks clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_item_permissionsA
Return principals with access to a Warehouse or SQL Analytics Endpoint item.
Uses the Fabric admin API. Accepts both Data Warehouses and SQL Analytics Endpoints -- the item kind is resolved automatically from its GUID.
Requires Fabric Administrator role (admin API).
See https://learn.microsoft.com/en-us/fabric/admin/microsoft-fabric-admin for details.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | 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, the description carries the burden. It discloses admin API usage and role requirement, and automatic item kind resolution. It does not mention rate limits, error conditions, or confirm read-only nature, leaving some behavioral uncertainty.
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 concise and well-structured: a clear intro line, brief notes on API and role, and clearly labeled Args. Each sentence adds value with no 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 2 parameters and an output schema (not shown but implied), the description covers the essentials: purpose, prerequisites, parameter format, and a documentation link. It could mention output structure or limitations, but it's largely 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 coverage is 0% (only title given), so the description adds meaningful value by specifying expected format: 'Workspace name or GUID' and 'Warehouse or SQL endpoint name or GUID'. This clarifies parameter semantics beyond the schema.
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 uses specific verb 'Return' and resource 'principals with access to a Warehouse or SQL Analytics Endpoint item', clearly distinguishing from permission-related siblings like grant_permission, revoke_permission, etc.
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 notes it uses the Fabric admin API and requires Fabric Administrator role, and clarifies it accepts both Warehouses and SQL Endpoints with automatic resolution. However, it does not explicitly state when to use this tool versus siblings like my_permissions or list_sql_permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locksA
Return active lock rows from sys.dm_tran_locks joined with sys.dm_exec_requests.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). waiting_only: When True, restrict to locks with request_status WAIT or CONVERT. blocked_only: When True, show only blocked sessions (victims). The blocker's session_id appears in blocking_session_id. include_database: When True, include DATABASE-scoped lock rows (excluded by default).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| limit | No | ||
| workspace | Yes | ||
| blocked_only | No | ||
| waiting_only | No | ||
| include_database | 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 fully discloses behavior: it describes the underlying joins, default exclusion of database-scoped locks, parameter effects (like blocked_only showing victims with blocking_session_id), and default limit. This is comprehensive for a diagnostic 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 concise and well-structured, with a one-sentence intro followed by a bullet-like list of parameters. Every sentence adds value, and the format is 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?
While the output schema exists (not shown), the description explains the source of the data and parameter effects. It could mention potential performance impact or the need for appropriate permissions, but given the presence of an output schema, the description is largely complete for an informational 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% description coverage, so the description must compensate. It does so thoroughly: explaining workspace and item as identifiers, limit with range, waiting_only and blocked_only as filters, and include_database to add database-scoped locks. Each parameter's meaning and default are clear.
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 'Return active lock rows from sys.dm_tran_locks joined with sys.dm_exec_requests', specifying the verb and resource. It distinguishes from sibling tools by focusing specifically on locks rather than queries, connections, or other database objects.
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 clear context about the tool's purpose (diagnosing locks) and the parameters (waiting_only, blocked_only) guide usage scenarios. However, it does not explicitly state when to use this tool versus alternatives like list_running_queries or list_connections, though the lock-specific context makes the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_long_running_queriesB
Return long-running queries from queryinsights.long_running_queries.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on last_run_start_time. until: Optional ISO-8601 upper bound on last_run_start_time.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| limit | No | ||
| since | No | ||
| until | No | ||
| workspace | 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 bears full responsibility for behavioral disclosure. It does not mention whether the operation is read-only, potential costs, required permissions, or any side effects. The only behavioral hint is the 'long-running' qualifier in the name.
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 concise, with a clear one-line summary followed by a structured Args list. No extraneous information. However, it could be slightly more compact by integrating the parameter descriptions more efficiently.
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 that an output schema exists, return values are not required in the description. The description adequately covers input parameters and the source table. However, it lacks context about ordering, the definition of 'long-running', and typical use cases, making it minimally 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 explain each parameter. It does so effectively for workspace, item, limit, since, and until, adding meaning beyond the schema's type/default information. However, the 'since' and 'until' descriptions could be slightly more precise.
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 returns long-running queries from a specific view (queryinsights.long_running_queries). It uses a specific verb ('Return') and resource, but does not explicitly differentiate from sibling tools like list_running_queries or list_frequent_queries.
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 does not mention prerequisites, when not to use it, or list sibling tools for comparison. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_masked_columnsA
List columns with dynamic data masking from sys.masked_columns.
Returns all masked columns on the target Data Warehouse or SQL Analytics Endpoint. Filter by table_schema and/or table_name to narrow results.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
table_schema: Optional schema filter (case-insensitive). Pass None
to include all schemas.
table_name: Optional table name filter (case-insensitive). Pass None
to include all tables.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| table_name | No | ||
| table_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, the description bears full responsibility. It states it returns masked columns and supports filtering, but lacks details on authentication, performance, or error conditions. It is adequate but not comprehensive.
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 structured with a summary line and parameter block, which is readable. However, it is slightly verbose with redundant phrases like 'Pass None' for each optional parameter, which could be tightened without losing 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 the existence of an output schema, the description appropriately focuses on input parameters and the source system. It covers filtering and case-insensitivity. It does not need to detail return values, making it sufficiently 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?
Despite 0% schema description coverage, the description's docstring provides clear explanations for all four parameters, including case-insensitivity and default null behavior for optional filters. This fully compensates for the schema 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 specifies the verb 'List' and the resource 'columns with dynamic data masking from sys.masked_columns'. It distinguishes from sibling tools like get_table_columns by focusing specifically on masked columns and includes filtering options.
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 through filtering options but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The agent must infer context from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proceduresA
List stored procedures on a warehouse or SQL Analytics Endpoint.
Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only procedures in this schema are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| schema | No | ||
| workspace | 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. It discloses that the tool lists all or filtered procedures based on the schema parameter, but omits behavioral traits such as side effects, authentication requirements, rate limits, or pagination behavior. The name implies a read operation, but this is not explicit.
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 concise, using two short paragraphs. The first paragraph states purpose and supported environments, and the second lists parameters. It is nearly fluff-free, though the parameter list could be integrated more tightly.
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 3 parameters, no annotations, and an output schema (not shown), the description is mostly complete. It explains what the tool does, where it works, and what each parameter is. It lacks details on return format or pagination, but with an output schema, this is acceptable.
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 adds clear meaning to all three parameters beyond the input schema's types. It explains that workspace and item are names or GUIDs, and that schema optionally filters results. With 0% schema description coverage, this compensation is strong.
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 that the tool lists stored procedures on a warehouse or SQL Analytics Endpoint. The verb 'list' and resource 'stored procedures' are specific, and the tool is easily distinguished from siblings like get_procedure, drop_procedure, and create_procedure.
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 mentions that stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints, providing context. However, it does not explicitly state when to use this tool versus alternatives like get_procedure or list_functions, nor does it provide any 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_request_historyA
Return completed SQL requests from queryinsights.exec_requests_history.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on submit_time. until: Optional ISO-8601 upper bound on submit_time.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| limit | No | ||
| since | No | ||
| until | No | ||
| workspace | 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, the description should disclose behavioral traits like read-only status, authentication requirements, or result order. It only states the source and parameters, missing important 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?
One concise sentence plus bullet-proof arg definitions. No fluff, front-loaded with 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 output schema exists, the description adequately covers parameters and source. Missing minor details like default sorting order, but overall sufficient for a list 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 description includes a detailed args block explaining each parameter's meaning, format (ISO-8601, name/GUID), and constraints (1-10000). This fully compensates for the 0% 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 it returns completed SQL requests from a specific view (queryinsights.exec_requests_history). The verb 'return' and specific resource distinguish it from siblings like list_running_queries.
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 does not provide guidance on when to use this tool versus alternatives like list_running_queries or list_frequent_queries. It assumes the agent infers context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_restore_pointsB
Return all restore points for a warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral disclosure. It only states that it returns all restore points, omitting details like pagination, sorting, or any side effects. This is insufficient for a list operation.
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 very concise with a single sentence. It is front-loaded and easy to parse, though it could be slightly more informative without losing conciseness.
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?
The tool has an output schema, so return values are defined. However, given the number of sibling tools and the lack of usage guidance, the description is minimally complete. It does not address common concerns like result count or required permissions.
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. It adds minimal meaning by linking the tool to a warehouse, but does not explain the workspace parameter or the relationship between parameters. The description is too vague to fully clarify parameter semantics.
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 (return all), the resource (restore points), and the scope (for a warehouse). It effectively distinguishes from sibling tools like get_restore_point, create_restore_point, etc.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., get_restore_point for a single point). There is no mention of prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_running_queriesA
Return all currently-executing queries on a warehouse or SQL Analytics Endpoint.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It states the tool returns currently-executing queries, implying a read operation, but does not disclose potential limitations (e.g., pagination, permission requirements, result size). Minimal additional behavioral context beyond the obvious.
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?
Description is concise, with a clear one-line summary and an argument list. No redundant sentences. Could be slightly more streamlined (e.g., remove 'Args' formatting), but structure is effective and front-loaded with the main action.
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 that an output schema exists (not shown), the description adequately covers the tool's purpose and inputs. It could mention what fields are returned (e.g., query ID, status), but overall it's complete for a straightforward list tool. No critical omissions.
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?
Input schema has 0% description coverage (no schema descriptions). Description adds meaning by specifying each parameter: 'Workspace name or GUID' and 'Item: Warehouse or SQL Analytics Endpoint name or GUID.' This compensates for missing schema descriptions, providing necessary 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?
Description clearly states the tool returns all currently-executing queries on a specific warehouse or SQL Analytics Endpoint. Verb 'Return' and resource 'currently-executing queries' are unambiguous. Distinguishes from siblings like list_long_running_queries and list_frequent_queries by focusing on active queries.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., list_long_running_queries for long-running queries). No prerequisites or scenarios provided. Description implies usage context (fetching active queries) but lacks comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schemasA
List user-defined SQL schemas on a warehouse or SQL Analytics Endpoint.
System schemas (sys, INFORMATION_SCHEMA, db_* fixed-role
schemas, guest) are excluded. dbo is included as it is
user-writable.
Listing schemas is a read-only operation and works on both Fabric Data Warehouses and SQL Analytics Endpoints.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the operation is read-only and covers both endpoints. Explains which schemas are excluded (system schemas) and that dbo is included, offering behavioral insight beyond the basic action.
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?
Extremely concise: a single paragraph that front-loads the main purpose, then adds exclusions and args. Every sentence is essential, no fluff.
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?
Covers all necessary context for a list tool: scope, exclusions, compatibility, and parameter descriptions. Output schema is present, so return values need not be described. Complete for the task.
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?
Compensates for zero schema coverage by describing each parameter (workspace and item) with name format guidance (name or GUID). Adds meaning beyond the bare property definitions.
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?
Clearly states the tool lists user-defined SQL schemas, distinguishing it from other schema operations. Specifies exclusions and inclusions, leaving no ambiguity about the resource and action.
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?
Provides context on when to use (listing schemas) and that it works on both warehouse and SQL Analytics Endpoints. Does not explicitly contrast with siblings like create_schema or delete_schema, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_security_policiesA
List row-level security policies from sys.security_policies.
Returns all security policies and their predicates for the target Data Warehouse or SQL Analytics Endpoint.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions it returns all policies and predicates, indicating a read operation, but lacks details on permissions or side effects. Adequate for a list 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?
Three sentences: purpose, return details, and parameter clarification. No redundant information; front-loaded with key action.
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?
Output schema exists but not provided. Description states it returns all policies and predicates, which is sufficient for a list tool. With 2 simple parameters, no further completeness needed.
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 coverage is 0%, but description explains parameters: workspace as 'Workspace name or GUID' and item as 'Warehouse or SQL endpoint name or GUID', adding meaning beyond the schema's type-only definition.
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?
Clearly states it lists row-level security policies from sys.security_policies, specifying the source. Differentiates from sibling tools like drop_security_policy and create_security_policy that perform other actions.
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?
No explicit guidance on when to use this tool vs alternatives like add_security_predicate or set_security_policy_state. Usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_session_historyA
Return completed sessions from queryinsights.exec_sessions_history.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on session_start_time. until: Optional ISO-8601 upper bound on session_start_time.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| limit | No | ||
| since | No | ||
| until | No | ||
| workspace | 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 full burden. It indicates the tool performs a read operation (returns data), but does not disclose potential side effects, rate limits, required permissions, or data freshness. The description only states the data source and parameters, leaving behavioral traits like idempotence or caching unaddressed.
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 structured as a compact list of parameter definitions after a clear one-line purpose statement. It is efficient with no redundant phrases, but the format is slightly inconsistent (first sentence then parameter block), which is acceptable for a tool with 5 parameters.
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 presence of an output schema (not shown), the description need not detail return values. It adequately covers parameters and constraints (limit bounds, optional time filters). However, it does not mention ordering, pagination beyond limit, or whether results are limited to a specific time window if since/until omitted.
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, the description fully explains all parameters: workspace and item as identifiers, limit with range and default, and since/until as ISO-8601 bounds. This adds substantial meaning beyond the schema's type/default definitions, enabling an agent to correctly use each 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 'Return completed sessions from queryinsights.exec_sessions_history', specifying both the source and the subset (completed). This distinguishes it from sibling tools like list_running_queries, which target ongoing sessions, and provides a clear verb-resource pairing.
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 does not explicitly mention when to use this tool versus alternatives. While the term 'completed sessions' implies it is not for running sessions, there is no direct guidance or exclusion criteria provided, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_snapshotsB
Return all snapshots belonging to a warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | 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 full burden. It only states the basic operation without disclosing behavioral traits like required permissions, list limits, or response format. The presence of an output schema is noted but the description itself adds no 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 immediately conveys the tool's purpose. However, it is somewhat underinformative, but this is more a completeness issue than conciseness.
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 minimal description, lack of annotations, and two required parameters, the description is incomplete. It does not explain prerequisites, filtering, ordering, or pagination. The existence of an output schema mitigates missing return value details, but overall context is insufficient.
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 the input schema provides no descriptions for parameters. The description does not explain what 'workspace' and 'warehouse' represent or any constraints, failing to add meaningful information beyond the schema.
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 ('Return'), the resource ('all snapshots'), and the scope ('belonging to a warehouse'). It effectively differentiates from sibling tools like create_snapshot, delete_snapshot, and rename_snapshot.
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 when needing to list snapshots for a specific warehouse, but provides no explicit guidance on when to use this tool versus alternatives (e.g., list_restore_points) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sql_endpointsA
List all SQL analytics endpoints in a workspace.
Args:
workspace: Workspace name or GUID. Optional when all_workspaces
is True; required otherwise.
all_workspaces: When True, ignore workspace and aggregate
results across every workspace the caller can see.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | ||
| all_workspaces | 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. It mentions listing behavior and parameter interaction, but does not disclose permissions, error handling, or potential side effects. The read-only nature is implied but not explicitly confirmed.
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: two sentences for the main purpose and a clear block explaining arguments. No unnecessary words 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 presence of an output schema (implied but not shown), the description covers the basic function and parameter logic. However, it could be more complete by including a note about permissions or typical use cases to differentiate from siblings.
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?
Since schema description coverage is 0%, the description adds significant value by explaining the relationship between 'workspace' and 'all_workspaces' (workspace optional when all_workspaces is True). This goes beyond the schema which only provides types and defaults.
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 lists all SQL analytics endpoints in a workspace, using a specific verb('List') and resource('SQL analytics endpoints'). It distinguishes itself from siblings like 'list_sql_pools' or 'list_warehouses' by the specific resource type.
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 explains the conditional usage of the 'workspace' and 'all_workspaces' parameters, but does not provide guidance on when to use this tool over alternatives like 'get_sql_endpoint' or other listing tools. No explicit when-not or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sql_permissionsA
List T-SQL database permissions from sys.database_permissions.
Reads from sys.database_permissions joined to sys.database_principals. Returns DATABASE, SCHEMA, and OBJECT class securables with readable names.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
principal: Filter by principal name (optional).
schema: Filter by schema name -- returns SCHEMA class rows for this
schema (optional).
object_name: Filter by qualified object name <schema>.<object>
-- returns OBJECT class rows for this object (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| schema | No | ||
| principal | No | ||
| workspace | Yes | ||
| object_name | 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 behavioral burden. It describes reading from system views but does not explicitly state it is read-only or that no modifications occur. It also does not disclose permission requirements or rate limits. However, the description does reveal the data source and return classes.
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 concise: a brief introductory sentence followed by a structured Args list. Every sentence is purposeful, with no redundancy. The main action is stated upfront, and optional parameters are clearly separated.
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 (5 parameters, no annotations, but presence of output schema), the description covers the purpose, data source, return classes, and optional filters. It could explicitly mention the read-only nature, but overall it provides sufficient context for an AI agent to invoke correctly.
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. It provides clear, human-readable meanings for all 5 parameters, including optional filters for principal, schema (with behavior note), and object_name (with format requirement). This adds substantial value beyond the schema's type-only definitions.
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 it lists T-SQL database permissions from sys.database_permissions, specifying the source and scope. It explains it returns DATABASE, SCHEMA, and OBJECT class securables with readable names, distinguishing it from sibling permission tools like grant_permission or list_item_permissions.
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?
No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or comparative advantages relative to sibling tools like my_permissions or list_item_permissions. Usage context must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sql_pool_insightsA
Return SQL pool insight events from queryinsights.sql_pool_insights.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL Analytics Endpoint name or GUID. limit: Maximum rows to return (1-10000, default 100). since: Optional ISO-8601 lower bound on timestamp. until: Optional ISO-8601 upper bound on timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| until | No | ||
| warehouse | Yes | ||
| workspace | 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 present, so the description carries the behavioral disclosure burden. It communicates a read-only retrieval operation and documents parameter-level constraints like limit range and ISO-8601 time bounds, but it does not state ordering, range inclusivity, or any prerequisites. The behavior is reasonably transparent for a list operation.
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 purpose sentence is front-loaded and the Args section is a compact, per-parameter list with no filler. Every line conveys a meaningful semantic or constraint.
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?
With an output schema present and only five simple parameters, the description covers purpose, data source, and all argument semantics. It lacks explicit sibling usage guidance and details like sort order or whether bounds are inclusive, but these are minor for a read-only listing 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?
Schema description coverage is 0%, and the description fully compensates: workspace/warehouse accept names or GUIDs, since/until are specified as ISO-8601 timestamp bounds, and limit includes range and default. This adds substantial meaning beyond the bare JSON schema types.
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 first sentence states a specific verb ('Return') and a specific resource ('SQL pool insight events from queryinsights.sql_pool_insights'), which is precise and distinct from sibling tools. It does not explicitly call out a sibling or contrast its scope, so it stops short of full 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 does not say when to use this tool instead of alternatives like list_request_history, list_running_queries, or list_frequent_queries. Usage context is implied by the specific resource name and source table, but no exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sql_poolsA
Return the list of custom SQL pools for a workspace.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | 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, the description carries the behavioral burden. It usefully discloses the admin role requirement and the beta/preview API status, which are important operational constraints. For a simple list operation this is solid, though it does not mention pagination or error 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 short, front-loaded with the core purpose, and each sentence earns its place: the action, the access requirement, and the API stability warning. No filler or repetition.
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?
For a single-parameter tool with an output schema, this is nearly complete: it states what is returned, scoping, access requirements, and beta/preview risk. The main gaps are alternative-tool routing and workspace parameter semantics, but the overall context is sufficient for a straightforward list operation.
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 missing parameter documentation. The description only repeats that the action applies to a workspace, without explaining whether the workspace value is an ID, name, or path, or how to obtain it. This adds little beyond the schema's property name and type.
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 a specific verb and resource: 'Return the list of custom SQL pools for a workspace.' The phrase 'custom SQL pools' clearly distinguishes this from sibling tools like list_warehouses or list_sql_endpoints, and the workspace scoping is explicit.
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 a prerequisite ('Requires workspace admin role') but no guidance on when to choose this tool over related alternatives such as list_sql_pool_insights or get_sql_pools_status. No when-to-use or when-not-to-use information is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statisticsA
List statistics on a warehouse or SQL Analytics Endpoint.
Both Data Warehouses and SQL Analytics Endpoints are supported.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only statistics on tables in this schema are returned. table: When provided, only statistics on this table (unqualified name) are returned. user_only: When True, only user-created statistics are returned. auto_only: When True, only auto-created statistics are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| table | No | ||
| schema | No | ||
| auto_only | No | ||
| user_only | No | ||
| workspace | 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 must carry the behavioral burden. It clarifies that both Data Warehouses and SQL Analytics Endpoints are supported and describes the filtering semantics for schema, table, user_only, and auto_only. However, it does not disclose whether the tool is read-only, how the boolean filters interact, or any access requirements. For a listing operation this is somewhat sufficient, but not fully transparent.
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 well-structured with a one-line summary, a supported-resources note, and a clean Args list. It is front-loaded with the core purpose and contains no filler or redundant statements. Every sentence contributes useful 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?
The description covers all six parameters, the supported resource types, and the filtering behavior, which is enough to invoke the tool correctly. An output schema is present, so not describing return values is acceptable. The main gap is the lack of guidance on how this tool relates to show_statistics and other statistic-related siblings, which would improve contextual 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 schema has 0% description coverage, so the description must fully compensate for parameter semantics. It does: each parameter is explained with meaningful details such as 'Workspace name or GUID,' 'unqualified name' for table, and the exact filtering behavior for user_only and auto_only. This goes well beyond the bare schema names.
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 function: 'List statistics on a warehouse or SQL Analytics Endpoint.' The verb 'list' and the resource scope are specific, and the supported resource types are spelled out. However, it does not differentiate this tool from the sibling 'show_statistics' tool, so an agent may need additional context to choose between them.
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 explains what the tool does and what parameters filter results, but it does not provide guidance on when to use this tool versus alternatives like show_statistics, create_statistics, or other statistics tools. No when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesA
List SQL tables on a warehouse or SQL Analytics Endpoint.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only tables in this schema are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| schema | No | ||
| workspace | 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, the description carries the full disclosure burden and does state the filter semantics: 'When provided, only tables in this schema are returned,' plus the location scope. It doesn't cover edge behaviors like default schema inclusion, permissions, or whether views are excluded, but for a read-only listing these are minor 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 purpose line is front-loaded followed by a compact, structured Args block. Every sentence serves a purpose; there is no filler or repetition of schema fields, and the parameter documentation is warranted given zero schema descriptions.
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?
For a low-complexity, 3-parameter listing tool with an output schema provided, the description covers inputs and behavior adequately. The main omission is an explicit statement that it returns only tables (not views) and what happens when schema is omitted, though the schema default of null suggests all schemas.
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%, but the description compensates by documenting all three parameters, including the non-obvious semantics that item is a warehouse or SQL endpoint name/GUID and that schema is a filter. Without this, the bare property names would leave the agent guessing about item's meaning.
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 opening line states a specific verb, resource, and scope: 'List SQL tables on a warehouse or SQL Analytics Endpoint.' This clearly separates it from siblings like list_views (views), list_schemas (schemas), and list_warehouses, so an agent can distinguish the target resource without inspecting the schema.
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 required parameters (workspace, item) and the optional schema filter imply the call pattern, and the scope is stated. However, the description gives no explicit guidance on when to prefer this tool over siblings such as list_views or list_schemas, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_table_sync_statusA
Show per-table metadata sync freshness via sys.dm_db_external_tables_log_status.
Only supported on SQL Analytics Endpoints (not Data Warehouses), and only
on endpoints created after the workspace's 'New metadata sync' (preview)
setting was enabled. A table with no matching DMV row still appears, with
its sync fields null instead of the row being dropped -- this means no
sync information is available for that table, NOT that it has never
synced; do not treat a null row as proof the table has never synced.
IMPORTANT for agents: by default this listing only includes tables
already present in the endpoint's catalog (sys.tables), which is
itself maintained by the metadata sync. A Lakehouse table whose
discovery has not completed, or has failed, has no catalog row and so
is absent from this result entirely -- it will not appear as a row
with empty fields, it simply will not be there. Do not conclude a
table does not exist, or was deleted, just because it is missing from
this list.
Pass check_lakehouse=True to close part of that gap: it
cross-references the backing Lakehouse's own table inventory (one or
more extra REST calls -- avoid setting this on every call of a tool an
agent may invoke repeatedly) and adds a row with
in_endpoint_catalog=false and all sync fields null for every
table it finds there but not in the catalog, comparing names exactly
(case-sensitively, matching Fabric's default collation). A Lakehouse
table that differs from a catalog table only by case gets
case_mismatched_catalog_name set to that catalog name instead of
being reported as a flat miss.
This works for both classic and schema-enabled Lakehouse-backed
endpoints (the schema-enabled path uses a preview OneLake table API).
If the endpoint's backing item cannot be resolved to a Lakehouse at
all (a mirrored database, or similar), check_lakehouse=True
raises a ToolError explaining why, rather than silently returning
the unchanged catalog-only result: a caller that explicitly asked for
this cross-check must never read "no extra rows" as "fully
discovered". check_lakehouse=True also cannot be combined with
schema or table (raises a ToolError): it always compares the
whole endpoint. If check_lakehouse=True fails or an expected table
is still missing after trying it, call
refresh_sql_endpoint_metadata (or tell the user to run
fdw sql-endpoints refresh) to force an item-level sync, then check
again.
Args:
workspace: Workspace name or GUID.
item: SQL Analytics Endpoint name or GUID. Data Warehouses are
rejected with a ToolError.
schema: When provided, only tables in this schema are returned.
table: When provided, filter to this single (bare, unqualified)
table name. Requires schema to also be given.
check_lakehouse: When True, cross-reference the backing
Lakehouse's table inventory for tables missing from the
endpoint catalog entirely. See above for its limits. Mutually
exclusive with schema and table.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| table | No | ||
| schema | No | ||
| workspace | Yes | ||
| check_lakehouse | 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 the full burden of behavioral disclosure, and it excels. It discloses that null sync fields mean 'no sync information available' rather than 'never synced', that tables missing from the catalog are absent entirely rather than appearing as null rows, that check_lakehouse=True makes extra REST calls, that it raises ToolError on unsupported backing items, and that case mismatches are handled specially. This is exceptionally transparent about edge cases and failure modes.
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 long but every section earns its place: the core purpose is front-loaded, followed by critical caveats, then the optional flag behavior, then parameter details. The 'IMPORTANT for agents' section is clearly marked and the parameter list is structured. It loses one point only because the length is substantial and some caveats could arguably be condensed, but the density of critical information justifies most of the length.
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?
For a tool with 5 parameters, no annotations, and an output schema, the description is remarkably complete. It covers supported environments, failure modes, edge cases (null rows, absent rows, case mismatches), performance implications, mutual exclusions, and follow-up actions. The output schema exists, so return values need not be described. Nothing an agent needs to call this tool correctly is missing.
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 the schema's bare parameter names, and it does thoroughly. It explains that workspace is a name or GUID, item is a SQL Analytics Endpoint name or GUID (with Data Warehouses rejected), schema filters to a schema, table requires schema to also be given, and check_lakehouse cross-references the Lakehouse inventory with mutual exclusivity constraints. Every parameter's semantics are fully explained beyond the schema.
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 opens with a specific verb and resource: 'Show per-table metadata sync freshness via sys.dm_db_external_tables_log_status.' It clearly distinguishes this from sibling tools like refresh_sql_endpoint_metadata and list_tables by focusing on sync freshness rather than table listing or refresh actions. The scope (SQL Analytics Endpoints only) is stated immediately, making the tool's purpose unmistakable.
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 explicit when-to-use guidance: it states the tool is only supported on SQL Analytics Endpoints (not Data Warehouses), explains when check_lakehouse=True should be used, and explicitly names the alternative tool (refresh_sql_endpoint_metadata) to call when an expected table is still missing. It also warns against setting check_lakehouse on every call due to extra REST calls, giving clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewsA
List SQL views on a warehouse or SQL Analytics Endpoint.
Args: workspace: Workspace name or GUID. item: Warehouse or SQL endpoint name or GUID. schema: When provided, only views in this schema are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| schema | No | ||
| workspace | 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 behavioral disclosure burden. The verb 'List' implies a read-only enumeration, and the schema parameter behavior is explained ('only views in this schema are returned'). However, it does not explicitly state read-only semantics, permissions, pagination, or what happens when no views existβthough the output schema mitigates some return-format ambiguity.
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 opens with a clear one-sentence purpose and then lists only the parameter meanings. Every sentence adds useful information, and nothing is redundant or padded. It is appropriately sized for a simple listing tool.
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, an output schema, and complete parameter descriptions, the definition is nearly sufficient. The only notable gap is the absence of sibling-usage guidance and explicit read-only confirmation, but the core facts needed to invoke the tool correctly are present.
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%, and the description fully compensates for all three parameters. It explains that workspace is a name or GUID, item is a warehouse or SQL endpoint name or GUID, and schema is an optional filter controlling which views are returned. This is exactly the semantic detail the schema lacks.
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 a specific verb and resource: 'List SQL views on a warehouse or SQL Analytics Endpoint.' This clearly distinguishes the tool from siblings like read_view, drop_view, create_view, and list_tables by naming the object type and the target resource.
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 its use caseβwhen you need to enumerate SQL viewsβbut it never explicitly contrasts with alternatives such as list_tables, get_view, or drop_view. There is no 'use this when' or 'instead of' guidance, so the agent must infer the tool's role from its name and wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_warehousesA
List all warehouses and SQL analytics endpoints in a workspace.
Args:
workspace: Workspace name or GUID. Optional when all_workspaces
is True; required otherwise.
all_workspaces: When True, ignore workspace and aggregate
results across every workspace the caller can see.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | ||
| all_workspaces | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It mentions aggregation across workspaces but omits safety guarantees, error cases, pagination, or permissions. Adequate but not thorough.
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 concise and front-loaded with the main purpose. The Args section is structured and every sentence adds value without 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 2 optional params and an output schema, the description explains parameter behavior and aggregation sufficiently. No missing critical information for a list operation.
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?
Since schema coverage is 0%, the description fully compensates by explaining workspace optionality and all_workspaces aggregation behavior, adding significant meaning beyond the schema's type/default info.
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 it lists both warehouses and SQL analytics endpoints, using specific verbs and resources. It distinguishes from siblings like list_workspaces and list_sql_endpoints by combining both entity types.
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 guidance on parameter usage (workspace vs all_workspaces) but does not explicitly state when to use this tool over siblings like list_sql_endpoints for endpoints only. No 'when-not' or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesA
List all Fabric workspaces the caller has access to.
When a workspace allowlist is configured (via FABRIC_MCP_WORKSPACES
env var or [mcp] workspace_allowlist in config.toml) only the
workspaces that match the allowlist (by name or GUID) are returned.
| 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?
The description discloses the key behavioral trait of allowlist filtering based on environment variables or config. No annotations are provided, so the description carries the full burden. It could mention pagination or response structure but is reasonably transparent.
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?
Two sentences: first states purpose, second adds important filtering context. No redundant information, every word earns its place.
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 an output schema exists, the description does not need to explain return values. It covers purpose and filtering behavior completely for a listing 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 zero parameters, and schema description coverage is 100% (trivially). The description adds no parameter semantics because there are none. Baseline score of 3 is appropriate.
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 lists all Fabric workspaces accessible to the caller. The verb 'List' and resource 'workspaces' are specific, and the mention of allowlist filtering distinguishes it from similar tools like get_workspace.
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 explains the allowlist filtering behavior, implying when to use this tool. However, it does not explicitly state when not to use it or compare to alternatives like get_workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_table_from_urlA
Load data into a Data Warehouse table via COPY INTO from a remote URL.
Supported file types: CSV, PARQUET. JSON remote URLs require
downloading and converting locally first; use the CLI tables load
command for local files (including JSON).
For OneLake or same-tenant URLs, no credential is needed. For secured
external URLs (Azure Blob Storage SAS, etc.), supply credential_type
and the appropriate secret/identity values.
CAUTION: This operation loads data into the target table. Confirm the source URL and target table before calling.
Note: secret / identity values are accepted but are NEVER logged
or included in any debug output.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
url: Source URL (OneLake DFS URL or external Azure Blob URL).
file_type: CSV or PARQUET.
credential_type: Credential type for the source URL.
secret: Credential secret (not logged).
identity: Identity for managed-identity or service-principal.
delimiter: CSV column delimiter.
has_header: Whether the CSV file has a header row.
encoding: CSV file encoding.
field_quote: CSV field-quote character.
row_terminator: CSV row terminator.
max_errors: Maximum errors before aborting.
rejected_row_location: URL for rejected-row output.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| item | Yes | ||
| secret | No | Credential secret (SAS token, client secret, or account key). NEVER log or echo this value. | |
| encoding | No | CSV file encoding (e.g. 'UTF8', 'UTF8BOM'). | |
| identity | No | Identity value for managed-identity or service-principal credential types. | |
| delimiter | No | CSV column delimiter (e.g. ',', '\t'). | |
| file_type | Yes | File type to load. JSON is not supported for remote URLs; download and convert locally first. | |
| workspace | Yes | ||
| has_header | No | When True, the first CSV row is a header and is skipped. | |
| max_errors | No | Maximum number of errors before aborting. | |
| field_quote | No | CSV field-quote character. | |
| qualified_name | Yes | ||
| row_terminator | No | CSV row terminator (e.g. '\n', '\r\n'). | |
| credential_type | No | Credential type for secured external URLs. Use 'none' for OneLake or public URLs. | none |
| rejected_row_location | No | URL to write rejected rows to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses important behavioral traits: credentials are never logged, OneLake/same-tenant URLs need no credential, JSON remote URLs are unsupported, SQL Analytics Endpoints are rejected, and it provides a CAUTION alert about loading data into the target table. It stops short of explaining whether data is appended or replaced, but the overall behavioral disclosure is strong.
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 well-structured: a clear purpose statement, supported file types, credentials, a caution, a security note, and a thorough Args list. Every section adds necessary information for correct use at the appropriate level of detail. It is longer than average but appropriately so for a complex 15-parameter tool.
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?
The description covers the essential operational context: supported file types, authentication scenarios, security guarantees, target table caution, and parameter semantics. With an output schema present, return values need no explanation. The only notable gap is not clarifying the append-vs-overwrite behavior of COPY INTO and not explicitly differentiating from the sibling 'import_table_from_url'.
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 coverage is only 73%, and the description compensates by documenting every parameter in the Args section. It adds meaningful examples such as 'dbo.sales' for qualified_name, clarifies 'SQL Analytics Endpoints are rejected' for item, and explains URL and credential semantics beyond the schema. This fully resolves the schema 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 core action: 'Load data into a Data Warehouse table via ``COPY INTO`` from a remote URL.' This identifies the specific verb, resource, and method. However, it does not explicitly distinguish itself from the sibling tool 'import_table_from_url', which also likely involves URL-based loading, so it just misses the full 5.
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 gives clear usage context: use for remote URLs, use CLI for local files, JSON remote URLs require local conversion, and credentials depend on URL type. It also warns that SQL Analytics Endpoints are rejected, which is an exclusion. It does not explicitly reference sibling MCP tools as alternatives, only the external CLI, so it earns a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_permissionsA
Return permissions for the current connection via sys.fn_my_permissions.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
scope: Scope string -- "database" (default), "schema:<name>",
or "object:<schema>.<object>".
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| scope | No | ||
| workspace | 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, the description carries full burden. It states the tool is read-only and returns permissions, but does not disclose details like authentication requirements, that it only shows the calling user's permissions, or any other behavioral traits. Adequate but not thorough.
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 sentence followed by a bullet list of parameters. It is front-loaded with purpose and contains no unnecessary words, efficiently conveying all 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 three parameters, two required, and an output schema, the description covers purpose and parameter formats adequately. It could mention that it only returns the user's own permissions, but overall it is sufficiently complete for this 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?
Since schema description coverage is 0%, the description adds significant meaning. It explains 'workspace' and 'item' as names or GUIDs, and details the 'scope' parameter with examples and default, fully compensating for the schema's lack of descriptions.
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 'Return permissions for the current connection via sys.fn_my_permissions', providing a specific verb and resource. It distinguishes from siblings like list_item_permissions and list_sql_permissions by emphasizing 'current connection', making the purpose clear and unique.
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 checking own permissions but lacks explicit guidance on when to use versus alternatives. No 'when not to use' or mention of other permission-related tools is provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_tableA
Return up to count rows from a table as JSON-serialisable columns + rows.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
count: Maximum number of rows to return (1-10000, default 10).
as_of: Optional ISO-8601 UTC timestamp for a point-in-time (time-travel)
read. When supplied the query uses OPTION (FOR TIMESTAMP AS OF ...).
Omit to read the latest data.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| as_of | No | ||
| count | No | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description carries the full burden and does meaningful work: it states the return shape ('JSON-serialisable columns + rows'), the cap on rows ('up to *count*'), and the exact behavior of the as_of option ('uses OPTION (FOR TIMESTAMP AS OF ...)'). It does not cover error cases or permission requirements, but for a read operation it gives solid 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 tight and well-structured: a one-sentence summary followed by a focused args list. Every line adds a distinct piece of information, with the purpose front-loaded and no filler or repetition of schema titles.
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?
All five parameters are described with semantics and defaults, the time-travel behavior is explained, and the return shape is stated. Since an output schema exists, the description does not need to detail the return structure further. The tool is simple enough that no essential calling information is missing.
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 fully explain parameters. It does: workspace is 'Workspace name or GUID', item is 'Warehouse or SQL endpoint name or GUID', qualified_name includes an example 'dbo.sales', count gives range and default, and as_of explains ISO-8601 format and time-travel semantics. This goes well beyond the bare schema.
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 opens with a precise verb and resource: 'Return up to *count* rows from a table as JSON-serialisable columns + rows.' This clearly identifies the operation as reading table data and distinguishes it from related siblings like read_view (views), count_table_rows (counting), and list_tables (listing).
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 usage context is implied rather than explicit: it is clearly intended for reading row-level data from a table, and the as_of parameter describes when to use time-travel reads. However, it does not explicitly state when to prefer this tool over alternatives such as read_view, list_tables, or execute_sql, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_viewA
Return up to count rows from a view as JSON-serialisable columns + rows.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
count: Maximum number of rows to return (1-10000, default 10).
as_of: Optional ISO-8601 UTC timestamp for a point-in-time (time-travel)
read. When supplied the query uses OPTION (FOR TIMESTAMP AS OF ...).
Omit to read the latest data.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| as_of | No | ||
| count | No | ||
| workspace | Yes | ||
| qualified_name | Yes |
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, the description carries the behavioral burden, and it delivers useful traits: output is JSON-serialisable, rows are capped at count, and as_of triggers a FOR TIMESTAMP AS OF point-in-time query. It does not cover permissions or error behavior, but for a read-only tool with an output schema, the transparency is strong.
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 compact and well-structured: a one-line functional summary followed by a clean Args block. Every sentence adds value, and the most important behavior (count limit, output shape, time-travel) is front-loaded.
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 output schema exists, the description does not need to detail the exact return structure. All required parameters are explained, the optional parameter is fully specified, default/limits are stated, and the time-travel behavior is disclosed. An agent has everything needed to call it correctly.
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 no property descriptions, but the description documents all five parameters meaningfully: workspace and item accept names or GUIDs, qualified_name is shown with a dot-separated example, count has range/default, and as_of has format plus behavioral semantics. This fully compensates for 0% schema_description_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 opening sentence names a specific operation (Return rows), a resource (a view), a limit (count), and a return shape (JSON-serialisable columns + rows). The view+rows wording clearly distinguishes it from many siblings like get_view or list_views, though it does not explicitly contrast with the similar read_table sibling.
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?
No guidance is given for when to choose read_view over alternatives such as read_table, get_view, or count_view_rows, all of which appear in the sibling list. The only usage context provided is the as_of parameter ('Omit to read the latest data'), which is parameter-level advice, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_sql_endpoint_metadataA
Refresh metadata for a SQL analytics endpoint (sync from the underlying Lakehouse).
This is a long-running operation (LRO) that is polled to completion.
Returns a list of per-table sync results. Use this tool for SCHEMA
changes (tables added or dropped). For cheap, per-table DATA-only
staleness on a table you already know exists, use
refresh_table_metadata instead -- it does not pick up schema
changes.
Args:
workspace: Workspace name or GUID.
endpoint: SQL analytics endpoint name or GUID.
recreate_tables: When True, drop and recreate all tables during
the refresh. Use to resolve inconsistencies or force a clean
rebuild. Destructive β use with caution. Requires
FABRIC_MCP_ALLOW_DESTRUCTIVE=1 when enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes | ||
| workspace | Yes | ||
| recreate_tables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses the key behavioral traits: it is a long-running operation that must be polled, it syncs FROM the Lakehouse, it drops and recreates tables when recreate_tables is true (destructive behavior), and it requires an env var (FABRIC_MCP_ALLOW_DESTRUCTIVE=1) for the destructive path. This far exceeds the baseline disclosure expected for a tool with zero annotations.
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 well-structured: a clear one-line definition, then a note about LRO/polling, then usage guidance, then the parameter list. The content is dense but front-loaded (purpose first, then when to use, then caution). It's slightly verbose but every sentence earns its place. A 4 reflects that it's mostly tight but could condense the final 'sync from the underlying Lakehouse' phrase and the arg descriptions into a shorter form.
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?
The description gives usage context (schema vs data refreshes), LRO behavior, a destructive flag warning, and the env var requirement for destructive operations. With no annotations providedable, the description steps up and carries nearly all the behavioral burden. It doesn't document the output schema (though output schema exists in the tool definition), and it doesn't explicitly say the endpoint parameter is requiredβbut the schema marks that. Complete enough for an agent to decide when to call and what to expect.
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 add meaning beyond the bare parameter names. It does a reasonable job: workspace and endpoint are self-evident from context ('Refresh metadata for a SQL analytics endpoint'), and recreate_tables is explicitly explained ('drop and recreate all tables...'). However, it doesn't clarify that workspace/endpoint accept either name or GUID (though the Arg docs imply it by saying 'workspace: workspace name or GUID'), so meaning is mostly added. Why not 4? The parameter docs are terse, and no format or enum constraints are provided for the string parameters. 3 is fair because the schema is minimal and the description adds essential meaning for at least the destructive flag.
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 operation: 'refresh metadata for a SQL analytics endpoint, syncing from the underlying Lakehouse.' It names the resource (SQL analytics endpoint) and the specific action (sync metadata), and it differentiates from the sibling tool refresh_table_metadata by noting that this tool handles SCHEMA changes while the sibling handles per-table DATA-only staleness. This is a specific, well-distinguished purpose.
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 explicitly says when to use this tool ('SCHEMA changes (tables added or dropped)') and when NOT to use it (for cheap per-table data refresh on an existing table, use refresh_table_metadata instead). It also notes the operation is a long-running polled LRO. This is explicit, actionable guidance with alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_table_metadataA
Refresh one table's metadata via sys.sp_dw_refresh_ext_table.
This is the cheap, per-table refresh for DATA-only staleness: it
re-reads the table's underlying Delta log without a full item-level
sync. Use refresh_sql_endpoint_metadata instead when the SCHEMA
changed (tables added or dropped) -- this tool does not pick up
schema changes.
Only supported on SQL Analytics Endpoints (not Data Warehouses), and
only on endpoints created after the workspace's 'New metadata sync'
(preview) setting was enabled. Mutating (respects
FABRIC_MCP_READONLY) but NOT destructive -- it never drops or
recreates anything, so it does not require the
FABRIC_MCP_ALLOW_DESTRUCTIVE opt-in.
qualified_name must already exist in the endpoint's catalog --
the procedure does not create it, and raises a ToolError naming
the table instead. That same error also fires when the table exists
but you lack permission to it, since the driver does not
distinguish the two -- refresh_sql_endpoint_metadata only helps
the missing case, not a permissions one. The procedure may also
decline a table by type, for reasons Microsoft does not document,
raised as a ToolError in the same family as the legacy-sync one
above; that failure also points at refresh_sql_endpoint_metadata
(or fdw sql-endpoints refresh) as the working alternative.
Args:
workspace: Workspace name or GUID.
item: SQL Analytics Endpoint name or GUID. Data Warehouses are
rejected with a ToolError.
qualified_name: Dot-separated qualified table name, e.g.
dbo.sales.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It discloses that the tool is mutating but NOT destructive, that it respects FABRIC_MCP_READONLY, that it does not require FABRIC_MCP_ALLOW_DESTRUCTIVE, that it raises ToolError for missing tables/permissions/type rejections, and that the driver does not distinguish missing vs permission-denied. This is exceptionally transparent about side effects and failure modes.
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 long but every sentence earns its place: it covers scope, alternatives, prerequisites, safety profile, and error behavior. It is front-loaded with the core purpose and the key distinction from the sibling. Slightly verbose in the error-handling paragraph, but the density of useful information justifies the length.
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?
For a mutating tool with no annotations and 0% schema coverage, the description covers everything an agent needs: when to use it, when not to, prerequisites, safety profile, parameter semantics, and failure modes. The output schema exists, so return values need not be described. The only minor gap is not describing the success return value, but that is covered by the output schema.
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. It explains workspace (name or GUID), item (SQL Analytics Endpoint name or GUID, Data Warehouses rejected), and qualified_name (dot-separated, e.g. dbo.sales, must already exist). It doesn't give exact formats for workspace/item GUIDs, but the examples and constraints add substantial meaning beyond the bare schema.
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 a specific verb and resource ('Refresh one table's metadata via sys.sp_dw_refresh_ext_table') and immediately distinguishes it from the sibling refresh_sql_endpoint_metadata by scope (DATA-only staleness vs SCHEMA changes). It also names the exact stored procedure, leaving no ambiguity about what the tool does.
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 explicitly says when to use this tool (per-table, DATA-only staleness) and when NOT to use it (schema changes), naming the alternative refresh_sql_endpoint_metadata. It also gives platform prerequisites (SQL Analytics Endpoints only, not Data Warehouses, and only after 'New metadata sync' preview setting) and error-handling guidance for missing tables, permissions, and type-based rejections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_audit_groupA
Remove a single audit action group without overwriting the others.
Idempotent -- if the group is not present the current settings are returned unchanged. Auditing must already be enabled.
CAUTION: changes take effect immediately on the live audit policy.
CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. Two audit writes issued within that window can cause the second to silently revert the first. Space audit writes at least a few minutes apart.
Args:
workspace: Workspace name or GUID.
warehouse: Warehouse or SQL analytics endpoint name or GUID.
group: Action group name, e.g. BATCH_COMPLETED_GROUP.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries burden. Discloses idempotency, immediate effect on live policy, eventual consistency issues, and risk of silent reverts between writes. Highly transparent.
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?
Well-structured with clear sections: purpose, idempotency, cautions, args. Each sentence adds value; slightly long due to necessary cautionary details.
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 (mutation with side effects) and presence of output schema, description is complete: covers when to use, behavior, param details, and crucial timing warnings.
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 coverage is 0%, but description adds meaning for all three parameters: workspace and warehouse described as 'name or GUID', group with example 'BATCH_COMPLETED_GROUP'. Provides essential context not in schema.
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?
Description clearly states verb 'Remove' and resource 'audit action group'. Distinguishes from siblings by specifying 'single ... without overwriting the others' and mentions idempotency. Justification: Purpose is immediately clear and well-differentiated.
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?
Explicitly states prerequisite: 'Auditing must already be enabled.' Provides cautions about timing and eventual consistency. Does not explicitly state when not to use or alternatives, but implies distinction from set_audit_action_groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_snapshotD
Rename a warehouse snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| snapshot | Yes | ||
| workspace | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as side effects, permissions, reversibility, or dependencies. A rename operation likely overwrites metadata, but this is not stated.
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 excessively terse (5 words). While concise, it sacrifices informativeness; it essentially repeats the tool name without adding value.
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 4 parameters, zero schema descriptions, and a mutation operation, the description is woefully incomplete. It does not mention output, error conditions, or prerequisites.
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%, yet the description offers no explanation of the parameters ('workspace', 'snapshot', 'new_name', 'description'). The agent gets no help on formats, constraints, or meaning.
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 verb 'Rename' and resource 'warehouse snapshot,' which is clear but lacks distinguishing features from sibling rename operations (e.g., rename_table, rename_warehouse) or any scope.
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?
No usage guidance is provided. The description does not specify when to use this tool instead of alternatives like roll_snapshot_timestamp or update_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_tableA
Rename a SQL table via sp_rename (Data-Warehouse-only).
Renames the table in-place within the same schema using T-SQL
EXEC sp_rename. Both the current qualified name and the new bare
name are passed as bound parameters β no SQL injection is possible.
sp_rename cannot move a table to a different schema, so new_name
must be an unqualified (bare) name without a dot.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Current dot-separated qualified table name, e.g.
dbo.sales.
new_name: New table name (unqualified, e.g. sales_v2). Must not
contain a dot.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| new_name | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 behavioral disclosure burden. It explains the in-place same-schema rename, the EXEC sp_rename mechanism, bound parameters preventing SQL injection, and the rejection of SQL Analytics Endpoints. It could mention permissions or side effects on dependent objects, but it covers the most critical 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 well-structured and front-loaded, with the core purpose first, then mechanism, then constraints, then a concise Args list. Every sentence adds useful information; there is no filler or redundant restatement of the tool name.
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 and no nested objects, the description does not need to explain return values. It fully covers invocation semantics and constraints. The main gap is lack of permission requirements or warnings about dependent objects breaking after rename, which would make it fully 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%, but the Args section fully compensates by defining all four parameters with concrete examples and constraints: qualified_name as a dot-separated name, new_name as unqualified without a dot, item as warehouse rejecting SQL Analytics Endpoints, and workspace. This adds substantial meaning beyond the bare schema.
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 opens with a specific verb and resource: 'Rename a SQL table via sp_rename (Data-Warehouse-only).' It clearly distinguishes this from sibling rename tools (rename_warehouse, rename_snapshot, rename_view) by naming the target resource and the underlying mechanism.
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 strong usage context: it is Data-Warehouse-only, cannot move tables across schemas, and rejects SQL Analytics Endpoints. It does not explicitly name alternative tools for cross-schema moves, but the constraints are clear enough to prevent misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_viewA
Rename a SQL view via sp_rename.
Works on both Data Warehouses and SQL Analytics Endpoints.
The new name must be a bare (unqualified) identifier β sp_rename
cannot move a view across schemas.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Current dot-separated qualified view name,
e.g. dbo.vw_sales.
new_name: New bare view name (no schema prefix), e.g. vw_revenue.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| new_name | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description adds behavioral context: uses sp_rename, works on specific environments, and explains naming constraints. Could mention dependency impact but inherently clear for a rename.
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?
Three sentences plus an Args list. No wasted words, front-loaded with purpose, then usage context, then parameter details. Ideal structure for quick comprehension.
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 tool complexity (rename with constraints) and no annotations, description fully covers purpose, environment, parameter details, and edge cases. Output schema likely covers return values, so description 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?
All four parameters are described in detail with examples (e.g., qualified_name: 'dbo.vw_sales', new_name: 'vw_revenue'). Compensates for 0% schema description coverage by providing full semantics.
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?
Description explicitly states 'Rename a SQL view via sp_rename', clearly identifying the verb and resource. It distinguishes from sibling rename tools like rename_table and rename_function by specifying SQL view.
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?
Provides clear when-to-use context: works on Data Warehouses and SQL Analytics Endpoints. Includes important constraint that new name must be unqualified and cannot move schemas, guiding correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_warehouseB
Rename a Warehouse (and optionally update its description).
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| warehouse | Yes | ||
| workspace | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavioral traits. It mentions renaming but does not discuss side effects, permissions required, or whether the operation is destructive. For a mutation tool, this is insufficient.
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, consisting of a single sentence that is front-loaded with the verb. Every word serves a purpose, and there is no extraneous 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 that the tool performs a rename operation with 4 parameters and no parameter descriptions in the schema, the description is too minimal. It does not explain return values (though an output schema exists), success/failure cues, or any contextual constraints like whether the warehouse can be renamed while in 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?
With 0% schema description coverage, the description adds minimal meaning: it indicates 'new_name' is for the new name and 'description' is optional. However, it does not explain 'workspace' and 'warehouse' parameters, leaving the agent to infer from 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 action ('Rename') and the resource ('Warehouse'), and specifies that updating the description is optional. It is distinct from sibling tools like create_warehouse, delete_warehouse, and get_warehouse.
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 renaming warehouses, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it state prerequisites (e.g., warehouse must exist) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_warehouse_in_placeA
Restore a warehouse in-place to a restore point.
WARNING: This is a destructive, long-running operation. The warehouse will be unavailable for approximately 10 minutes while the restore completes.
Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string to restore to.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes | ||
| restore_point_id | Yes |
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, the description carries the full behavioral disclosure burden. It clearly warns that the operation is destructive and long-running, and states the warehouse will be unavailable for approximately 10 minutes. This is strong safety-relevant transparency, though it does not mention permissions or reversibility.
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 compact, front-loads the critical warning, and presents parameters in a predictable list. Every sentence adds useful information and there is no 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?
The description covers the essential invocation details: all three required parameters are explained, and the destructive, long-running nature is explicitly disclosed. The presence of an output schema reduces the need to describe return values, and no critical missing context stands out.
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. It does by clarifying that workspace and warehouse accept names or GUIDs, and that restore_point_id is an ID string. This adds practical meaning beyond the bare schema titles, though it could specify where to find a valid restore point ID.
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 a specific action ('Restore a warehouse in-place to a restore point') with clear verb, resource, and target. The 'in-place' qualifier distinguishes it from sibling restore-point management tools and from create/delete warehouse 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?
There is no explicit guidance on when to use this tool versus alternatives such as create_warehouse, delete_warehouse, or restoring from a snapshot. The destructive warning implies it is a last-resort operation, but no alternative is named or compared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_permissionA
Revoke permissions on a securable from a principal.
Executes REVOKE <permissions> ON <scope> FROM <principal>.
Blocked by FABRIC_MCP_READONLY. Requires
FABRIC_MCP_ALLOW_DESTRUCTIVE=1 because revoke removes an existing
permission (destructive operation).
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
permissions: Comma-separated permission tokens (e.g. "SELECT,INSERT").
principal: Principal name to revoke from (Entra UPN, app GUID, or role name).
scope: Securable class -- "DATABASE" (default), "SCHEMA", or
"OBJECT".
schema: Schema name (required when scope is "SCHEMA").
object_name: Qualified object name <schema>.<object> (required when
scope is "OBJECT").
columns: Optional list of column names for column-level security
(OBJECT scope only; permissions must be SELECT, UPDATE, or
REFERENCES). Pass None (omit) for no column restriction.
Passing an empty list raises a ToolError.
grant_option_only: When True, revokes only the grant option (adds
GRANT OPTION FOR), leaving the base permission in place.
cascade: When True, cascades the revocation to principals the
grantee has granted the permission to (adds CASCADE).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| scope | No | DATABASE | |
| schema | No | ||
| cascade | No | ||
| columns | No | ||
| principal | Yes | ||
| workspace | Yes | ||
| object_name | No | ||
| permissions | Yes | ||
| grant_option_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description explains the SQL execution, destructive nature, and effects of parameters like grant_option_only and cascade. This compensates for missing annotations.
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?
Well-structured with a summary followed by parameter list. Every sentence adds value, though it is slightly lengthy. Front-loads the main 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 complexity (10 params, destructive, output schema exists), the description covers all necessary aspects: purpose, security, parameter details, and special behaviors. Output schema likely documents return values.
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, but the description provides detailed explanations for all 10 parameters, including allowed values, defaults, and dependencies (e.g., schema required for SCHEMA scope). Fully compensates.
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 it revokes permissions using a SQL REVOKE command. It identifies the resource (securable) and action, but does not explicitly distinguish from sibling tools like grant_permission or deny_permission.
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?
Provides important environmental conditions (FABRIC_MCP_READONLY block, FABRIC_MCP_ALLOW_DESTRUCTIVE requirement) and notes it is destructive. However, lacks when-to-use vs alternatives like deny_permission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
roll_snapshot_timestampA
Roll a snapshot's timestamp forward (or reset to current).
Args: workspace: Workspace name or GUID. warehouse: Parent warehouse name or GUID (used for the SQL connection). snapshot_name: The snapshot database name to roll. new_dt: Optional ISO-8601 datetime string; defaults to CURRENT_TIMESTAMP. Naive datetimes (no timezone offset) are interpreted as UTC.
| Name | Required | Description | Default |
|---|---|---|---|
| new_dt | No | ||
| warehouse | Yes | ||
| workspace | Yes | ||
| snapshot_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the basic effect (timestamp change) and the default/UTC interpretation, but does not mention side effects, prerequisites, permissions, reversibility, or any impact on dependent objects.
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 very concise: a one-line summary followed by bullet-point parameter explanations. It is front-loaded with the core purpose and contains no unnecessary words.
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 parameter count (4) and absence of annotations, the description covers basic functionality and parameter details. An output schema exists (context signal), so return values are documented elsewhere. However, behavioral gaps (side effects, prerequisites) make it only minimally 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 adds meaning for all 4 parameters: workspace, warehouse, snapshot_name, and new_dt (optional, defaults, UTC interpretation). It sufficiently explains their roles beyond the schema titles.
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 ('roll a snapshot's timestamp forward or reset to current') and the resource (snapshot's timestamp). It effectively distinguishes from sibling tools like create_snapshot or delete_snapshot.
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?
No guidance on when to use this tool versus alternatives (e.g., creating a new snapshot or deleting). Context signals show many snapshot-related siblings but the description offers no exclusions or usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_audit_action_groupsA
Replace the audited action groups for a warehouse or SQL analytics endpoint.
Only replaces the action groups. Does not toggle the audit enabled or disabled state; if auditing was Disabled before the call it remains Disabled afterwards.
CAUTION: Each audit write reads current settings via an eventually-consistent GET that may lag a recent PATCH by several minutes. The retention period read from that GET is round-tripped; if retention was changed within the lag window, this call may silently revert it. Space audit writes at least a few minutes apart.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. action_groups: List of audit action group names.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes | ||
| action_groups | Yes |
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, the description fully discloses behavior: it only replaces action groups, does not affect audit state, and includes a detailed caution about eventual consistency and potential silent revert of retention period. This is excellent 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 well-structured with a main sentence, a clarifying note, a caution, and parameter list. It is front-loaded with the purpose. Minor room for improvement, but highly effective.
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?
The description covers the tool's behavior, side effects, and parameter meaning. An output schema exists, so return values are not required. It lacks error condition details, but overall it is sufficiently complete for the tool's complexity.
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?
Since schema description coverage is 0%, the description adds value by specifying that workspace and warehouse are names or GUIDs, and that action_groups is a list of names. While not extensive, it clarifies the format beyond the schema titles.
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 'Replace' and the resource 'audited action groups for a warehouse or SQL analytics endpoint'. This distinguishes it from siblings like add_audit_group (adds a single group) and remove_audit_group (removes a group).
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 explicitly states that it only replaces action groups and does not toggle the audit enabled/disabled state, which helps in deciding when to use it. However, it does not mention alternatives directly, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_audit_retentionA
Update the audit log retention period without changing the audit enabled/disabled state.
Audit must already be enabled; if disabled, enable it first with enable_audit.
CAUTION: The pre-flight GET used to round-trip the existing action-group list is eventually consistent and may lag a recent PATCH by several minutes. If the action-group list was changed within that window, this call may silently revert it. Space audit writes at least a few minutes apart.
Args: workspace: Workspace name or GUID. warehouse: Warehouse or SQL analytics endpoint name or GUID. days: Retention period in days (1-3650). The API enforces its own upper bound.
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | ||
| warehouse | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral traits: that it does not toggle audit state, and the caution about eventual consistency potentially reverting recent action-group changes. With no annotations provided, the description fully carries the burden of 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?
Well-structured with clear sections: purpose, prerequisite, caution, and parameter list. Slightly lengthy due to caution detail but remains efficient and readable.
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?
Covers prerequisites, side effects, and parameter details. Output schema exists but is not shown; description does not mention return value, but given output schema, this is acceptable. Overall complete for intended 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?
Adds meaning for all three parameters (workspace, warehouse, days) beyond the schema, specifying data types and constraints. Schema description coverage is 0%, so the description compensates well, though could include examples or format hints.
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: 'Update the audit log retention period without changing the audit enabled/disabled state.' This distinguishes it from sibling tools like enable_audit or disable_audit.
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?
Explicitly states prerequisite ('Audit must already be enabled; if disabled, enable it first with enable_audit') and provides a caution about eventual consistency, giving clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cluster_columnsA
Change (or remove) the data-clustering columns of an existing table.
Rebuilds the table via a transactional CTAS-swap:
CREATE TABLE [schema].[__recluster_<hex>] [WITH (CLUSTER BY (...))] AS SELECT * FROM [schema].[orig]DROP TABLE [schema].[orig]EXEC sp_renameto restore the original name
All three steps run inside ONE transaction. Any failure rolls back automatically β no orphan temp table is left behind.
CAUTION: This operation copies the full table (runtime is proportional
to table size). Dependent views and stored procedures that reference
this table by name are NOT automatically updated by sp_rename and
may need refreshing after the swap.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Dot-separated qualified table name, e.g. dbo.sales.
cluster_by: New list of column names for the CLUSTER BY clause
(up to 4). Pass null or an empty list to remove clustering
(rebuilds table without CLUSTER BY).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| cluster_by | No | ||
| qualified_name | Yes |
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 behavioral burden and does so exceptionally: it details the transactional CTAS-swap steps, automatic rollback on failure, full-table copy cost, and the fact that dependent views and stored procedures are not automatically updated. It also clarifies that null or an empty list removes clustering.
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 front-loaded with the core purpose, then uses numbered steps for the swap process, followed by the transaction guarantee, cautions, and support constraint. Every section earns its place and is organized for quick scanning by 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 destructive/rebuild complexity and zero parameter descriptions in the schema, the description is remarkably complete: it covers operational mechanics, failure safety, performance implications, dependent-object caveats, support boundaries, and parameter semantics. Since an output schema exists, omitting return value details is acceptable.
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, and it does for all four parameters. It explains workspace and item as names/GUIDs, defines qualified_name as a dot-separated table name like dbo.sales, and specifies cluster_by limits to up to 4 columns with null/empty-list behavior.
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 first sentence states a specific verb and resource: 'Change (or remove) the data-clustering columns of an existing table.' This clearly distinguishes the tool from siblings like get_cluster_columns and create_table by covering both setting and removal of clustering on an existing table.
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 clearly indicates when the tool applies: for an existing table needing cluster column changes, with an explicit exclusion that it is only supported on Fabric Data Warehouses and not SQL Analytics Endpoints. It does not explicitly name alternative tools for inspecting or rebuilding tables, but the scope and support constraints are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_maskA
Apply or replace a dynamic data mask on a column.
Executes ALTER TABLE ... ALTER COLUMN ... ADD MASKED WITH (FUNCTION = '...').
ADD MASKED replaces any existing mask on the column without error.
Blocked by FABRIC_MCP_READONLY.
Supported mask function types:
"default"-- full masking; no extra args."email"-- email masking (exposes first char and".com"suffix); no extra args."random"-- numeric random mask; requires start and end."partial"-- custom string partial mask; requires prefix, padding, and suffix.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
table_schema: Schema name of the target table.
table_name: Name of the target table.
column_name: Name of the column to mask.
fn_type: Mask function type -- "default", "email", "random",
or "partial" (case-insensitive).
start: Lower bound for random() masking (required when fn_type is
"random"). Must be <= end.
end: Upper bound for random() masking (required when fn_type is
"random").
prefix: Leading characters to expose for partial() masking (required
when fn_type is "partial").
padding: Replacement padding string for partial() masking (required
when fn_type is "partial"). Must not contain ", ),
;, --, control characters (including U+0085, U+2028,
U+2029), and must not exceed 128 characters.
suffix: Trailing characters to expose for partial() masking (required
when fn_type is "partial").
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| item | Yes | ||
| start | No | ||
| prefix | No | ||
| suffix | No | ||
| fn_type | Yes | ||
| padding | No | ||
| workspace | Yes | ||
| table_name | Yes | ||
| column_name | Yes | ||
| table_schema | Yes |
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 takes full responsibility for behavioral disclosure. It explains the underlying SQL command, the fact that ADD MASKED replaces existing masks, and that it is blocked by READONLY. It also details the mask function types and their parameter requirements. However, it omits potential side effects (e.g., impact on access, reversibility) and error conditions.
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 well-structured: a concise summary line, followed by a clear breakdown of mask function types and a detailed Args section with bullet points. It uses code formatting for emphasis. Every sentence is informative, and the length is justified by the tool's complexity.
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 high parameter count and presence of an output schema, the description adequately covers the tool's purpose, parameters, and behavioral traits. It could be slightly more complete by mentioning common error scenarios or return value shape, but the output schema likely covers that. Overall, it is sufficiently complete for an agent to invoke correctly.
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 fully compensates. It provides detailed explanations for all 11 parameters, including required vs optional status, conditional requirements (e.g., start/end for random), and constraints (padding character restrictions, length limits). This adds significant value beyond the schema alone.
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 it applies or replaces a dynamic data mask on a column, specifies the SQL command (`ALTER TABLE ... ADD MASKED`), and details the supported mask function types. It effectively distinguishes this from sibling tools like `drop_column_mask` or `list_masked_columns` by its unique action.
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 some usage context (e.g., replaces existing mask without error, blocked by READONLY) but does not explicitly guide when to use this tool over alternatives like `drop_column_mask` or `list_masked_columns`. It lacks prerequisite information such as required permissions or schema/table existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_lake_log_publishingA
Enable or disable Delta Lake log publishing on a warehouse.
Executes ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = { AUTO | PAUSED }
and returns the effective settings read back after the change.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
SQL Analytics Endpoints are rejected with a ToolError.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
enabled: True to enable Delta Lake log publishing (= AUTO),
False to disable it (= PAUSED).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| enabled | Yes | ||
| workspace | Yes |
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, the description carries the safety burden and does well: it reveals the exact SQL executed, the fact that the setting is read back after the change, and the endpoint rejection behavior. It stops short of mentioning permission requirements or broader side effects, but the core mutating behavior is unambiguous.
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 compact and front-loaded: a one-line operation, the exact SQL, support constraints, then an Args section. The only minor redundancy is the repeated SQL Analytics Endpoints rejection, but it does not hurt readability.
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?
For a small three-param toggle with an output schema, the description covers target compatibility, parameter semantics, error behavior, and the post-change readback. An agent has enough information to call it correctly without inspecting external docs.
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%, yet the description documents every parameter: workspace and item accept names or GUIDs, item excludes SQL Analytics Endpoints, and enabled maps True/False to AUTO/PAUSED. This fully compensates for the empty schema descriptions.
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 first line identifies the exact operation: enabling or disabling Delta Lake log publishing on a warehouse, and the description further pins it to the ALTER DATABASE CURRENT SET statement. This clearly distinguishes it from sibling setting tools like set_time_travel_retention or set_result_set_caching.
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?
States the supported target clearly ('Only supported on Fabric Data Warehouses') and explicitly warns that SQL Analytics Endpoints are rejected with a ToolError. It does not name alternative tools, but the constraint gives an agent clear go/no-go guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_result_set_cachingA
Enable or disable result-set caching on a warehouse.
Executes ALTER DATABASE CURRENT SET RESULT_SET_CACHING { ON | OFF }
and returns the effective settings read back after the change.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
SQL Analytics Endpoints are rejected with a ToolError.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
enabled: True to enable result-set caching, False to disable it.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| enabled | Yes | ||
| workspace | Yes |
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 behavioral burden. It transparently discloses that the tool executes ALTER DATABASE CURRENT SET RESULT_SET_CACHING { ON | OFF } and returns the effective settings read back after the change, which is valuable behavioral detail beyond what the schema shows.
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 well-structured and front-loaded, with the core action stated first and details organized logically. The only minor flaw is that the SQL Analytics Endpoints rejection is mentioned twice: once in the main description and again under the item parameter, which is slightly redundant.
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?
For a 3-parameter boolean-setting tool with an output schema present, the description is complete. It covers the action, the specific SQL behavior, target identification, the enabled flag semantics, and the critical unsupported endpoint case. Nothing essential is missing for an agent to invoke it correctly.
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 fully compensates. Every parameter is explained: workspace as name or GUID, item as warehouse name or GUID with an explicit rejection note for SQL Analytics Endpoints, and enabled mapped to True/False for enabling/disabling. This is clear, actionable parameter 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 a specific verb and resource: 'Enable or disable result-set caching on a warehouse.' It also names the exact SQL statement executed, making the tool's function unambiguous and distinguishable from sibling tools like clear_cache or get_warehouse_settings.
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 clear context for when the tool applies by specifying that it is only supported on Fabric Data Warehouses, not SQL Analytics Endpoints, and that unsupported endpoints are rejected with a ToolError. It does not explicitly name alternative tools for inspecting or clearing caching, but the supported/unsupported distinction is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_security_policy_stateA
Enable or disable a row-level security policy.
Executes ALTER SECURITY POLICY ... WITH (STATE = ON|OFF).
Not destructive -- enabling or disabling a policy is reversible.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
policy_name: Qualified policy name ("schema.name" or "name").
enabled: True to enable the policy, False to disable it.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| enabled | Yes | ||
| workspace | Yes | ||
| policy_name | Yes |
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, the description carries the full burden. It states the tool is not destructive and reversible, which is good. However, it does not disclose required permissions, error states (e.g., policy not found), or whether the policy must exist before calling. The behavioral disclosure is adequate but not comprehensive.
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 concise: four lines cover purpose, SQL equivalent, key behavioral trait, and parameter list. Every sentence serves a purpose without redundancy. It is well-structured for quick scanning.
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 no annotations and 0% schema coverage, the description reasonably explains core behavior and parameters. However, it omits prerequisites (policy must exist), return value information (though an output schema exists), and usage context relative to siblings. Slightly incomplete for a 4-parameter 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?
Schema coverage is 0%, so the description must explain each parameter. It does so for all four: workspace, item, policy_name (with formatting hint), and enabled (True=enable, False=disable). This adds meaningful context beyond the bare schema.
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 action: 'Enable or disable a row-level security policy.' This is a specific verb-resource combination that distinguishes it from sibling tools like drop_security_policy (deletion) or create_security_policy (creation).
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 mentions that the operation is reversible ('Not destructive'), which helps the understand the risk profile, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., drop_security_policy vs toggling state). The agent must infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_travel_retentionA
Set the time-travel retention period on a warehouse.
Executes ALTER DATABASE CURRENT SET TIME_TRAVEL_RETENTION_PERIOD = <n> DAYS
and returns the effective settings read back after the change.
Only supported on Fabric Data Warehouses (not SQL Analytics Endpoints).
SQL Analytics Endpoints are rejected with a ToolError.
Args: workspace: Workspace name or GUID. item: Warehouse name or GUID. SQL Analytics Endpoints are rejected. days: Retention period in days. Must be in the range 1-120 (inclusive).
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | ||
| item | Yes | ||
| workspace | Yes |
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, the description carries the full burden and discloses the executed SQL, the fact that it returns effective settings read back, and the failure behavior for unsupported endpoints. It does not discuss permission requirements or broader side effects, but it provides meaningful behavioral context beyond the name and schema.
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 front-loaded with the core action, then adds precision with the SQL form, a key platform limitation, and a compact Args list. Every sentence earns its place; there is no fluff or redundant filler.
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 three required parameters, no annotations, and an output schema that likely describes the return shape, the description is complete enough to invoke the tool correctly. It covers inputs, constraints, supported targets, rejection behavior, and the general return behavior without needing to enumerate output fields.
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 provides no descriptions for any of the three parameters, so the description must compensate. It does so clearly: workspace is a name or GUID, item is the warehouse name/GUID with endpoint rejection called out, and days is constrained to 1β120 inclusive, matching and extending the schema's bare type and range.
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 a specific verb and resource: setting the time-travel retention period on a warehouse. It also includes the exact SQL command (ALTER DATABASE CURRENT SET TIME_TRAVEL_RETENTION_PERIOD) which leaves no ambiguity about what the tool does and helps distinguish it from other setting tools.
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?
It explicitly states the supported target (Fabric Data Warehouses) and calls out a clear exclusion: SQL Analytics Endpoints are rejected with a ToolError. It does not name an alternative sibling to use instead, but the direct 'Set... on a warehouse' instruction together with the endpoint limitation gives clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workspace_collationA
Set the default Data Warehouse collation for a workspace.
Args: workspace: Workspace name or GUID. collation: Collation to apply. Fabric Data Warehouse supports a fixed set of collations. Supported values include:
- ``Latin1_General_100_BIN2_UTF8`` (recommended default)
- ``Latin1_General_100_CI_AS_KS_WS_SC_UTF8``
- ``Latin1_General_CI_AS``
- ``SQL_Latin1_General_CP1_CI_AS``
Supplying an unsupported value will cause the Fabric API to
return an error. See the Fabric documentation for the full
list of supported collations.
| Name | Required | Description | Default |
|---|---|---|---|
| collation | Yes | ||
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It mentions that unsupported collations cause an error, but it does not disclose permissions, reversibility, or effects on existing data. This is adequate but lacks depth for a mutation 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 organized with an Args block and front-loaded purpose. It is slightly verbose due to the collation list, but the list is useful. No wasted sentences.
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 no annotations and the tool's simplicity, the description covers the action, parameters with examples, and error condition. It lacks prerequisites (e.g., workspace existence) but is otherwise complete for a configuration 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?
Schema description coverage is 0%, so the description compensates by clarifying that workspace is a name or GUID and listing supported collation values with a note about errors. This adds significant meaning beyond the schema's plain string type.
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 (set) and resource (default Data Warehouse collation for a workspace). It distinguishes itself from sibling tools since no other tool sets collation, and the verb 'set' is specific.
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 does not explicitly state when to use this tool versus alternatives, nor does it provide prerequisites or exclusions. However, the context of setting a collation is self-explanatory, and the list of supported values guides proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_statisticsA
Show details of a statistic using DBCC SHOW_STATISTICS.
Returns the stat header, density vector, and histogram steps. Both Data Warehouses and SQL Analytics Endpoints are supported.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_table: Qualified table name, e.g. dbo.sales.
stat_name: The name of the statistic to show.
histogram_only: When True, return only the histogram steps.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| stat_name | Yes | ||
| workspace | Yes | ||
| histogram_only | No | ||
| qualified_table | Yes |
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, the description carries the full burden. It explicitly discloses the return structure and the histogram_only behavior, and notes both supported endpoint types. It does not formally state that the operation is read-only or mention permission requirements, but the verbs 'Show' and 'Returns' strongly imply non-destructive 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 concise and well-structured: it opens with the core purpose and return value, then lists parameters in a scannable Args block. Every sentence adds useful information with no fluff.
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?
The description covers the operation, all five parameters, the return contents, and supported environments, and a separate output schema exists for return values. It omits explicit permission/prerequiquisite details, but for a read-only 'show' command this is not a significant gap.
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, and it does thoroughly. Each parameter gets a meaningful explanation: workspace name or GUID, item as warehouse/SQL endpoint name or GUID, qualified table with an example, statistic name, and histogram_only behavior. This goes well beyond the bare schema types and titles.
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 a specific action, 'Show details of a statistic using DBCC SHOW_STATISTICS', and names the returned components (stat header, density vector, histogram steps). This clearly distinguishes it from sibling tools like list_statistics, create_statistics, and delete_statistics without needing those names.
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: use this tool when you need details of a specific statistic rather than listing statistics. It also notes that both Data Warehouses and SQL Analytics Endpoints are supported. However, it does not explicitly contrast this tool with sibling tools such as list_statistics or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
takeover_warehouseC
Take ownership of a Warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | ||
| workspace | Yes |
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, the description carries full burden for behavioral disclosure. 'Take ownership' is vagueβit does not explain what happens to the previous owner, whether the operation is reversible, if data is affected, or any side effects. This is dangerously opaque for a mutating action.
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 short, but this is not concisenessβit is under-specification. Valuable information is missing. Every sentence should earn its place; here, one sentence provides minimal utility but wastes no words on fluff. However, the lack of critical details makes it insufficient.
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 absence of annotations, output schema details, and parameter descriptions, the tool definition is critically incomplete. An AI agent cannot safely or effectively select and invoke this tool without guessing about behavior, parameters, and return values.
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%, yet the description does not explain what 'workspace' and 'warehouse' refer to, their expected format, or constraints. The agent has no help understanding these required parameters beyond their names.
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 'Take ownership of a Warehouse' clearly identifies the action (take ownership) and resource (Warehouse). It is specific enough to distinguish from sibling tools like create_warehouse or delete_warehouse, but lacks any additional context about scope or impact.
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?
No guidance is provided on when to use this tool versus alternatives, prerequisites (e.g., current ownership, permissions), or any conditions that should be met before invoking. The agent is left 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.
transfer_functionA
Move a T-SQL user-defined function to another schema via ALTER SCHEMA TRANSFER.
Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints -- unlike table transfer, no endpoint guard applies here.
CAUTION: ALTER SCHEMA ... TRANSFER does not rewrite the schema name
inside the function's stored definition (sys.sql_modules.definition).
After a transfer, get_function may still show the old schema name
in the CREATE ... AS header, even though the function now lives in
the new schema. This tool does not rewrite the definition text.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
qualified_name: Current dot-separated qualified function name, e.g.
dbo.fn_clean_input.
target_schema: Schema to move the function into, e.g. archive.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| target_schema | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses a critical behavioral trait: ALTER SCHEMA TRANSFER does not rewrite the schema name inside the function's definition, so get_function may still show the old schema name. This is a significant side effect that an agent needs to know.
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 well-structured: main action, technical notes, caution, and Args section. It front-loads the purpose. However, it is slightly verbose with repeated 'ALTER SCHEMA ... TRANSFER' and could be tightened without losing clarity. Still, every sentence adds value.
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 that an output schema exists, the description need not explain return values. It covers the main behavior and the critical side effect. It does not mention error cases or required permissions, but for a moderately complex tool, it is fairly 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?
The input schema has no property descriptions (0% coverage), but the description provides clear, concise explanations for each parameter: workspace, item, qualified_name, and target_schema, including examples for the latter two. This adds essential meaning beyond the schema field names.
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 it moves a T-SQL user-defined function to another schema via ALTER SCHEMA TRANSFER, specifies supported endpoints (Data Warehouses and SQL Analytics Endpoints), and distinguishes from table transfer by noting no endpoint guard applies. This provides a specific verb and resource, and clearly distinguishes it from sibling transfer tools.
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 gives clear context for usage (moving a function to another schema) and includes a caution about the behavior after transfer, which serves as implicit guidance on what to expect. However, it does not explicitly state when not to use it or contrast it with alternatives like transfer_procedure or transfer_table.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_procedureA
Move a stored procedure to another schema via ALTER SCHEMA ... TRANSFER OBJECT::....
Stored procedures are supported on both Fabric Data Warehouses and
SQL Analytics Endpoints; unlike transfer_table, no endpoint guard
is applied here.
CAUTION: ALTER SCHEMA ... TRANSFER moves the procedure but does
NOT rewrite the schema name inside its stored definition. After a
transfer, get_procedure may still show the OLD schema name in the
CREATE ... AS header even though the procedure now lives in the
new schema.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Current dot-separated qualified procedure name,
e.g. dbo.usp_load.
target_schema: Schema to move the procedure into, e.g. archive.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| target_schema | Yes | ||
| qualified_name | Yes |
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, the description carries the full behavioral burden and does so well: it discloses the ALTER SCHEMA ... TRANSFER mechanism, warns that the schema name inside the stored definition is not rewritten, and notes that get_procedure may still show the old schema. This goes well beyond a bare action.
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 compact and structured: action, supported environments, a high-value caution, then parameters. Each sentence adds new information; no filler.
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?
For a mutating transfer tool with no annotations and an output schema, the description covers the full invocation contract: identify workspace/item, current qualified name, target schema, and the most surprising side effect. No critical selection or invocation detail is missing.
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 coverage is 0%, so the Args section is essential. It defines all four parameters, clarifies item as Warehouse/SQL endpoint name or GUID, and gives concrete examples for qualified_name and target_schema (dbo.usp_load, archive), providing meaning the title-only schema lacks.
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 opens with a specific verb-resource pair ('Move a stored procedure to another schema') and names the underlying SQL command, making the tool's function unambiguous. It also differentiates from transfer_table by noting the absence of an endpoint guard.
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?
States that the tool works for stored procedures on both Fabric Data Warehouses and SQL Analytics Endpoints, and contrasts with transfer_table. It does not explicitly list conditions for when to prefer it over other transfer_* siblings, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_tableA
Move a SQL table to another schema via ALTER SCHEMA ... TRANSFER OBJECT::....
Data-Warehouse-only: transferring a table between schemas via T-SQL is
not supported on the Fabric SQL Analytics Endpoint and can break the
OneLake sync, so SQL Analytics Endpoints are rejected with a ToolError.
CAUTION: Permissions granted directly on the table are dropped by the engine when the schema changes. Dependent views and stored procedures that reference the table by its old schema-qualified name are NOT automatically updated and may need refreshing after the transfer.
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_name: Current dot-separated qualified table name, e.g.
dbo.sales.
target_schema: Schema to move the table into, e.g. archive.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| target_schema | Yes | ||
| qualified_name | Yes |
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, the description carries the full burden and does it well: it discloses engine limitations, rejection of SQL Analytics Endpoints, dropped direct permissions, and that dependent views/procedures may need refreshing. These are material side effects an agent must know before invoking.
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 well-structured and front-loaded, with a concise operation statement followed by caveats and a clear Args section. Every sentence adds value; the repeated SQL Analytics Endpoint warning is relevant to both the operation and the parameter.
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?
For a mutating tool with no annotations, the description is remarkably complete: it covers the operation semantics, unsupported environments, permission side effects, dependency implications, and all parameter meanings. Nothing essential is missing.
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%, but the description compensates fully by explaining all four parameters: workspace, item, qualified_name, and target_schema, including concrete examples like 'dbo.sales' and 'archive', plus the rejection semantics for item.
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 opens with a specific verb and resource: 'Move a SQL table to another schema via ALTER SCHEMA ... TRANSFER OBJECT::...'. This clearly states what the tool does and inherently distinguishes it from sibling tools like transfer_view and transfer_procedure.
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 clear context and exclusions: it is Data-Warehouse-only, and SQL Analytics Endpoints are rejected. It does not explicitly name sibling alternatives for views/procedures, but the table-specific framing makes the intended use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_viewA
Move a SQL view to another schema via ALTER SCHEMA ... TRANSFER OBJECT::....
Works on both Data Warehouses and SQL Analytics Endpoints β no DW-only guard is applied.
CAUTION: ALTER SCHEMA ... TRANSFER moves the view but does not
rewrite the schema name inside the view's stored definition
(sys.sql_modules.definition, OBJECT_DEFINITION()). After a
transfer, the returned (and any subsequent get_view) definition
may still show the old schema name in the CREATE ... AS header,
even though the view now lives in the new schema. This tool does not
rewrite the definition text β doing so would require parsing and
regenerating SQL, which this project deliberately avoids.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Current dot-separated qualified view name,
e.g. dbo.vw_sales.
target_schema: Schema to move the view into, e.g. archive.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| target_schema | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains the SQL statement used, notes the lack of definition rewrite, and warns about the side effect. Could mention permissions or idempotency, but still strong.
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?
Well-organized with clear purpose, scope, and caution. A bit verbose in the caution section but all sentences earn their place. Front-loaded with key action.
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?
Covers core behavior, SQL method, side effects, and environments. Missing error conditions, prerequisites (like ownership), and response description, but output schema exists. Almost complete for a mutation tool with side effects.
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?
Input schema has 0% description coverage, but the description provides explicit explanations for all 4 parameters with examples (qualified_name, target_schema), adding significant meaning beyond just property names.
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?
Clearly states the verb 'Move' and the resource 'SQL view', distinguishing it from siblings like transfer_table or transfer_function. Includes scope (both Data Warehouses and SQL Analytics Endpoints).
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?
Implied usage from name and siblings, but no explicit when-to-use or alternatives. Does not guide on when to prefer this over other transfer tools. Caution about definition rewrite is helpful but not a guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_functionA
Redefine a T-SQL user-defined function via CREATE OR ALTER FUNCTION.
Note: ALTER FUNCTION cannot change the function kind (e.g. scalar to inline TVF). The body must be compatible with the original function's kind.
Scalar UDFs and inline TVFs are preview features on Fabric DW as of mid-2026. Function DDL is supported on both Data Warehouses and SQL Analytics Endpoints.
CAUTION: body is executed verbatim as DDL. Ensure the body matches the
user's intent before calling this tool.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL Analytics Endpoint name or GUID.
qualified_name: Dot-separated qualified function name, e.g. dbo.fn_clean_input.
body: The new function body (parameter list, RETURNS clause, and implementation).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 must fully disclose behavioral traits. It warns that 'body is executed verbatim as DDL' and mentions compatibility restrictions. However, it does not cover other important aspects such as atomicity, permission requirements, or error handling. The disclosure is helpful but incomplete.
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 front-loaded with the main purpose, followed by relevant notes and a caution. The structure is logical, but the preview feature note may be extraneous for general use. Overall, it is concise without being overly verbose, earning a high score.
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 handles a complex DDL operation with 4 required parameters and an output schema (likely defined elsewhere), the description covers the core aspects: parameter explanations, DDL execution warning, and compatibility constraints. It does not discuss success/error responses, but the presence of an output schema likely covers that. The description is complete enough for most use 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?
Since the schema has 0% description coverage, the description's 'Args' section provides essential meaning for all four parameters. It explains formats (name or GUID), provides examples, and describes what the body should contain. This adds significant value beyond the schema's titles, though some details (e.g., exact format of workspace) could be more precise.
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 'Redefine a T-SQL user-defined function' and mentions the DDL command. It is clear that the tool modifies an existing function, but it does not explicitly differentiate from the sibling 'create_function', which could cause confusion. A more distinct contrast would elevate this to a 5.
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 includes important notes about limitations (cannot change function kind) and a caution about DDL execution. However, it lacks explicit guidance on when to use this tool versus alternatives like 'create_function' or 'drop_function'. The usage context is implied but not directly stated, resulting in a moderate score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_procedureA
Redefine a stored procedure via CREATE OR ALTER PROCEDURE.
Stored procedures are supported on both Fabric Data Warehouses and SQL Analytics Endpoints.
CAUTION: body is executed verbatim as DDL. Ensure the body
matches the user's intent before calling this tool.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified procedure name, e.g. dbo.usp_load.
body: The new procedure body (the AS β¦ section).
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| item | Yes | ||
| workspace | Yes | ||
| qualified_name | Yes |
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 behavioral transparency burden. It prominently discloses that the body is executed verbatim as DDL and warns that this can redefine the procedure. This is substantial, though it does not mention permissions or side effects on dependent objects.
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 well organized into function, supported environments, caution, and parameter docs. Every sentence earns its place, and the most important risk warning is front-loaded before the parameter list.
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?
The description covers the target platforms, the overwrite/DDL risk, and all parameters. Since an output schema exists, return values need not be detailed. Minor gaps like required permissions and effects on existing dependencies are present, but the description is more than minimally viable.
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%, and the Args block fully compensates by giving each parameter meaningful context: workspace and item accept names or GUIDs, qualified_name is dot-separated with an example, and body is described as the AS ... section. This adds real value over the bare schema fields.
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 'Redefine a stored procedure via CREATE OR ALTER PROCEDURE', which is a specific verb, resource, and mechanism. It clearly distinguishes this tool from siblings like create_procedure, drop_procedure, and get_procedure.
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 gives useful context about supported environments and a caution to ensure the body matches user intent, but it does not explicitly say when to prefer this tool over alternatives like create_procedure or execute_sql. Usage timing is mostly implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_restore_pointA
Rename and/or update the description of a restore point.
At least one of name or description must be provided.
Args: workspace: Workspace name or GUID. warehouse: Warehouse name or GUID. restore_point_id: The restore point ID string. name: New display name (max 128 chars). description: New description (max 512 chars).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| warehouse | Yes | ||
| workspace | Yes | ||
| description | No | ||
| restore_point_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses max lengths for name and description and the requirement for at least one field, but does not detail error behavior (e.g., if restore point does not exist) or confirm no unintended side effects.
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?
Extremely concise: two-sentence intro followed by a bullet list of arguments. Every sentence adds value, and the structure is front-loaded with the 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 simplicity, the description covers essential aspects: purpose, required parameters, optional parameter constraints, and the rule about at least one field. An output schema exists, so return values are not required. Missing error handling details, but acceptable.
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 description adds significant value beyond the schema. It explains each parameter's role, notes constraints (max chars), and clarifies that at least one of name or description is required.
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?
Clearly states 'Rename and/or update the description of a restore point,' specifying the verb and resource. This distinguishes it from sibling tools like create_restore_point and delete_restore_point.
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?
Explicitly states that at least one of name or description must be provided, guiding usage. However, it does not explicitly mention when to use this tool over alternatives, such as when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sql_poolA
Update an existing SQL pool. Only the parameters you supply are changed.
Args: workspace: Workspace name or GUID. name: Name of the pool to update. max_percent: New max resource percentage (1-100), or omit to keep current. is_default: Set or clear the default flag, or omit to keep current. optimize_for_reads: Enable/disable read optimisation, or omit to keep current. classifier_type: New classifier type, or omit to keep current. classifier_values: New classifier value list, or omit to keep current.
Requires workspace admin role. This tool targets a beta / preview API.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| workspace | Yes | ||
| is_default | No | ||
| max_percent | No | ||
| classifier_type | No | ||
| classifier_values | No | ||
| optimize_for_reads | No |
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 disclosure burden and does well: it states partial-update behavior, per-field 'omit to keep current' semantics, admin role requirement, and beta/preview API status. It does not describe side effects, reversibility, or failure behavior, but the most important behavioral trait is explicit.
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 well-structured: a one-line summary, an Args block, then requirement/caution notes. It is not bloated, though the repeated 'or omit to keep current' phrase is slightly redundant but aids 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?
For a 7-parameter mutation tool with no annotations, the description covers the essential operational context: purpose, parameter semantics, permission requirement, and beta status. An output schema exists, so return-value documentation is unnecessary, and no critical call-blocking information is missing.
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 carry parameter documentation and does so completely: each of the seven parameters gets a clear semantic meaning, including the name-or-GUID format for workspace, the 1-100 range for max_percent, and the 'omit to keep current' behavior for optional fields. This goes well beyond the raw schema types and defaults.
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?
States a specific verb ('Update') and resource ('existing SQL pool') and immediately clarifies partial-update semantics ('Only the parameters you supply are changed'). This clearly distinguishes it from sibling create/delete/list operations, even without naming them.
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 gives clear context for when to use: modifying an existing SQL pool, with an explicit prerequisite ('Requires workspace admin role') and a caution about beta API status. It does not name alternative tools or give when-not-to-use exclusions, so it stops short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_statisticsA
Update an existing statistic via UPDATE STATISTICS.
Only supported on Data Warehouses (SQL Analytics Endpoints are read-only).
Args:
workspace: Workspace name or GUID.
item: Warehouse name or GUID. SQL Analytics Endpoints are rejected.
qualified_table: Qualified table name, e.g. dbo.sales.
stat_name: Name of the statistic to update.
fullscan: When True (default), use WITH FULLSCAN.
Ignored when sample_percent is provided.
sample_percent: Sample percentage (1-100). When provided, overrides fullscan
and uses WITH SAMPLE n PERCENT.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| fullscan | No | ||
| stat_name | Yes | ||
| workspace | Yes | ||
| sample_percent | No | ||
| qualified_table | Yes |
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, the description carries the responsibility of explaining behavior. It discloses that the tool executes UPDATE STATISTICS, is unsupported on read-only SQL Analytics Endpoints, and details the fullscan/sample_percent interaction. It does not mention permissions or broader side effects, but the SQL operation and parameter behaviors are clearly conveyed. This is solid but not exhaustive behavioral disclosure.
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 well organized with a short purpose statement followed by a parameter list, making it easy to scan. The only minor inefficiency is that the SQL Analytics Endpoint restriction appears twice: in the intro and again in the item parameter. Otherwise, every piece of information is useful and appropriately sized.
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?
For a six-parameter tool with no annotations, the description is remarkably complete: it covers all parameters, provides default behavior, explains option interactions, and gives environment restrictions. Since an output schema exists, not explaining return values is acceptable. An agent has enough context to select and invoke this tool correctly without additional lookup.
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 fully compensate. It explains all six parameters, including workspace and item identifiers, qualified_table format, stat_name, and the precedence between fullscan and sample_percent. The description adds meaning well beyond the bare schema titles and would allow an agent to construct valid arguments confidently.
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 a specific action: 'Update an existing statistic via UPDATE STATISTICS.' It identifies the resource (statistic) and the SQL operation, and the word 'existing' distinguishes it from create_statistics and delete_statistics siblings. This is more than a tautology and gives an agent a precise mental model of the tool.
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 explicitly limits usage to Data Warehouses and warns that SQL Analytics Endpoints are rejected, which gives clear when-not-to-use guidance. It does not explicitly name alternative sibling tools such as create_statistics or show_statistics, but the phrase 'existing statistic' implies the update-versus-create distinction. This is strong contextual guidance, falling just short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_viewA
Redefine a SQL view via CREATE OR ALTER VIEW.
CAUTION: select_body is executed verbatim as DDL. Ensure the body
matches the user's intent before calling this tool.
select_body must be a single read-only SELECT or WITH (CTE)
statement. The guard is always on and fail-closed: a write keyword
(DELETE, DROP, INSERT, etc.) or a semicolon anywhere in the body is
rejected, even inside a string literal or quoted identifier. If a
legitimate view body contains a write keyword (e.g. a column alias
'DELETE'), rewrite the expression to avoid the keyword.
Args:
workspace: Workspace name or GUID.
item: Warehouse or SQL endpoint name or GUID.
qualified_name: Dot-separated qualified view name, e.g. dbo.vw_sales.
select_body: Single read-only SELECT or WITH (CTE) statement for the
new view body. Write keywords and semicolons are rejected
fail-closed, even inside string literals or quoted identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| workspace | Yes | ||
| select_body | Yes | ||
| qualified_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so the description fully carries the burden. It discloses that select_body is executed verbatim as DDL, describes the guard mechanism (fail-closed, rejecting write keywords and semicolons even in strings), and suggests rewrites for legitimate cases. This is thorough.
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 fairly long but every sentence serves a purpose. It is front-loaded with the main action and structured with clear sections. Could be slightly more concise, but it's well-organized.
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 that an output schema exists, return values are not needed. The description covers the tool's action, parameter constraints, and behavioral guard. It could mention permissions or side effects, but it is adequate for a complex DDL 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?
Schema description coverage is 0%, so description must add meaning. It provides detailed semantics for select_body (the guard behavior). For workspace, item, and qualified_name, it adds minimal but sufficient context. Overall, significant value added for the critical 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 'Redefine a SQL view via CREATE OR ALTER VIEW.' This is specific and distinguishes it from sibling tools like create_view, drop_view, rename_view, etc.
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?
Provides guidance on when to use the tool, including constraints on select_body (must be read-only SELECT/WITH, no write keywords or semicolons). Does not explicitly state when not to use it, but the context is clear.
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.
2 tool updates
v2026.9.0- Added
list_table_sync_status - Added
refresh_table_metadata
47 tool updates
v2026.8.0- Added
clear_cache - Added
clone_table - Added
count_table_rows - Added
count_view_rows - Added
create_empty_table - Added
create_procedure - Added
create_sql_pool - Added
create_statistics - Added
create_table - Added
delete_schema - Added
delete_sql_pool - Added
delete_statistics - Added
delete_table - Added
disable_sql_pools - Added
drop_function - Added
drop_procedure - Added
enable_sql_pools - Added
generate_dbt_profile - Added
get_cluster_columns - Added
get_request_detail - Added
get_sql_pool - Added
get_sql_pools_status - Added
get_table_columns - Added
get_view_columns - Added
get_warehouse_settings - Added
import_table_from_url - Added
list_capabilities - Added
list_sql_pool_insights - Added
list_sql_pools - Added
list_statistics - Added
list_tables - Added
list_views - Added
load_table_from_url - Added
read_table - Added
read_view - Added
rename_table - Added
restore_warehouse_in_place - Added
set_cluster_columns - Added
set_data_lake_log_publishing - Added
set_result_set_caching - Added
set_time_travel_retention - Added
show_statistics - Added
transfer_procedure - Added
transfer_table - Added
update_procedure - Added
update_sql_pool - Added
update_statistics
46 tool updates
v2026.7.2- Removed
clear_cache - Removed
clone_table - Removed
count_table_rows - Removed
count_view_rows - Removed
create_empty_table - Removed
create_procedure - Removed
create_sql_pool - Removed
create_statistics - Removed
create_table - Removed
delete_schema - Removed
delete_sql_pool - Removed
delete_statistics - Removed
delete_table - Removed
disable_sql_pools - Removed
drop_function - Removed
drop_procedure - Removed
enable_sql_pools - Removed
generate_dbt_profile - Removed
get_cluster_columns - Removed
get_sql_pool - Removed
get_sql_pools_status - Removed
get_table_columns - Removed
get_view_columns - Removed
get_warehouse_settings - Removed
import_table_from_url - Added
list_locks - Removed
list_sql_pool_insights - Removed
list_sql_pools - Removed
list_statistics - Removed
list_tables - Removed
list_views - Removed
load_table_from_url - Removed
read_table - Removed
read_view - Removed
rename_table - Removed
restore_warehouse_in_place - Removed
set_cluster_columns - Removed
set_data_lake_log_publishing - Removed
set_result_set_caching - Removed
set_time_travel_retention - Removed
show_statistics - Removed
transfer_procedure - Removed
transfer_table - Removed
update_procedure - Removed
update_sql_pool - Removed
update_statistics
27 tool updates
v2026.7.0- Added
add_security_predicate - Changed
count_table_rows1 field changed- added
Input schema / properties / as_ofAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "As Of" +}
- Changed
count_view_rows1 field changed- added
Input schema / properties / as_ofAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "As Of" +}
- Added
create_security_policy - Added
deny_permission - Added
drop_column_mask - Added
drop_security_policy - Added
drop_security_predicate - Removed
get_sql_endpoint_permissions - Removed
get_warehouse_permissions - Added
grant_permission - Added
list_database_principals - Added
list_item_permissions - Added
list_masked_columns - Added
list_security_policies - Added
list_sql_permissions - Added
my_permissions - Changed
read_table1 field changed- added
Input schema / properties / as_ofAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "As Of" +}
- Changed
read_view1 field changed- added
Input schema / properties / as_ofAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "As Of" +}
- Added
revoke_permission - Added
set_column_mask - Added
set_data_lake_log_publishing - Added
set_security_policy_state - Added
transfer_function - Added
transfer_procedure - Added
transfer_table - Added
transfer_view
16 tool updates
v2026.6.0- Added
assign_workspace_to_capacity - Changed
create_empty_table1 field changed- added
Input schema / properties / cluster_byAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cluster By" +}
- Changed
create_table1 field changed- added
Input schema / properties / cluster_byAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cluster By" +}
- Added
get_cluster_columns - Changed
get_query_plan1 field changed- added
Input schema / properties / formatAdded value: +{ + "default": "xml", + "enum": [ + "xml", + "tree", + "json", + "mermaid" + ], + "title": "Format", + "type": "string" +}
- Removed
get_sql_pools_configuration - Added
get_sql_pools_status - Added
get_table_columns - Added
get_table_health_metrics - Added
get_view_columns - Changed
import_table_from_url1 field changed- changed
Input schema / properties / if_exists / descriptionPrevious value: -"What to do when the target table already exists. 'fail': error (default). 'append': load into existing table. 'truncate': TRUNCATE then load (destructive). 'replace': DROP + recreate from inferred schema, then load (destructive)."New value: +"What to do when the target table exists or is absent. 'fail': error if the table already exists, or if it does not exist (default). 'append': load into the existing table; error if the table is absent. 'truncate': TRUNCATE then load (destructive). 'replace': DROP + recreate from inferred schema, then load (destructive)."
- Added
list_capacities - Changed
list_sql_endpoints4 fields changed- added
Input schema / properties / workspace / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / workspace / defaultAdded value: +null - removed
Input schema / properties / workspace / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "workspace" -]
- Changed
list_warehouses4 fields changed- added
Input schema / properties / workspace / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / workspace / defaultAdded value: +null - removed
Input schema / properties / workspace / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "workspace" -]
- Removed
rename_function - Added
set_cluster_columns
93 tool updates
v0.1.0- First observed
add_audit_group - First observed
clear_cache - First observed
clear_table - First observed
clone_table - First observed
count_table_rows - First observed
count_view_rows - First observed
create_empty_table - First observed
create_function - First observed
create_procedure - First observed
create_restore_point - First observed
create_schema - First observed
create_snapshot - First observed
create_sql_pool - First observed
create_statistics - First observed
create_table - First observed
create_view - First observed
create_warehouse - First observed
delete_restore_point - First observed
delete_schema - First observed
delete_snapshot - First observed
delete_sql_pool - First observed
delete_statistics - First observed
delete_table - First observed
delete_warehouse - First observed
disable_audit - First observed
disable_sql_pools - First observed
drop_function - First observed
drop_procedure - First observed
drop_view - First observed
enable_audit - First observed
enable_sql_pools - First observed
execute_sql - First observed
generate_dbt_profile - First observed
get_audit_settings - First observed
get_function - First observed
get_procedure - First observed
get_query_plan - First observed
get_restore_point - First observed
get_sql_endpoint - First observed
get_sql_endpoint_permissions - First observed
get_sql_pool - First observed
get_sql_pools_configuration - First observed
get_view - First observed
get_warehouse - First observed
get_warehouse_permissions - First observed
get_warehouse_settings - First observed
get_workspace - First observed
import_table_from_url - First observed
kill_session - First observed
list_connections - First observed
list_frequent_queries - First observed
list_functions - First observed
list_long_running_queries - First observed
list_procedures - First observed
list_request_history - First observed
list_restore_points - First observed
list_running_queries - First observed
list_schemas - First observed
list_session_history - First observed
list_snapshots - First observed
list_sql_endpoints - First observed
list_sql_pool_insights - First observed
list_sql_pools - First observed
list_statistics - First observed
list_tables - First observed
list_views - First observed
list_warehouses - First observed
list_workspaces - First observed
load_table_from_url - First observed
read_table - First observed
read_view - First observed
refresh_sql_endpoint_metadata - First observed
remove_audit_group - First observed
rename_function - First observed
rename_snapshot - First observed
rename_table - First observed
rename_view - First observed
rename_warehouse - First observed
restore_warehouse_in_place - First observed
roll_snapshot_timestamp - First observed
set_audit_action_groups - First observed
set_audit_retention - First observed
set_result_set_caching - First observed
set_time_travel_retention - First observed
set_workspace_collation - First observed
show_statistics - First observed
takeover_warehouse - First observed
update_function - First observed
update_procedure - First observed
update_restore_point - First observed
update_sql_pool - First observed
update_statistics - First observed
update_view
TDQS
Scored across 123 tools
Most tools target a distinct resource and action, with detailed descriptions that help an agent choose correctly. However, load_table_from_url and import_table_from_url are near-duplicates (both COPY INTO from a URL), and execute_sql overlaps with virtually every dedicated tool. Some related clusters (list_warehouses vs. list_sql_endpoints) also require careful reading to avoid misselection.
The dominant pattern is verb_noun and is largely readable, but destructive operations are split inconsistently between 'drop_' (drop_view, drop_procedure, drop_function) and 'delete_' (delete_table, delete_warehouse, delete_schema). The same conceptual operation is also named both load_table_from_url and import_table_from_url, breaking a strict one-verb-per-action convention.
At 123 tools, this is far beyond the range where an agent can efficiently discover and select the right tool without significant overhead. Even a comprehensive warehouse management surface could be consolidated into far fewer, broader tools. The extreme count will likely cause prompt-size and selection-cost problems.
The surface is exhaustive for the stated domain: full lifecycle coverage for warehouses, SQL endpoints, tables, views, procedures, functions, schemas, snapshots, restore points, SQL pools, permissions, security policies, masking, auditing, and query monitoring. Any residual gap (e.g. row-level DML or ALTER TABLE) is covered by the deliberately explicit execute_sql fallback. There are no obvious dead ends.
Maintenance
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for reading and analyzing Fabric semantic models. Supports getting model definitions and executing DAX queries against Power BI datasets.17-
- AlicenseBqualityBmaintenanceMCP server for Microsoft Fabric REST APIs that enables data engineers and analysts to manage Fabric components using AI assistants.21944 npmAGPL 3.0
- FlicenseCqualityDmaintenanceA Python MCP server that lets you manage Microsoft Fabric through natural language in Claude Code or Claude Desktop, with 77+ tools covering workspaces, lakehouses, warehouses, SQL, DAX, semantic models, notebooks, pipelines, OneLake, and Microsoft Graph.83-
- AlicenseNot gradedqualityCmaintenanceMCP server for managing Microsoft Fabric notebooks and Dataflow Gen2 via the Fabric REST API. Supports reading, creating, updating, running, and deleting items within workspaces.MIT