Skip to main content
Glama
Jasuni69

Microsoft Fabric MCP Server

by Jasuni69

Microsoft Fabric MCP Server

A Python MCP server that lets you manage Microsoft Fabric through natural language in Claude Code or Claude Desktop. 77+ tools covering workspaces, lakehouses, warehouses, SQL, DAX, semantic models, notebooks, pipelines, OneLake, and Microsoft Graph.

Inspired by: https://github.com/Augustab/microsoft_fabric_mcp/tree/main

Quick Start

git clone https://github.com/Jasuni69/ms-core-mcp.git
cd ms-core-mcp
az login
python setup.py

The setup script checks prerequisites, installs dependencies, and configures your Claude client. It safely merges into existing config files without affecting other MCP servers.

Then restart VS Code or Claude Desktop and ask: "List my Fabric workspaces"

Related MCP server: Fabric-Analytics-MCP

Prerequisites

  • Python 3.12+ - Download

  • uv package manager - Install

  • Azure CLI - Install

  • ODBC Driver 18 (optional, for SQL tools) - Download

  • Access to a Microsoft Fabric workspace with Contributor or Admin role

How It Works

You (natural language) --> Claude --> MCP Server --> Fabric REST API --> Your Fabric Resources

Two transport modes:

  • STDIO (default) - fabric_mcp_stdio.py - used by Claude Code and Claude Desktop

  • HTTP - fabric_mcp.py --port 8081 - for custom integrations

Tools (77+)

Workspace & Resource Management (9 tools)

list_workspaces, create_workspace, set_workspace, list_lakehouses, create_lakehouse, set_lakehouse, list_warehouses, create_warehouse, set_warehouse

Delta Table Operations (10 tools)

list_tables, set_table, get_lakehouse_table_schema, get_all_lakehouse_schemas, table_preview, table_schema, describe_history, optimize_delta, vacuum_delta, load_data_from_url

SQL (4 tools)

sql_query, sql_explain, sql_export, get_sql_endpoint

  • Always pass type ("lakehouse" or "warehouse")

  • SQL endpoints are read-only - no DDL/DML

  • New delta tables take 5-10 min to appear in SQL endpoint

  • Requires ODBC Driver 18

Semantic Models & DAX (9 tools)

list_semantic_models, get_semantic_model, get_model_schema, list_measures, get_measure, create_measure, update_measure, delete_measure, analyze_dax_query

Reports (4 tools)

list_reports, get_report, report_export, report_params_list

Power BI (2 tools)

semantic_model_refresh, dax_query

Notebooks (16 tools)

list_notebooks, create_notebook, get_notebook_content, update_notebook_cell, create_pyspark_notebook, create_fabric_notebook, generate_pyspark_code, generate_fabric_code, validate_pyspark_code, validate_fabric_code, analyze_notebook_performance, run_notebook_job, get_run_status, cancel_notebook_job, install_requirements, install_wheel, cluster_info

Pipelines & Scheduling (8 tools)

pipeline_run, pipeline_status, pipeline_logs, create_data_pipeline, get_pipeline_definition, dataflow_refresh, schedule_list, schedule_set

OneLake File Operations (7 tools)

onelake_ls, onelake_read, onelake_write, onelake_rm, onelake_create_shortcut, onelake_list_shortcuts, onelake_delete_shortcut

Items & Permissions (4 tools)

resolve_item, list_items, get_permissions, set_permissions

Microsoft Graph (8 tools)

graph_user, graph_mail, graph_teams_message, graph_teams_message_alias, graph_drive, save_teams_channel_alias, list_teams_channel_aliases, delete_teams_channel_alias

Session (1 tool)

clear_context

Example Usage

"List all my Fabric workspaces"
"Set workspace to Analytics-Prod"
"Show me all tables in the sales lakehouse"
"What are the top 10 customers by revenue?"
"Create a DAX measure for total sales"
"Generate a PySpark ETL notebook"
"Run the daily pipeline and check status"

Manual Setup (without setup.py)

Claude Code (VS Code)

Create .mcp.json in the project root:

{
  "mcpServers": {
    "ms-fabric-core-tools-mcp": {
      "command": "uv",
      "args": ["--directory", "/full/path/to/ms-core-mcp", "run", "fabric_mcp_stdio.py"]
    }
  }
}

Add to ~/.claude/settings.json:

{
  "enableAllProjectMcpServers": true
}

Claude Desktop

Add to your claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ms-fabric-core-tools-mcp": {
      "command": "/full/path/to/uv",
      "args": ["--directory", "/full/path/to/ms-core-mcp", "run", "fabric_mcp_stdio.py"]
    }
  }
}

Note: Claude Desktop needs the full path to uv since it may not inherit your shell PATH.

Project Structure

ms-core-mcp/
  fabric_mcp.py          # HTTP server entry point
  fabric_mcp_stdio.py    # STDIO entry point (Claude Code / Desktop)
  setup.py               # Automated setup script
  pyproject.toml          # Dependencies
  CLAUDE.md              # AI assistant instructions
  tools/                 # MCP tool definitions
  helpers/
    clients/             # Fabric API, SQL, OneLake clients
    formatters/          # Output formatters
    utils/               # Auth, context, validators
  tests/                 # Tests
  docs/                  # Documentation

Known Limitations

  • SQL endpoints are read-only - use PySpark notebooks for writes

  • SQL sync delay - new tables take 5-10 min to appear

  • API rate limits - 50 requests/min/user (Fabric), 120 queries/min/user (Power BI)

  • Notebook lakehouse attachment - must be done manually in Fabric UI

  • ODBC Driver 18 required for sql_query, table_preview, sql_explain tools

  • Report creation not supported - can list, export, view params only

Troubleshooting

"Command not found: uv" - Install uv, then restart terminal

"Not authenticated" - Run az login, then verify with:

az account get-access-token --resource https://api.fabric.microsoft.com/

"Database not found" on SQL queries - SQL endpoint may not be provisioned yet. Wait a few minutes or check the lakehouse has tables in the Fabric portal.

MCP tools not appearing in Claude Desktop - Use full path to uv in config. Check Task Manager to fully close and restart Claude Desktop.

Only some tools showing - Check for import errors by running:

uv run python -c "from tools import *; from helpers.utils.context import mcp; print(f'Tools: {len(mcp._tool_manager._tools)}')"

Testing

uv run pytest tests/

License

MIT

Available Tools

83 tools
analyze_dax_queryA

Analyze a DAX query for performance insights and execution plan.

This tool executes a DAX query and returns performance metrics including
execution time, scan counts, and optionally the query execution plan.

Args:
    dax_query: DAX query to analyze
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    include_execution_plan: Whether to include detailed execution plan (default: True)
    ctx: Context object containing client information

Returns:
    A dictionary containing query results, execution metrics, and optionally the execution plan.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
dax_queryYes
workspaceNo
include_execution_planNo

TDQS

A4.3/5.0
Behavior3/5

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 clearly states that the tool executes the query and returns metrics and optionally the execution plan. However, it does not mention whether execution is read-only, whether it has side effects, or any cost/performance caveats beyond being an analysis tool.

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

Conciseness5/5

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

The description is well-structured with a front-loaded purpose statement, a concise explanatory paragraph, and clearly formatted Args/Returns sections. Every line contributes useful information without unnecessary verbosity or duplication.

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

Completeness4/5

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

Given no output schema, the description appropriately explains the return value as a dictionary containing query results, execution metrics, and optionally the execution plan. It also covers all parameters and the tool's core behavior. It could be slightly stronger with explicit notes on prerequisites or error behavior, but it is largely complete for safe invocation.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by documenting every parameter: dax_query, workspace, model, and include_execution_plan. It adds useful semantics like 'Name or ID', optionality, and the default behavior of include_execution_plan. 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.

Purpose5/5

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: 'Analyze a DAX query for performance insights and execution plan.' It clearly distinguishes this from sibling tools like dax_query or sql_query by emphasizing performance analysis and execution plan generation rather than general query execution.

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

Usage Guidelines4/5

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

The description clearly implies this tool is for performance analysis and execution plan inspection, which gives the agent a clear sense of when to use it. It does not explicitly name alternatives or exclusion conditions, but the context is strong enough for correct selection among DAX-related siblings.

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

analyze_notebook_performanceB

Analyze a notebook's code for performance optimization opportunities in Fabric.

Args:
    workspace: Name or ID of the workspace
    notebook_id: ID or name of the notebook
    ctx: Context object containing client information
Returns:
    A string containing performance analysis and optimization recommendations.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
notebook_idYes

TDQS

B3.2/5.0
Behavior3/5

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 discloses that the tool returns a string containing performance analysis and recommendations, which is useful. However, it does not state whether the analysis is read-only, whether it executes the notebook, or what permissions or context are required.

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

Conciseness4/5

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

The description is short, front-loads the purpose in a single sentence, and organizes remaining details under Args and Returns. The mention of ctx, which is not an input-schema parameter, is a minor structural downside, but overall the description is efficient and scannable.

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

Completeness3/5

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

With no annotations and no output schema, the description should cover side effects and usage context more thoroughly. It explains the purpose and return value, but does not say when to use the tool, whether it mutates anything, or what conditions make it applicable. For a simple two-parameter analysis tool, this is partially adequate but leaves clear gaps.

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

Parameters3/5

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. The Args section usefully clarifies that workspace and notebook_id accept names or IDs and that ctx contains client information. However, ctx is not present in the input schema, and no format, type, or validation details are given for the parameters.

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

Purpose4/5

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

The opening sentence names a specific verb (Analyze), a specific resource (a notebook's code), and the goal (performance optimization opportunities in Fabric). It is clear about what the tool does, though it does not explicitly contrast with related siblings like validate_pyspark_code or analyze_dax_query.

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

Usage Guidelines2/5

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, no prerequisites, and no conditions under which it should or should not be called. The intended use is only implied by the name and first sentence.

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

cancel_notebook_jobB

Cancel a running notebook job instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo
notebookNo
workspaceNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It identifies the action as canceling but does not disclose side effects, whether cancellation is reversible, idempotency, or what happens to the job after cancellation. For a mutating/destructive operation, this is a significant gap.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is efficient, though its brevity contributes to the lack of behavioral and parameter guidance captured in other dimensions.

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

Completeness2/5

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

Given three optional but completely undocumented parameters and no annotations or output schema, the description is not complete enough for an agent to call the tool reliably. It does not explain how to identify the notebook job instance being canceled or what the expected result is.

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

Parameters1/5

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 information about how job_id, notebook, or workspace should be used or whether they are alternative identifiers. An agent cannot determine which parameter or combination is needed to cancel a specific job.

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

Purpose5/5

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

The description states a specific verb ('Cancel') and resource ('running notebook job instance'), and the name clearly distinguishes it from siblings like run_notebook_job and get_run_status. It is immediately obvious what this tool does.

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

Usage Guidelines3/5

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

The word 'running' implies the tool should be used only for active notebook jobs, which provides some guidance. However, it does not explicitly say when to use this tool over alternatives like get_run_status, nor does it mention conditions like job completion or prerequisite identifiers.

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

clear_contextA

Clear the current session context.

Returns:
    A string confirming the context has been cleared.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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 discloses that the tool clears session context and returns a confirmation string, but it does not explain what 'session context' includes, whether the action is reversible, or whether it affects other sessions or persisted state.

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

Conciseness5/5

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

The description is extremely concise: one clear action statement plus a one-line return description. Every sentence earns its place, and the key purpose is front-loaded.

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

Completeness3/5

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

For a zero-parameter tool, the description is mostly adequate and it does mention the return value. However, with no annotations and no output schema, it should more explicitly define what 'session context' means and what state is lost after clearing, otherwise an agent may over- or under-estimate the tool's scope.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100%, so there is no parameter information missing. The baseline of 4 applies because the description cannot add parameter-level value beyond what the schema already makes clear.

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

Purpose5/5

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

The description states a specific verb ('Clear') and a clear resource ('current session context'), so an agent immediately knows what the tool does. It is also naturally distinguished from sibling tools like set_workspace or list_tables, none of which perform this action.

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

Usage Guidelines2/5

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 vs alternatives, no prerequisites, and no note on consequences. The intended usage is only implied by the tool's name and one-line description.

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

cluster_infoC

Retrieve Spark cluster information for the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

C2.7/5.0
Behavior2/5

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 only states that the tool retrieves information, implying read-only behavior, but gives no details about defaulting behavior, return payload, error cases, or whether state is read from the currently selected workspace.

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

Conciseness4/5

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

The description is a single focused sentence with no redundancy or fluff. It could be considered under-specified, but as a standalone sentence it is clear and front-loaded.

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

Completeness2/5

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

For a tool with no output schema, no annotations, and a workspace parameter that has no schema-level description, the single sentence leaves too much to inference: workspace selection semantics, return format, and relationship to set_workspace or compute context.

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

Parameters2/5

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

The schema has 0% description coverage for the single workspace parameter, and the description does not add meaning beyond the parameter name. It fails to explain what accepted values look like, what null means, or how the workspace parameter relates to the active workspace context.

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

Purpose4/5

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

The description clearly identifies a read operation on a specific resource: Spark cluster information, scoped to a workspace. It is distinguishable from sibling list/set tools, though it does not specify exactly what cluster fields are returned or whether it targets the current compute context.

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

Usage Guidelines2/5

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

No guidance is given on when to call cluster_info instead of other compute-related siblings such as set_workspace, set_warehouse, or list_lakehouses. It also does not state whether the optional workspace parameter overrides the current context or when omission is appropriate.

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

create_data_pipelineA
Create a Data Pipeline in a Fabric workspace with custom activities and dependencies.

Perfect for orchestrating medallion architecture workflows (Bronze → Silver → Gold).

Args:
    pipeline_name: Name for the pipeline
    pipeline_definition: Pipeline JSON definition with activities and dependencies
    workspace: Workspace name or ID (optional, uses context if not provided)
    description: Optional description for the pipeline
    ctx: Context object

Returns:
    Dictionary with pipeline details including ID and status

Example - Bronze to Silver to Gold cascade:
    pipeline_definition = {
        "properties": {
            "activities": [
                {
                    "name": "Bronze_Ingestion",
                    "type": "Notebook",
                    "typeProperties": {
                        "notebook": {"name": "bronze_ingest_notebook"}
                    },
                    "dependsOn": []
                },
                {
                    "name": "Silver_Transform",
                    "type": "Notebook",
                    "typeProperties": {
                        "notebook": {"name": "silver_transform_notebook"}
                    },
                    "dependsOn": [
                        {
                            "activity": "Bronze_Ingestion",
                            "dependencyConditions": ["Succeeded"]
                        }
                    ]
                },
                {
                    "name": "Gold_Transform",
                    "type": "Notebook",
                    "typeProperties": {
                        "notebook": {"name": "gold_transform_notebook"}
                    },
                    "dependsOn": [
                        {
                            "activity": "Silver_Transform",
                            "dependencyConditions": ["Succeeded"]
                        }
                    ]
                }
            ]
        }
    }

    create_data_pipeline(
        pipeline_name="Medallion_ETL_Pipeline",
        pipeline_definition=pipeline_definition,
        workspace="PROD-Analytics",
        description="Orchestrates Bronze → Silver → Gold transformations"
    )
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
descriptionNo
pipeline_nameYes
pipeline_definitionYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool returns a dictionary with ID and status, and that workspace falls back to context, but it does not discuss idempotency, overwrite behavior, permission requirements, or failure modes 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.

Conciseness4/5

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

The description is well-structured with purpose, args, returns, and an example. The example is long but earns its place by clarifying the nested pipeline_definition format. No section feels redundant, though the 'Perfect for...' sentence is slightly promotional.

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

Completeness4/5

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

For a four-parameter tool with a complex nested object and no output schema, the description is largely complete: it explains all parameters, illustrates the nested structure, and states the return value. It could be improved by noting potential validation failures or how an existing pipeline name is handled.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates. Every parameter is explained, and the detailed pipeline_definition example with activities and dependsOn gives an agent a concrete template for constructing valid input.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a Data Pipeline in a Fabric workspace with custom activities and dependencies.' This clearly differentiates it from sibling tools like pipeline_run or get_pipeline_definition, and the medallion architecture mention adds a concrete use case.

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

Usage Guidelines4/5

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

The description gives a clear context for use: 'Perfect for orchestrating medallion architecture workflows (Bronze → Silver → Gold).' It does not explicitly mention alternatives or exclusions, but the creation-focused wording and example make the intended usage unambiguous.

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

create_fabric_notebookB

Create a new notebook optimized for Microsoft Fabric using advanced templates.

Args:
    workspace: Name or ID of the workspace
    notebook_name: Name of the new notebook
    template_type: Type of Fabric template ('fabric_integration', 'streaming')
    ctx: Context object containing client information
Returns:
    A string containing the ID of the created notebook or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
notebook_nameYes
template_typeNofabric_integration

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It explicitly states a new notebook is created and that the return value is an ID or error message, which covers the immediate outcome. However, it does not explain what 'advanced templates' do, whether the operation is idempotent, or what permissions are required.

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

Conciseness4/5

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

The description is compact and front-loaded with the main purpose, followed by a structured Args/Returns block. The inclusion of 'ctx' as an argument not present in the schema adds mild noise, but overall the text is efficient.

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

Completeness3/5

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

For a create operation with no output schema and no annotations, the description covers the core parameters and return format. It is incomplete in that it does not explain how this tool relates to the generic create_notebook and create_pyspark_notebook siblings, nor the meaning of 'advanced templates'.

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

Parameters4/5

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

Schema description coverage is 0%, and the Args section compensates by explaining workspace as name or ID, notebook_name, and template_type with its allowed values. The mention of 'ctx' is confusing because it is not present in the input schema, but the other parameter meanings are genuinely clarified.

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

Purpose4/5

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

The description opens with a clear verb and resource: 'Create a new notebook optimized for Microsoft Fabric using advanced templates.' It states what the tool does but does not explicitly differentiate it from sibling tools like create_notebook or create_pyspark_notebook, so it misses the top score for sibling distinction.

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

Usage Guidelines2/5

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_notebook or create_pyspark_notebook. It lists arguments and return behavior but no context, prerequisites, or exclusions.

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

create_lakehouseC

Create a new lakehouse in a Fabric workspace.

Args:
    name: Name of the lakehouse
    workspace: Name or ID of the workspace (optional)
    description: Description of the lakehouse (optional)
    ctx: Context object containing client information
Returns:
    A string confirming the lakehouse has been created or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
folder_idNo
workspaceNo
descriptionNo

TDQS

C2.7/5.0
Behavior2/5

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 does state that the function returns a confirmation string or an error message, which is useful, but it does not disclose side effects, whether creation is idempotent, permission requirements, or behavior when the lakehouse name 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.

Conciseness4/5

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

The description is a compact docstring: one clear purpose sentence, a short parameter list, and a returns note. Every line contributes necessary information and there is no filler or repetition.

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

Completeness2/5

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

The tool is a creation operation with no annotations and no output schema, so the description should provide more operational context. It confirms the return type but omits folder_id semantics, prerequisites, error conditions, and what 'a string confirming' actually contains, leaving an agent under-equipped to handle edge cases.

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

Parameters2/5

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 name, workspace (as 'Name or ID'), and description, but it omits the folder_id parameter entirely and references a 'ctx' argument that is not present in the input schema. This mismatch and omission leave parameter understanding incomplete.

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

Purpose4/5

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

The description opens with 'Create a new lakehouse in a Fabric workspace,' which is a specific verb plus resource and clearly conveys the tool's primary action. It does not differentiate the tool from siblings like create_warehouse or set_lakehouse, but the resource 'lakehouse' makes the purpose unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance about when to choose this tool over alternatives, such as set_lakehouse for selecting a current lakehouse or create_warehouse for creating a different resource type. The optional workspace argument hints at context, but there is no explicit 'use this when' or 'instead of' guidance.

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

create_measureA

Create a new DAX measure in a semantic model.

Args:
    measure_name: Name of the measure to create
    dax_expression: DAX formula for the measure
    table_name: Name of the table to add the measure to
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    format_string: Display format string (e.g., "#,0.00", "0.0%") (optional)
    description: Description of the measure (optional)
    is_hidden: Whether to hide the measure from client tools (default: False)
    ctx: Context object containing client information

Returns:
    A dictionary containing success status and the created measure details.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
is_hiddenNo
workspaceNo
table_nameYes
descriptionNo
measure_nameYes
format_stringNo
dax_expressionYes

TDQS

A4.3/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It does state that this creates a measure and that the return value includes a success status and created details. However, it does not disclose behavior around duplicate measure names, persistence/commit semantics, or how optional workspace/model defaults are resolved from ctx.

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

Conciseness5/5

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

The description is a one-line purpose followed by a structured Args list that maps directly to the 8 parameters, plus a Returns line. There is no fluff, and the examples for format_string earn their place because the schema provides no descriptions.

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

Completeness4/5

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

Given no annotations, no output schema, and no schema descriptions, the description is substantially complete: it covers the operation, every parameter, and the return contract. Minor gaps remain around duplicate handling, error behavior, and a fuller explanation of how ctx supplies default workspace/model context.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description's Args section defines all 8 parameters with plain-language meaning, defaults, optionality, and format string examples. 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.

Purpose5/5

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

The description opens with a specific verb+resource: 'Create a new DAX measure in a semantic model.' The word 'new' clearly distinguishes this from update_measure and delete_measure, and the artifact type is specific enough to avoid confusion with other siblings.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: when a new DAX measure should be created. Sibling names like update_measure and delete_measure make the lifecycle role obvious, but the description does not explicitly direct agents away from those alternatives or mention prerequisites like an existing semantic model.

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

create_notebookA

Create a new notebook in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace
    notebook_name: Name of the new notebook
    content: Content of the notebook (in JSON format). If not provided, creates a basic Hello Fabric notebook.
    ctx: Context object containing client information
Returns:
    A string containing the ID of the created notebook or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
contentNo
workspaceYes
notebook_nameNonew_notebook

TDQS

A3.7/5.0
Behavior3/5

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 usefully reveals that omitting content creates a basic Hello Fabric notebook and that the return value is a string ID or error message. However, it does not disclose behavior on name collisions, permission requirements, or side effects beyond creation, which matters for a mutating tool.

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

Conciseness5/5

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

The description is well structured with a one-line purpose, then compact Args and Returns sections. Every sentence adds value needed for invocation, and there is no filler. It is appropriately sized for a tool with three parameters.

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

Completeness4/5

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

For a simple creation tool, the description covers the required workspace parameter, optional defaults, and the return format. It is missing guidance on distinguishing this tool from notebook-creation siblings and on what the JSON content structure should look like, but an agent can still make a valid minimal call using only the required workspace parameter.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does. It explains workspace as a name or ID, notebook_name as the name, content as JSON with a default fallback, and even documents ctx. This gives an agent enough meaning to invoke the tool correctly without relying on the bare property names.

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

Purpose4/5

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

The description states a clear verb and resource: 'Create a new notebook in a Fabric workspace.' It is unambiguous about the core action, and the mention of Fabric workspace provides useful scope. However, it does not differentiate from sibling tools like create_fabric_notebook or create_pyspark_notebook, leaving potential selection ambiguity.

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

Usage Guidelines2/5

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. The description does not mention that create_fabric_notebook or create_pyspark_notebook might be more appropriate for framework-specific notebooks, nor does it state any conditions that should route an agent to this tool. The optional content behavior is noted, but not framed as a usage decision.

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

create_pyspark_notebookB

Create a new PySpark notebook from a template in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace
    notebook_name: Name of the new notebook
    template_type: Type of PySpark template ('basic', 'etl', 'analytics', 'ml')
    ctx: Context object containing client information
Returns:
    A string containing the ID of the created notebook or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
notebook_nameYes
template_typeNobasic

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must explain behavior itself, and it does state that a notebook is created and that the return value is either a notebook ID or an error message. However, it does not disclose permission requirements, naming rules, overwrite/idempotency behavior, or what creating from a 'template' actually does to the notebook content.

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

Conciseness4/5

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

The description is compact and front-loaded with the main action, followed by a clearly structured Args/Returns section. The only real issue is the extraneous 'ctx' entry, which makes the structure slightly less reliable despite being concise.

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

Completeness3/5

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

The description covers the basic call contract: what is created, the key parameters, and the return format. But with no annotations, no output schema, and zero parameter descriptions in the schema, it should also cover prerequisites, template behavior differences, and how to choose among the notebook-creation siblings; those gaps prevent it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the Args block adds genuinely useful meaning: it clarifies that workspace accepts a name or ID and lists the template_type options ('basic', 'etl', 'analytics', 'ml'). However, the description also lists 'ctx' as an argument even though it is not present in the input schema, which is confusing and could lead an agent to pass an invalid parameter; it also omits the default value of template_type.

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

Purpose4/5

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

The description uses a specific action ('Create') with a concrete resource ('new PySpark notebook from a template in a Fabric workspace'), so the core purpose is immediately clear. It does not explicitly distinguish this tool from the overlapping sibling tools create_notebook and create_fabric_notebook, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus create_notebook, create_fabric_notebook, or generate_pyspark_code. An agent cannot determine which sibling is the correct choice based on this description alone.

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

create_warehouseB

Create a new warehouse in a Fabric workspace.

Args:
    name: Name of the warehouse
    workspace: Name or ID of the workspace (optional)
    description: Description of the warehouse (optional)
    ctx: Context object containing client information
Returns:
    A string confirming the warehouse has been created or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
folder_idNo
workspaceNo
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses the return value (confirmation or error string), which is helpful, but it does not mention side effects, idempotency, duplicate handling, permissions, or what happens when optional fields are omitted.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose. The Args/Returns structure is scannable, though the Args list partially duplicates the schema and includes an extra 'ctx' entry.

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

Completeness2/5

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

For a create operation with no annotations and no output schema, the description should clarify more behavior. It fails to mention folder_id, does not explain the default workspace behavior when workspace is omitted, and introduces a 'ctx' argument not present in the schema. The return description is useful but not enough to make the tool fully self-contained.

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

Parameters3/5

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 name, workspace, and description by explaining their roles and optionality. However, it omits folder_id entirely and lists a 'ctx' parameter that does not appear in the input schema, creating potential confusion.

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

Purpose5/5

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

The description states a clear verb ('Create'), a specific resource ('a new warehouse'), and a context ('in a Fabric workspace'). It is immediately distinguishable from sibling tools like create_lakehouse and create_workspace because the resource is explicit.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives, nor prerequisites such as setting a workspace first. The description only notes that workspace is optional, but does not explain the implications of omitting it or how this relates to sibling tools like set_workspace or create_lakehouse.

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

create_workspaceA

Create a new Fabric workspace.

Args:
    display_name: Workspace display name
    capacity_id: Optional capacity ID
    description: Optional description
    domain_id: Optional domain identifier
    ctx: Context object containing client information
Returns:
    A string confirming creation or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
domain_idNo
capacity_idNo
descriptionNo
display_nameYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It states the action (creation) and the return value ('A string confirming creation or an error message'), which provides baseline transparency. However, it does not disclose side effects, permission requirements, or behavior when a workspace with the same name 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.

Conciseness5/5

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

The description is tightly structured as a docstring with Args and Returns sections. Every sentence serves a purpose, and the core action is front-loaded.

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

Completeness4/5

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

For a simple create operation with four flat parameters and no output schema, the description covers purpose, parameters, and return type, leaving the agent with enough to invoke it. It falls short only on usage guidance and edge-case behavior, which are penalized in other dimensions.

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

Parameters4/5

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 parameters. It lists display_name, capacity_id, description, domain_id, and ctx with one-line meanings, adding value beyond the schema's bare property titles. The explanations are concise and adequate, though not deeply detailed.

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

Purpose5/5

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

The description opens with 'Create a new Fabric workspace', which is a specific verb+resource pairing. It clearly distinguishes this tool from siblings like create_warehouse and create_lakehouse without ambiguity.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as set_workspace or list_workspaces. The description does not mention preconditions, exclusions, or scenarios that favor this tool.

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

dataflow_refreshD
ParametersJSON Schema
NameRequiredDescriptionDefault
dataflowNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

dax_queryD
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
datasetYes
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

delete_measureB

Delete a DAX measure from a semantic model.

Args:
    measure_name: Name of the measure to delete
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    ctx: Context object containing client information

Returns:
    A dictionary containing success status and deletion details.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
workspaceNo
measure_nameYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the deletion action and a vague return of success status and details; it does not mention that deletion is destructive/permanent, potential dependency impacts, permission requirements, or behavior when the measure does not exist.

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

Conciseness5/5

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

The description is compact and front-loaded with the primary intent. The Args and Returns sections are organized and contain no fluff, making it easy to scan quickly.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, this description is not complete enough. It omits irreversibility, side effects, error behavior, and the actual structure of the returned dictionary, leaving an agent without enough context to confidently invoke the tool.

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

Parameters3/5

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

The Args section adds meaning by describing measure_name as the measure to delete, and workspace/model as optional names or IDs, which is useful given 0% schema description coverage. However, the explanations are minimal, and 'ctx' is documented as an argument even though it is absent from the input schema, which could confuse an agent.

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

Purpose5/5

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

The description opens with 'Delete a DAX measure from a semantic model', a specific verb and resource. This clearly differentiates it from sibling measure tools such as create_measure, update_measure, list_measures, and get_measure.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no warning about cases where deletion may be inappropriate. The description never addresses that measures might have dependencies or that other operations could be more suitable.

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

delete_teams_channel_aliasB

Delete a saved Teams channel alias.

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure. 'Delete' conveys destructiveness but does not state whether the operation is permanent, idempotent, or what happens to messages or aliases that reference the deleted alias.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no fluff or repeated schema information. Every word contributes to the definition.

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

Completeness3/5

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

For a one-parameter deletion tool with no output schema, this is nearly sufficient, but without annotations it leaves important context unstated: permanence, error behavior for missing aliases, and relationship to saved/list alias tools.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not explain the alias parameter beyond the tool's name and the word 'alias.' It does not specify the expected format (e.g., friendly name vs. ID) or how the alias is identified.

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

Purpose5/5

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

States a specific verb and resource: 'Delete a saved Teams channel alias.' The action (delete) and noun (saved Teams channel alias) clearly set it apart from sibling tools like save_teams_channel_alias and list_teams_channel_aliases.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance or alternatives. An agent must infer that this is for removing an alias; there is no mention of prerequisite, relation to graph_teams_message_alias, or consequences of deleting an in-use alias.

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

describe_historyD
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tableNo
lakehouseNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

generate_fabric_codeA

Generate Fabric-specific PySpark code for lakehouse operations.

Args:
    operation: Type of operation ('read_lakehouse', 'write_lakehouse', 'merge_delta', 'performance_monitor')
    lakehouse_name: Name of the lakehouse
    table_name: Name of the source table
    target_table: Name of the target table (for write/merge operations)
    ctx: Context object containing client information
Returns:
    A string containing the generated Fabric-specific PySpark code.
ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes
table_nameNo
target_tableNo
lakehouse_nameNo

TDQS

A3.6/5.0
Behavior3/5

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 discloses that the tool returns a string and mentions a ctx object, but it does not state whether the generated code is executed or only returned, whether the tool has side effects, or whether a lakehouse/workspace context must be set beforehand.

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

Conciseness4/5

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

The docstring is compact, uses clear Args/Returns structure, and front-loads the purpose. The phantom ctx parameter is a minor structural blemish, but overall the description is appropriately sized and scannable.

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

Completeness3/5

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

The description covers the basics: what the tool does, its arguments, and return value. However, it does not explain how the parameters interact with the chosen operation, which parameters are needed for which operation type, or why ctx appears in the description but not in the schema. With no output schema, these gaps reduce completeness.

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

Parameters3/5

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 real value for operation by listing allowed values and clarifies target_table's role in write/merge operations. However, it documents a ctx parameter that is absent from the input schema, and lakehouse_name and table_name are only minimally explained.

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

Purpose5/5

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

The description opens with a specific verb ('Generate') and resource ('Fabric-specific PySpark code for lakehouse operations'), making the tool's core purpose immediately clear. The enumerated operation types (read_lakehouse, write_lakehouse, merge_delta, performance_monitor) further differentiate it from sibling tools like generate_pyspark_code.

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

Usage Guidelines3/5

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

The operation values imply the intended use cases, but there is no explicit guidance on when to choose this tool over alternatives such as generate_pyspark_code or validate_fabric_code. No exclusions, prerequisites, or 'use this instead when...' statements are provided.

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

generate_pyspark_codeB

Generate PySpark code for common operations.

Args:
    operation: Type of operation ('read_table', 'write_table', 'transform', 'join', 'aggregate')
    source_table: Source table name (format: lakehouse.table_name)
    target_table: Target table name (format: lakehouse.table_name)
    columns: Comma-separated list of columns
    filter_condition: Filter condition for data
    ctx: Context object containing client information
Returns:
    A string containing the generated PySpark code or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNo
operationYes
source_tableNo
target_tableNo
filter_conditionNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does disclose the return type as a string of code or an error message, which adds some transparency. However, it does not explicitly state that code is only generated and not executed, nor does it mention preconditions or 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.

Conciseness4/5

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

The description is well-structured with a front-loaded summary and clear Args/Returns sections. It is efficient overall, though the mention of the non-schema 'ctx' parameter adds minor noise.

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

Completeness3/5

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

The description is reasonably complete for a simple code-generation tool, but it lacks operation-specific parameter requirements, examples, and details about error conditions. Since there is no output schema, more detail about what the generated code looks like would improve completeness.

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

Parameters3/5

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

The description adds useful meaning beyond the schema by listing operation enum values, table name formats, and comma-separated columns. However, it omits which parameters are required for each operation type, which is essential for correct invocation, and it mentions a 'ctx' parameter that is not present in the input schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'Generate PySpark code' and lists five concrete operation types. This clearly distinguishes it from siblings like validate_pyspark_code and generate_fabric_code by technology and output.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as validate_pyspark_code, create_pyspark_notebook, or generate_fabric_code. The operation list implies a use case, but no explicit conditions or exclusions are provided.

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

get_all_lakehouse_schemasD
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

get_lakehouse_table_schemaD
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes
workspaceYes
table_nameNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

get_measureA

Get a specific DAX measure definition by name.

Args:
    measure_name: Name of the measure to retrieve
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    ctx: Context object containing client information

Returns:
    The measure definition including DAX expression.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
workspaceNo
measure_nameYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosure. It states the return value ('measure definition including DAX expression') but does not mention read-only/side-effect behavior, errors, permissions, or behavior when workspace/model are omitted.

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

Conciseness5/5

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

The one-line summary is front-loaded and the Args/Returns structure is scannable with no filler. It is appropriately sized for a simple retrieval tool.

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

Completeness3/5

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

Adequate for a simple getter: it identifies the required parameter and the return content. It lacks details about relying on current context when workspace/model are omitted, error behavior, and the exact shape of the returned measure definition.

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

Parameters3/5

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 gives one-line meanings for measure_name, workspace, model, and a non-schema ctx argument. The descriptions are helpful but minimal, and the inclusion of ctx not in the input schema introduces ambiguity.

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

Purpose5/5

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

States a precise action: retrieving a specific DAX measure definition by name. This clearly distinguishes it from list_measures, create_measure, update_measure, and delete_measure.

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

Usage Guidelines3/5

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

The phrase 'specific ... by name' implies use when a single measure's definition is needed, but it never explicitly contrasts with list_measures or explains when not to use it. No prerequisites or context requirements are mentioned.

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

get_model_schemaB

Get the complete schema of a semantic model including tables, columns, measures, and relationships.

This retrieves the model definition in TMSL format and parses the structure.

Args:
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    ctx: Context object containing client information

Returns:
    A dictionary containing the model schema with tables, columns, measures, and relationships.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
workspaceNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations available, the description carries the behavioral disclosure burden, and it does convey that the tool retrieves the model definition in TMSL format, parses the structure, and returns a dictionary. However, it omits details about error behavior, permissions, and how omitted parameters are resolved in the current context, so the disclosure is only partial.

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

Conciseness4/5

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

The description is well structured with a clear opening statement, a short implementation note, an Args section, and a Returns section. It is slightly redundant because the components 'tables, columns, measures, and relationships' appear in both the first sentence and the Returns line, but overall the text is focused and efficient.

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

Completeness3/5

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

For a read-only schema retrieval tool, the description adequately covers the main action, optional inputs, and the general shape of the return value. It is less complete because it gives no usage guidance, no error or failure behavior, and no explanation of how the optional workspace and model parameters resolve relative to the current context.

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

Parameters3/5

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

The input schema has zero parameter descriptions, so the Args block is important and does add that workspace and model are optional 'Name or ID' values. It does not explain how the parameters interact with context or how the optionality is resolved, and it lists 'ctx' as an argument even though ctx is not present in the input schema.

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

Purpose4/5

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

The description clearly identifies the operation as retrieving the complete schema of a semantic model and enumerates the included components: tables, columns, measures, and relationships. However, it does not explicitly differentiate itself from the sibling tool 'get_semantic_model', leaving some ambiguity about which tool returns what.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as 'get_semantic_model', 'list_semantic_models', or 'table_schema'. The description states what the tool does but gives no assistance in selecting it over the many related sibling tools.

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

get_notebook_contentA

Get the content of a specific notebook in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace
    notebook_id: ID or name of the notebook
    ctx: Context object containing client information
Returns:
    A string containing the notebook content in JSON format or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
notebook_idYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It communicates a read operation via 'Get' and discloses the return format as 'a string containing the notebook content in JSON format or an error message.' It does not mention permissions, side effects beyond reading, or rate limits, but this is a simple read tool.

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

Conciseness4/5

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

The description is a compact docstring with an Args/Returns structure. Each line earns its place, and the key information is front-loaded in the first sentence. The only minor issue is including ctx, which is not part of the input schema.

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

Completeness4/5

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

For a simple 2-parameter read tool with no output schema, the description is largely complete: it explains what the tool returns (JSON string or error message) and clarifies that both parameters accept names or IDs. It would benefit from a note that this is a read-only operation, but the verb 'Get' conveys that reasonably.

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

Parameters4/5

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

The input schema only provides field names with no descriptions (0% coverage), so the description must compensate. It does: 'workspace: Name or ID of the workspace' and 'notebook_id: ID or name of the notebook' add meaningful detail about accepted value forms. The mention of ctx in Args is confusing because ctx is not in the input schema, but the actual callable params are well clarified.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get the content of a specific notebook in a Fabric workspace.' It clearly distinguishes this from siblings like list_notebooks (listing only) and run_notebook_job (executing), even without saying so explicitly.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as list_notebooks, get_report, or run_notebook_job. There are no conditions, exclusions, or alternative tool names mentioned.

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

get_permissionsA

Retrieve the role assignments for a workspace.

Note: Fabric REST API does not support item-level permissions.
This returns workspace-level role assignments instead.
ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
workspaceYes

TDQS

A4/5.0
Behavior4/5

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 does disclose a key non-obvious trait: the API limitation means item-level permission requests are not honored. It does not go further to explain what happens with the required item_id parameter or any auth requirements, but the main behavioral surprise is addressed.

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

Conciseness5/5

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

The description is only two sentences and contains no filler. The primary purpose is stated first, and the important API limitation is provided as a brief, focused note.

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

Completeness3/5

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

The description covers the central scope shift to workspace-level permissions, but it leaves a significant gap: the item_id parameter is required yet unexplained, and there is no output schema to clarify the return shape. An agent can invoke the tool, but may be confused about why item_id is necessary and what exactly the response will contain.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain either parameter's meaning beyond implying 'workspace' is the target workspace. The required item_id parameter is especially problematic: the note says item-level permissions are unsupported, but the description never clarifies why item_id is required or how it is used.

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

Purpose5/5

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

The description clearly states a specific verb ('Retrieve') and resource ('role assignments for a workspace'), so the tool's purpose is immediately obvious. The note about Fabric REST API not supporting item-level permissions distinguishes this from item-level permission operations and reinforces the workspace-level scope.

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

Usage Guidelines4/5

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

The description provides a clear usage context by explicitly stating that item-level permissions are not supported and that workspace-level role assignments are returned instead. It does not explicitly name alternative tools such as set_permissions, but the caveat effectively tells an agent what to expect and when this tool is appropriate.

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

get_pipeline_definitionA
Get the definition of an existing Data Pipeline including activities and dependencies.

Args:
    pipeline: Pipeline name or ID
    workspace: Workspace name or ID (optional, uses context if not provided)
    ctx: Context object

Returns:
    Dictionary with pipeline definition including decoded activities

Example:
    get_pipeline_definition(
        pipeline="Medallion_ETL_Pipeline",
        workspace="PROD-Analytics"
    )
ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineYes
workspaceNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It conveys that this is a read-only 'Get' operation, that it returns a dictionary with decoded activities and dependencies, and that workspace falls back to context. It does not detail error behavior or permissions, but the non-mutating nature is reasonably clear.

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

Conciseness5/5

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

The description is compact and well-organized into Args, Returns, and an Example. Every section adds useful information, and the example demonstrates realistic invocation. There is no filler or redundancy.

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

Completeness4/5

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

For a simple two-parameter getter, the description provides enough context: it explains the return value, the meaning of each parameter, and an example. Since there is no output schema, the Returns section is valuable. The main gaps are lack of explicit error/not-found behavior and any mention of permissions, but these are not critical for this tool.

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

Parameters4/5

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 so by explaining that pipeline accepts a name or ID and that workspace is an optional name or ID that uses context when omitted. However, it also lists 'ctx' as an argument even though it is absent from the input schema, which could cause confusion.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get the definition of an existing Data Pipeline including activities and dependencies.' This clearly distinguishes it from sibling tools like create_data_pipeline, pipeline_run, and pipeline_status.

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

Usage Guidelines3/5

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

The description makes the purpose clear and notes that workspace is optional, but it does not explicitly state when to use this tool versus alternatives such as create_data_pipeline or pipeline_logs. The word 'existing' implies it is for reading, not creating, but no explicit exclusions or alternative routing are provided.

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

get_reportC

Get a specific report by ID.

Args:
    workspace: Name or ID of the workspace (optional)
    report_id: ID of the report (optional)
    ctx: Context object containing client information

Returns:
    A string containing the report details or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
report_idNo
workspaceNo

TDQS

C2.9/5.0
Behavior2/5

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 only says the tool returns a report string or an error message, but does not disclose side effects, authorization needs, behavior when both parameters are omitted, or how workspace context affects the lookup. This is minimal transparency for a tool that accesses report data.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, followed by an Args section and Returns line. The formatting is scannable and the length is appropriate for a simple retrieval tool. Minor redundancy exists because the schema already marks both parameters as optional, but the overall structure is clean.

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

Completeness2/5

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

For a tool with two optional parameters, no required fields, no annotations, and no output schema, the description is incomplete. It does not specify whether report_id is effectively required for a meaningful call, what the returned string contains beyond 'report details', or how errors are surfaced. An agent would need to guess at the correct invocation pattern.

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

Parameters3/5

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. It adds useful semantics by stating workspace is a 'Name or ID' and that both parameters are optional, and it mentions a ctx argument, though ctx is not present in the schema. However, it does not explain the relationship between workspace and report_id or what happens if neither is provided, leaving important gaps.

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

Purpose4/5

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

The description clearly states a specific action and resource: 'Get a specific report by ID.' It is unambiguous about what the tool does and, by mentioning ID-based retrieval, it is implicitly distinct from list_reports. However, it does not explicitly name sibling tools or contrast them, so it stops short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like list_reports or report_export. It does not state prerequisites, whether a report_id is required, or when the workspace parameter should be supplied. This leaves the agent to infer usage from the tool name and one-line summary.

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

get_run_statusC

Poll a notebook job run until completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo
notebookNo
workspaceNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits itself. It does reveal that the tool polls until completion, implying a blocking/waiting behavior, but it does not explain whether it returns a final status, how it handles failed runs, whether it can time out, or what side effects (if any) it has. The absence of any read-only or destructive hints leaves the safety profile unclear.

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

Conciseness4/5

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

The description is a single efficient sentence that front-loads the verb and object without filler. It is concise, but it is also somewhat undersized for the amount of context the tool needs; slightly more structure or detail would make it more useful without sacrificing readability.

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

Completeness2/5

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

There is no output schema and no annotations, so the description is the only source of behavioral and semantic context. It does not explain what the tool returns, how to identify the job run to poll, or what 'until completion' means in terms of blocking, polling interval, or timeout. The definition is too thin for an agent to invoke the tool with confidence in a non-trivial workflow.

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

Parameters1/5

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 information about job_id, notebook, or workspace. The parameter names are only weakly self-descriptive, and the relationship between them, their formats, and their optionality are entirely unexplained. For a tool with three nullable parameters and no required fields, this is a critical gap.

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

Purpose4/5

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

The description identifies a specific verb ('poll') and resource ('notebook job run') and states the intended terminal condition ('until completion'). This makes the basic purpose understandable and distinguishes it from run/cancel operations, though it does not explicitly differentiate it from sibling status tools like pipeline_status or clarify what the returned status looks like.

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

Usage Guidelines3/5

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

The phrase 'poll a notebook job run' implies that this tool should be used after starting a notebook job and when the caller wants to wait for that job to finish. However, there is no explicit guidance about when to use this tool versus run_notebook_job, cancel_notebook_job, or pipeline_status, and no mention of 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_semantic_modelA

Get a specific semantic model by ID.

Args:
    workspace: Name or ID of the workspace (optional)
    model_id: ID of the semantic model (optional)
    ctx: Context object containing client information

Returns:
    A string containing the details of the semantic model or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
model_idNo
workspaceNo

TDQS

A3.5/5.0
Behavior3/5

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 discloses the return shape ('A string containing the details of the semantic model or an error message'), which is genuinely useful. However, it does not explain failure modes beyond a generic 'error message', what 'details' includes, whether the optional workspace falls back to the current context, or the behavior when both optional parameters are omitted. Non-zero disclosure, but several behaviors remain opaque.

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

Conciseness4/5

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

The structure is clean and front-loaded: a one-line summary followed by a compact Args block and a Returns block. Every line earns its place given the 0% schema coverage. The only blemish is the 'ctx: Context object containing client information' line, which describes a parameter not present in the input schema and could mislead an agent into trying to pass it.

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

Completeness3/5

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

Given the tool's simplicity — a get-by-ID read with no output schema and no annotations — the description covers the essentials: purpose, both parameters, and return format. But material gaps remain: it never clarifies what occurs when both optional parameters are unused, and it offers no pointer to list_semantic_models for discovering valid model IDs before calling this tool. Adequate for a simple tool, but not thorough.

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

Parameters4/5

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

Schema description coverage is 0% — the schema offers only bare titles ('Model Id', 'Workspace') with no descriptions. The description compensates by defining workspace as 'Name or ID of the workspace' and model_id as 'ID of the semantic model', adding real semantic meaning the schema lacks. It does not go as far as explaining the relationship between the two options (e.g., whether workspace is needed to disambiguate a model_id), but the compensation is solid.

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

Purpose4/5

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

The description opens with a clear verb+resource statement: 'Get a specific semantic model by ID.' The 'by ID' qualifier meaningfully distinguishes this from the sibling list_semantic_models tool, which enumerates models rather than fetching one. It stops short of a 5 because it does not explicitly name the sibling alternatives it is not, leaving the agent to infer the distinction.

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

Usage Guidelines3/5

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

Usage context is only implied through the 'by ID' phrasing — an agent can infer this is for retrieving a single known model, while list_semantic_models would be for discovery and get_model_schema for schema details. There is no explicit when-to-use/when-not-to-use statement, no mention of prerequisites (e.g., needing a valid workspace context), and no routing to sibling tools, so the guidance is adequate but entirely implicit.

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

get_sql_endpointB
Retrieve the SQL endpoint for a specified lakehouse or warehouse.

Args:
    workspace: Name or ID of the workspace (optional).
    lakehouse: Name or ID of the lakehouse (optional).
    warehouse: Name or ID of the warehouse (optional).
    type: Type of resource ('lakehouse' or 'warehouse'). If not provided, it will be inferred.
    ctx: Context object containing client information.

Returns:
    A string containing the resource type, name/ID, and its SQL endpoint.
ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
lakehouseNo
warehouseNo
workspaceNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It does state the return format and mentions that type inference occurs, which is useful. However, it does not disclose side effects, error behavior, authentication needs, or how conflicting arguments like both lakehouse and warehouse being provided are handled.

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

Conciseness4/5

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

The description is front-loaded with a clear one-sentence summary followed by structured Args and Returns sections. It is concise overall, though documenting a 'ctx' parameter that is absent from the input schema adds minor confusion and could mislead callers.

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

Completeness3/5

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

The description covers the parameters and return value, which is helpful given there is no output schema. However, it omits important calling constraints: whether lakehouse and warehouse are mutually exclusive, what happens if neither is provided, and what errors may occur. This leaves the tool minimally viable but with clear gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description's parameter list adds essential meaning. It explains workspace, lakehouse, and warehouse as names or IDs, and type as 'lakehouse' or 'warehouse' with inference when omitted. It does not define constraints such as mutual exclusivity or the minimum set of required arguments, but it compensates for the empty schema descriptions.

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

Purpose4/5

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

The opening sentence names a concrete action ('Retrieve') and a specific resource ('SQL endpoint for a specified lakehouse or warehouse'). This clearly communicates what the tool does and is distinguishable from generic list or schema tools, though it does not explicitly contrast it with any sibling tool.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as set_lakehouse, list_warehouses, or sql_query. No prerequisites, exclusions, or decision rules are provided; the only usage signal is implied by the purpose statement.

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

graph_driveA

List files in a OneDrive or SharePoint drive via Microsoft Graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
drive_idYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List files' clearly indicates a read-only operation, which is helpful. However, it does not say whether folders are included, whether traversal is recursive, whether results are paginated, or what metadata is returned.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the verb and resource. There is no filler, repetition, or tangential information, making it highly efficient for an agent to parse.

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

Completeness2/5

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

Given that there is no output schema and no annotations, the description is too sparse to be fully actionable. It omits path semantics, return value shape, pagination behavior, and the difference between OneDrive and SharePoint drive handling, leaving important gaps for an agent trying to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds almost no parameter-level meaning. 'Drive Id' is understandable from its name, but the optional 'path' parameter is not explained at all - the agent is left guessing whether it is a folder path, file path, or Graph item path. The description merely repeats 'drive' rather than clarifying inputs.

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

Purpose5/5

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

The description uses a specific verb and resource: 'List files in a OneDrive or SharePoint drive via Microsoft Graph.' This immediately makes the tool's purpose clear. It also distinguishes the tool from sibling Graph-based tools like graph_mail and graph_user, and from listing tools like onelake_ls, by scoping to OneDrive/SharePoint drives.

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

Usage Guidelines3/5

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

The description implies this tool is for listing files in OneDrive or SharePoint drives, giving the agent a sense of when it should be selected. However, it does not explicitly name alternatives or state when not to use the tool, leaving the usage boundary to be inferred from the sibling tool list.

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

graph_mailA

Send mail via Microsoft Graph on behalf of the current identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
bodyYes
subjectYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'on behalf of the current identity,' which hints at auth context, but it does not disclose side effects, permissions needed, whether sending is irreversible, or what happens on failure. For a side-effecting email-sending action, this is a significant gap.

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

Conciseness5/5

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

A single sentence that front-loads the verb and entity, includes a useful identity qualifier, and contains no filler. It earns every word.

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

Completeness3/5

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

For a simple three-string-parameter tool with no output schema, the description is minimally viable: it tells the agent what action to take and under whose identity. However, with no annotations and no return-value information, it leaves behavioral and edge-case details unspecified.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it adds no parameter-level detail. The parameter names 'to', 'subject', and 'body' are self-evident in an email context, but the description does not clarify formats, recipient syntax, or body type.

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

Purpose5/5

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

The description states a specific action ('Send mail') and resource ('via Microsoft Graph'), and clarifies the acting identity ('current identity'). This clearly distinguishes it from sibling graph_teams_message, which sends Teams messages instead of email.

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

Usage Guidelines4/5

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

The description gives clear context: use this tool to send email as the current user via Microsoft Graph. It does not explicitly name alternatives or say when not to use it, but the 'mail' vs. 'teams_message' distinction is apparent enough that an agent can select appropriately.

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

graph_teams_messageB

Post a message to a Teams channel via Microsoft Graph.

Args:
    team_id: The target Microsoft Teams team identifier.
    channel_id: The channel identifier within the team.
    text: The message body to send.
    content_type: Graph contentType, defaults to "html". Can be "html", "text", "markdown".
    ctx: FastMCP context.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
team_idYes
channel_idYes
content_typeNohtml

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Post a message' and describes parameters; it does not mention permissions required, side effects, send semantics, rate limits, or what happens on failure. This is a meaningful gap for a mutation-style tool.

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

Conciseness5/5

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

The description is compact and well-structured: one clear purpose sentence followed by a concise Args block. Every line adds useful information, with no filler or repetition.

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

Completeness3/5

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

The parameter semantics are fully specified, which is enough for basic invocation. However, with no output schema and no annotations, the description still omits return behavior, confirmation, and any guidance on when to select this tool over similar siblings, so it is not fully complete.

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

Parameters5/5

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

The schema provides only types and a default, with 0% description coverage, so the description fully compensates. It explains team_id, channel_id, text, and content_type, enumerates the valid content_type values, and states the default explicitly.

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

Purpose4/5

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

The description clearly states the action and resource: 'Post a message to a Teams channel via Microsoft Graph.' The Args block further specifies the target team and channel. However, it does not explicitly distinguish this from the similar sibling tool graph_teams_message_alias, so sibling differentiation is weaker than ideal.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description lists arguments but never states when a direct team/channel message is appropriate or when the alias-based sibling should be used instead.

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

graph_teams_message_aliasA

Post a message to a Teams channel using a saved alias.

Resolves the alias into `(team_id, channel_id)` and forwards to `graph_teams_message`.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
aliasYes
content_typeNohtml

TDQS

A3.7/5.0
Behavior3/5

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 transparently explains the alias resolution and forwarding behavior, but it does not mention what happens for invalid aliases, whether permissions are needed, or any side effects beyond posting the message. This is adequate for a simple wrapper but not richly transparent.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The primary action is front-loaded, and the follow-up sentence provides useful implementation detail about alias resolution and forwarding. Every sentence earns its place.

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

Completeness3/5

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

For a simple wrapper tool, the description provides a reasonable baseline: it states what it does and where it forwards. However, there is no output schema or annotations, and the description does not cover error behavior, response format, or content_type semantics, leaving some context missing for an agent.

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

Parameters3/5

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 compensate. It adds meaningful semantics for alias by explaining that it is a saved alias resolved into team_id and channel_id. Text is reasonably implied by 'post a message', but content_type is left completely unexplained, including its default 'html' and allowed values.

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

Purpose5/5

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

The description states a specific action and resource: posting a message to a Teams channel via a saved alias. It also clarifies the internal behavior by explaining that the alias resolves to team_id and channel_id and is forwarded to graph_teams_message, making the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies that this tool should be used when a saved alias is available, since it resolves the alias and forwards to graph_teams_message. However, it does not explicitly contrast this with graph_teams_message or state when an agent should choose one over the other; the usage guidance is left to inference.

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

graph_userA

Query Azure AD user profile details via Microsoft Graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

TDQS

A3.8/5.0
Behavior3/5

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. The verb 'Query' implies a read-only operation, which is useful, but the description does not mention required permissions, response format, or any limitations such as pagination or field availability.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It conveys the essential purpose in as few words as possible.

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

Completeness3/5

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

For a simple single-parameter read tool, the description is adequate but minimal. It lacks explicit mention of the input parameter in prose and does not describe what the returned profile details contain, which matters because there is no output schema to fill that gap.

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

Parameters2/5

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

The schema has one required parameter, 'email', with no description, and the tool description provides zero parameter guidance. The parameter name is self-explanatory enough to guess, but the description does not compensate for the 0% schema description coverage by explaining how the email is used or formatted.

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

Purpose5/5

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

The description clearly states a specific action ('Query'), a specific resource ('Azure AD user profile details'), and the access mechanism ('Microsoft Graph'). This distinguishes it from sibling Graph tools like graph_mail, graph_drive, and graph_teams_message, which target different resources.

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

Usage Guidelines4/5

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

The description provides clear context that this tool is for retrieving Azure AD user profile data, which makes the appropriate usage scenario reasonably inferable. However, it does not explicitly mention when not to use it or name alternatives, so it stops short of full guidance.

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

install_requirementsC

Install Python requirements for the workspace Spark environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
requirements_txtNo

TDQS

C2.6/5.0
Behavior2/5

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. It only says 'Install', which signals a mutation, but does not state whether packages are overwritten, whether permissions are required, whether the install is persistent within the Spark session, or what side effects or outputs to expect.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for its simple purpose, though it omits parameter and usage details that would make it more useful.

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

Completeness2/5

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

For a tool with two undocumented optional parameters, no annotations, no output schema, and a closely related sibling (install_wheel), the description is too thin. It gives no guidance on required inputs, preconditions, or expected behavior after invocation, so an agent would struggle to call it correctly in a real scenario.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain either parameter. An agent cannot infer that 'requirements_txt' likely holds the contents of a requirements.txt file or that 'workspace' selects the target environment. This is a significant gap since no structured descriptions exist to compensate.

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

Purpose4/5

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

The description states a clear verb ('Install') and resource ('Python requirements') with a target environment ('workspace Spark environment'). It is distinct enough from the sibling install_wheel by implying requirements.txt rather than .whl files, though it does not explicitly name that distinction.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus install_wheel, nor are prerequisites such as needing a configured workspace mentioned. The wording implies a workspace context but stops short of instructing the agent to set one first or explaining how install_requirements differs from other package installation tools.

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

install_wheelC

Install a wheel package into the workspace Spark environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
wheel_urlNo
workspaceNo

TDQS

C2.8/5.0
Behavior2/5

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, but it only says 'install' with no details about side effects, persistence, dependency handling, permissions, or failure modes. The mutating nature of the operation is implied but not elaborated.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action, resource, and destination with no filler or repetition. It is concise without sacrificing the core purpose.

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

Completeness2/5

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

For a tool with two parameters, no annotations, and no output schema, the description is too sparse to fully guide an agent. Missing details include how to form the wheel URL, what the workspace parameter means, whether installation is session-scoped or persistent, and what success or failure looks like.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no meaning for 'wheel_url' or 'workspace' beyond their names and defaults. 'wheel_url' is somewhat self-explanatory from its title, but 'workspace' remains ambiguous—whether it selects the target environment or requires a prior set_workspace call is not clarified.

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

Purpose4/5

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

The description states a specific verb ('Install'), a concrete resource ('a wheel package'), and a target environment ('workspace Spark environment'), making the tool's purpose clear. It is implicitly distinct from the sibling install_requirements because it specifically targets wheel packages, though it does not explicitly name that alternative.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like install_requirements, nor any mention of prerequisites, expected wheel URL formats, or whether a workspace must be set first. The usage context is only implied by the description and parameter names.

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

list_itemsC

List workspace items, optionally filtered by type or search term.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
typeNo
searchNo
workspaceNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does state the core read-only behavior and optional filters. However, it does not disclose pagination semantics, default result sizes, return shape, or how the workspace parameter affects results, leaving the agent with only 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.

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler or unnecessary wording. It is appropriately concise, though it sacrifices some useful context that would be needed for a higher completeness score.

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

Completeness2/5

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

Given no annotations, no output schema, five parameters, and many list_* siblings, the description is too thin for reliable selection and invocation. It does not explain what 'items' includes, how list_items relates to the specialized list tools, or how workspace selection works.

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

Parameters2/5

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 only clarifies 'type' and 'search term,' leaving 'top,' 'skip,' and 'workspace' unexplained; it also does not specify valid values for 'type.' This is only partial coverage of the five parameters.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'workspace items,' and it mentions optional filtering by type or search term. However, it does not explicitly distinguish this generic tool from the many sibling list_* tools like list_reports or list_tables, so it stops short of full clarity.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use list_items versus the numerous specific list_* sibling tools. There are no exclusions, prerequisites, or hints about which scenarios call for the generic tool instead of a specialized one.

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

list_lakehousesA

List all lakehouses in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace (optional)
    ctx: Context object containing client information

Returns:
    A string containing the list of lakehouses or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It states the return shape ('a string containing the list of lakehouses or an error message') and the read-only nature is implied by 'List.' It does not clarify behavior when workspace is null, or whether it uses the currently selected workspace, which leaves some ambiguity.

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

Conciseness4/5

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

The description is concise and front-loaded with the primary purpose. The Args/Returns structure is easy to scan, though the ctx line adds little value for the agent since ctx is not a schema parameter.

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

Completeness3/5

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

For a simple listing tool with one optional parameter and no output schema, the description covers the core operation and return type. It is incomplete on behavior when workspace is omitted and on how the result relates to the current context, but it is adequate for a low-complexity tool.

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

Parameters4/5

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

The input schema only defines workspace as a nullable string with a default of null. The description adds meaningful semantics by stating workspace can be a 'Name or ID' and is optional. This compensates well for the 0% schema description coverage, though the mention of ctx is not reflected in the schema.

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

Purpose4/5

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

The description uses a clear, specific verb and resource: 'List all lakehouses in a Fabric workspace.' This unambiguously identifies the operation and scope. It does not explicitly contrast it with sibling tools like list_warehouses or list_tables, so it stops short of a 5.

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

Usage Guidelines3/5

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

The intended use is implied: call this tool when you need to enumerate lakehouses in a workspace. However, it does not state when to prefer this over related tools or what happens when workspace is omitted. There is no exclusions or alternative guidance.

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

list_measuresB

List all DAX measures in a semantic model.

Args:
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    ctx: Context object containing client information

Returns:
    A list of measures with their definitions.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
workspaceNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does state that this is a listing operation and that the return value is a list of measures with definitions, which implies a read-only, non-destructive call. However, it does not discuss authentication, side effects, or behavior when no workspace/model 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.

Conciseness4/5

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

The description is short and front-loaded with the main purpose, followed by a clear Args/Returns structure. The 'ctx' line is arguably unnecessary noise since it is not an input schema parameter, but it does not meaningfully hurt readability.

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

Completeness3/5

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

For a simple list operation, the description covers the essential behavior and return value. The lack of an output schema and annotations raises the burden, and the description does not clarify how optional workspace/model relate to the current context or how this tool fits with measurement-related siblings.

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

Parameters3/5

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

Schema coverage is 0%, so the description must add parameter meaning. It does add 'Name or ID' and 'optional' for workspace and model, which goes beyond the schema's bare property names and null defaults. It stops short of explaining how the optional parameters interact with a default/current context, so it is adequate but not complete.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('all DAX measures in a semantic model'), so an agent knows exactly what the tool does. It does not explicitly differentiate itself from siblings like get_measure or list_semantic_models, which keeps it at 4 rather than 5.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool instead of get_measure, list_semantic_models, or get_model_schema. The optional workspace/model arguments are described, but there is no explanation of when they are needed or what happens if they are omitted.

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

list_notebooksA

List all notebooks in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace (optional)
    ctx: Context object containing client information
Returns:
    A string containing the list of notebooks or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does state the return type ('a string containing the list of notebooks or an error message'), implying a read-only operation. However, it does not describe default workspace behavior, pagination, output format, or potential failure modes beyond a generic error message.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose, followed by a compact Args/Returns breakdown. It avoids fluff, though including ctx in Args when it is not part of the exposed schema adds a small amount of unnecessary noise.

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

Completeness3/5

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

For a simple list tool with one optional parameter and no output schema, the description covers the main purpose and return behavior. The main gap is that it does not explain the semantics of omitting the workspace argument—whether it falls back to the current context or scans all workspaces—which is important for an agent to invoke the tool predictably.

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

Parameters4/5

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 does so by explaining that workspace is a 'Name or ID' and optional, which adds meaning beyond the raw schema's string/null type and default. The mention of ctx is slightly odd since it is not in the input schema, but it is a minor issue.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List all notebooks in a Fabric workspace.' This clearly identifies the tool's function and distinguishes it from sibling tools like list_reports, list_lakehouses, and list_workspaces.

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

Usage Guidelines3/5

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

The description provides clear context by scoping the action to a Fabric workspace and marking the workspace argument as optional. However, it does not explicitly state when to prefer this tool over alternatives such as list_items or other list_* siblings, nor does it explain what happens when workspace is omitted.

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

list_reportsC

List all reports in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace (optional)
    ctx: Context object containing client information
Returns:
    A string containing the list of reports or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it returns a list string or error, but it doesn't disclose whether it uses the current workspace context, how it behaves with no workspace, whether it requires permissions, or what the string format is. For a list tool, this is minimal.

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

Conciseness4/5

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

The description is concise and structured with Args/Returns sections. It front-loads the main purpose in the first sentence. The docstring format is conventional. It earns a 4 because it is brief and clear, though it repeats parameter names from the schema.

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

Completeness2/5

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

Given no annotations, no output schema, and only one optional parameter, the description is under-specified. It doesn't explain the relationship to the workspace context, how errors are returned, or whether the list is filtered. Also, sibling tools like set_workspace suggest context matters, but the description doesn't clarify this.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only says workspace is 'Name or ID of the workspace (optional)'. It doesn't add details about how workspace is resolved (e.g., if omitted, does it use the current context set by set_workspace?). This is a notable gap because the context object and optional workspace semantics are ambiguous.

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

Purpose4/5

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

The description clearly states the verb and resource: 'List all reports in a Fabric workspace.' It distinguishes the tool as a listing operation for reports. However, it doesn't explicitly differentiate from sibling tools like list_workspaces or list_lakehouses, though the resource is specific enough.

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

Usage Guidelines3/5

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

The description implies usage: call this to list reports in a workspace. It mentions the workspace parameter as optional, but it doesn't explain when to use this versus alternatives like get_report or report_export. No explicit exclusions or alternative routing are provided.

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

list_semantic_modelsA

List all semantic models in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace (optional)
    ctx: Context object containing client information

Returns:
    A string containing the list of semantic models or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral burden. It discloses that the return value is a string and that errors are returned as messages, and 'List' implies a read-only operation. However, it does not mention pagination, limits, side effects, or how the optional workspace is resolved.

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

Conciseness5/5

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

The main purpose is front-loaded in a single clear sentence, followed by a compact Args/Returns block. Every line earns its place and there is no filler or redundancy.

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

Completeness3/5

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

For a simple one-parameter listing tool, the description provides adequate purpose, arguments, and return behavior. However, it does not explain what happens when workspace is omitted, especially given sibling tools like set_workspace and clear_context that imply a current-workspace concept. This ambiguity is a clear gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics by stating that workspace accepts a name or ID and is optional, and it documents ctx as a context object. This goes well beyond the schema's bare nullable string property.

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

Purpose5/5

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

The description states a specific verb ('List'), a specific resource ('all semantic models'), and a scope ('in a Fabric workspace'). The 'all' qualifier also differentiates it from singular retrieval siblings like get_semantic_model.

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

Usage Guidelines3/5

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

The usage is implied by the imperative 'List all semantic models' — use it when you need an inventory of semantic models. However, it does not explicitly say when to prefer this over alternatives like get_semantic_model or get_model_schema, nor does it clarify behavior when workspace is omitted.

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

list_tablesD
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

list_teams_channel_aliasesA

List all saved Teams channel aliases.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. 'List all saved' makes the read-only, no-filter scope reasonably clear. It does not detail output format or edge cases, but the tool is simple enough that this is a minor gap.

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

Conciseness5/5

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

The description is one short sentence with no filler. It states the key facts immediately: the operation is 'List' and the target is 'all saved Teams channel aliases.'

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

Completeness4/5

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

For a zero-parameter, side-effect-free listing tool, the description is largely complete for selection and invocation. The only missing element is an explicit description of the return shape, but that is not critical for a simple list operation.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description reinforces that no filtering is possible by saying 'all saved,' which is sufficient since there is nothing else to document.

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

Purpose4/5

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 saved Teams channel aliases.' This clearly communicates the action and the object being operated on. It does not explicitly contrast with sibling tools, but the list/save/delete sibling names make the distinction easy.

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

Usage Guidelines3/5

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

Usage context is implied but not explicit: an agent can infer this tool is for retrieving previously saved Teams channel aliases, but there is no guidance on when to prefer it over graph_teams_message_alias or how it relates to save/delete aliases.

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 in a Fabric workspace.

Args:
    workspace: Name or ID of the workspace (optional)
    ctx: Context object containing client information

Returns:
    A string containing the list of warehouses or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the call returns a string containing the list or an error message, and that workspace is optional, but it does not explicitly confirm the operation is read-only or describe what happens when workspace is null.

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

Conciseness4/5

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

The description is short, front-loaded, and follows a clean Args/Returns structure. The first sentence states the core purpose immediately, and there is little wasted text, though the ctx line adds minimal agent-facing value.

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

Completeness3/5

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

For a simple optional-parameter list operation, the return type is disclosed and there is no output schema to rely on. The main gap is the meaning of omitting workspace, which is relevant for a correct first invocation given the set_workspace sibling tool.

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

Parameters4/5

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

The schema has no parameter descriptions (0% coverage), so the Args section is the only semantic source for parameters. It adds that workspace accepts a name or ID and is optional, and it mentions ctx; this is sufficient to construct a basic call, though the null-workspace behavior remains implicit.

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

Purpose5/5

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

The description opens with a specific verb-resource pair, "List all warehouses," and scopes it to "a Fabric workspace," which clearly distinguishes it from sibling tools like list_lakehouses, list_tables, create_warehouse, and set_warehouse. 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.

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus sibling list tools, nor does it explain when to provide or omit the optional workspace parameter. It also does not state whether omitting workspace falls back to the active context, so the agent must infer the intended invocation pattern.

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 available Fabric workspaces.

Args:
    ctx: Context object containing client information

Returns:
    A string containing the list of workspaces or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It implies read-only behavior through 'List' and discloses that it returns a string or an error message. However, it does not clarify the scope of 'available' workspaces, required permissions, or output formatting, leaving meaningful gaps.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, and the Returns line adds useful information. The 'ctx' line contributes little value for an MCP caller and feels somewhat unnecessary, but the overall structure is clean and readable.

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

Completeness3/5

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

For a zero-parameter listing tool, the description provides the basic purpose and return behavior, which is close to sufficient. However, absent annotations and an output schema, it could better explain what 'available' means and how this tool fits with workspace-related siblings like set_workspace.

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

Parameters4/5

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

The input schema is empty, so the 0-parameter baseline applies. The description mentions a 'ctx' argument, but it is not reflected in the schema and is described only generically as a context object. Since there are no actual agent-supplied parameters, the baseline of 4 is appropriate.

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

Purpose5/5

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

The description states 'List all available Fabric workspaces,' giving a specific verb and resource. This clearly distinguishes it from sibling tools like create_workspace and set_workspace. There is no ambiguity about what operation the tool performs.

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

Usage Guidelines2/5

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 set_workspace, create_workspace, or list_warehouses. Usage context must be inferred entirely from the tool name and sibling list, which is insufficient for an agent.

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

load_data_from_urlB

Load data from a URL into a delta table in a lakehouse via OneLake.

Args:
    url: The URL to download data from (CSV or Parquet supported).
    destination_table: The name of the table to load data into.
    workspace: Name or ID of the workspace (optional).
    lakehouse: Name or ID of the lakehouse (optional).
    warehouse: Name or ID of the warehouse (optional, uses SQL for warehouses).
    ctx: Context object containing client information.
Returns:
    A string confirming the data load or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
lakehouseNo
warehouseNo
workspaceNo
destination_tableYes

TDQS

B3.4/5.0
Behavior2/5

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 return shape ('a string confirming the data load or an error message') and supported formats, but omits the critical write semantics: whether destination_table is appended to, replaced, or required to not exist. It also does not state preconditions such as an established workspace/lakehouse context, auth requirements, or behavior on format mismatch.

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

Conciseness4/5

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

The description is a compact, well-structured docstring: a one-line summary front-loads the action, followed by a scannable Args list and a Returns line. Every line earns its place, though the ctx entry is arguably noise for user guidance since it is not part of the input schema.

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

Completeness3/5

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

For a tool with no annotations and no output schema, the description provides the essentials: purpose, every parameter, return value, and source format support. However, it omits behavior an agent needs to call it safely and correctly: what happens to existing data in destination_table (append vs. overwrite vs. error), whether the tool creates tables, and whether a prior set_workspace/set_lakehouse/set_warehouse context is required given those sibling tools exist.

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

Parameters4/5

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

Schema description coverage is 0%, and the description largely compensates: all 5 schema parameters are documented with meaning beyond their types. The url entry adds format constraints ('CSV or Parquet supported'), destination_table describes its role, and warehouse adds a notable nuance ('uses SQL for warehouses'). Minor deduction: the docstring also lists ctx, which is not an invokable schema parameter, and the entries are terse with no examples or constraints.

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

Purpose5/5

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

The opening line states a specific verb and resource: 'Load data from a URL into a delta table in a lakehouse via OneLake.' It names the source (URL), the destination (delta table), the mechanism (OneLake), and the supported formats (CSV or Parquet). This clearly distinguishes it from siblings like onelake_write, sql_query, or vacuum_delta.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no alternative sibling is named. The only contextual hint is the warehouse arg note ('uses SQL for warehouses'), which implies a warehouse-targeting mode but never states a condition that should route an agent to a different tool. The agent must infer appropriateness 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.

onelake_create_shortcutA
Create a OneLake shortcut from one lakehouse to another.

This allows you to reference data from a target lakehouse without duplicating it.
Perfect for medallion architectures where Dev/Test/Prod read from a central Bronze layer.

Args:
    lakehouse: Source lakehouse name or ID (where the shortcut will appear)
    shortcut_name: Name for the shortcut
    shortcut_path: Path in source where shortcut appears (e.g., "Tables", "Files/exports")
    target_workspace: Target workspace name or ID (containing the data)
    target_lakehouse: Target lakehouse name or ID (containing the data)
    target_path: Path in target to link to (e.g., "Tables/customers_raw", "Files/bronze")
    workspace: Source workspace name or ID (optional, uses context if not provided)
    conflict_policy: Action when shortcut exists (Abort, GenerateUniqueName, CreateOrOverwrite, OverwriteOnly)
    ctx: Context object

Returns:
    Dictionary with shortcut details including name, path, and target

Example:
    # Create shortcut from DEV silver lakehouse to central Bronze
    onelake_create_shortcut(
        workspace="DEV-Analytics",
        lakehouse="silver_dev",
        shortcut_name="bronze_customers",
        shortcut_path="Tables",
        target_workspace="RAW-Bronze-Central",
        target_lakehouse="bronze_central",
        target_path="Tables/customers_raw"
    )
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes
workspaceNo
target_pathYes
shortcut_nameYes
shortcut_pathYes
conflict_policyNoCreateOrOverwrite
target_lakehouseYes
target_workspaceYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of explaining side effects. It states that the shortcut references data without duplicating it, names the source and target locations, and documents conflict_policy behavior when a shortcut already exists. It does not discuss permissions or failure modes, but the core mutation behavior is transparent.

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

Conciseness5/5

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

The description is well-structured with a clear first sentence, a purpose statement, a compact args list, return description, and a concrete example. Every section adds useful information and there is no filler or redundant content.

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

Completeness5/5

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

For a tool with 8 parameters, no annotations, and no output schema, the description covers purpose, usage scenarios, parameter semantics, return value, and a complete invocation example. An agent has enough information to select and call the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully by explaining every parameter with plain-language meaning. It clarifies source vs. target semantics, provides path format examples, explains the optional workspace behavior, and enumerates conflict_policy values. This is far beyond the bare schema property names.

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

Purpose5/5

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

The description states a specific action: creating a OneLake shortcut from one lakehouse to another. It clearly distinguishes this from sibling tools like onelake_list_shortcuts and onelake_delete_shortcut by naming the exact resource and relationship being created.

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

Usage Guidelines4/5

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

The description gives concrete usage context, such as avoiding data duplication and supporting medallion architectures where Dev/Test/Prod read from a central Bronze layer. It does not explicitly contrast with alternatives like onelake_write, but the intended scenario is clear enough for an agent to decide when to use this tool.

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

onelake_delete_shortcutA
Delete a OneLake shortcut from a lakehouse.

Args:
    lakehouse: Lakehouse name or ID containing the shortcut
    shortcut_path: Path where shortcut exists (e.g., "Tables", "Files/exports")
    shortcut_name: Name of the shortcut to delete
    workspace: Workspace name or ID (optional, uses context if not provided)
    ctx: Context object

Returns:
    Dictionary with success status

Example:
    onelake_delete_shortcut(
        workspace="DEV-Analytics",
        lakehouse="silver_dev",
        shortcut_path="Tables",
        shortcut_name="bronze_customers"
    )
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes
workspaceNo
shortcut_nameYes
shortcut_pathYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It does disclose the return shape ('Dictionary with success status') and the workspace fallback ('uses context if not provided'), but it does not cover side effects such as irreversibility, whether the underlying data remains untouched, or failure behavior when the shortcut does not exist.

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

Conciseness5/5

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

The purpose is front-loaded, followed by a compact Args list and a single example. Each line earns its place, with no filler or unnecessary repetition.

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

Completeness4/5

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

For a simple four-parameter delete operation, the description provides enough to invoke the tool correctly: all parameter meanings, optional workspace fallback, return value, and an example. It stops short of warning about side effects and edge cases, but the core calling context is complete.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by explaining every relevant parameter: lakehouse name/ID, shortcut_path with examples, shortcut name, and optional workspace behavior. The example further clarifies how the parameters are used together.

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

Purpose5/5

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

The opening sentence uses a specific verb and resource: 'Delete a OneLake shortcut from a lakehouse.' This clearly identifies the operation and distinguishes it from sibling tools like onelake_create_shortcut and onelake_list_shortcuts.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention exclusions or compare with onelake_rm, onelake_create_shortcut, or onelake_list_shortcuts. The only usage context is the one-line purpose and an example.

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

onelake_list_shortcutsA
List all OneLake shortcuts in a lakehouse.

Args:
    lakehouse: Lakehouse name or ID
    workspace: Workspace name or ID (optional, uses context if not provided)
    ctx: Context object

Returns:
    Dictionary with list of shortcuts

Example:
    onelake_list_shortcuts(
        workspace="DEV-Analytics",
        lakehouse="silver_dev"
    )
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes
workspaceNo

TDQS

A3.5/5.0
Behavior3/5

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 does communicate that this is a listing operation and returns a dictionary, which implies a read-only behavior. It does not mention permissions, error cases, or how shortcuts are represented in the returned dictionary.

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

Conciseness4/5

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

The description is well-organized into a summary, args, returns, and example, with no unnecessary prose. It is compact and front-loaded. The 'ctx' line adds minor noise but does not significantly hurt clarity.

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

Completeness3/5

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

The tool is simple, and the description covers the main input parameters, the output type, and an example. However, with no output schema, 'Dictionary with list of shortcuts' is vague and does not explain the structure of the result, empty-result behavior, or possible errors. Given the absence of annotations, these are meaningful gaps.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it explains that lakehouse is a name or ID and that workspace is optional with context fallback. The example further clarifies real usage. The mention of 'ctx' is a slight inconsistency since ctx is not in the input schema, but the example omits it, reducing confusion.

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

Purpose4/5

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 all OneLake shortcuts in a lakehouse.' This is clear and unambiguous. It does not explicitly contrast with sibling tools like onelake_ls, but the 'shortcuts' entity makes the purpose understandable.

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

Usage Guidelines3/5

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

The primary use case is implied by the verb 'List' and the example invocation. It also usefully notes that workspace is optional and uses context when not provided, which helps an agent decide whether to pass it. However, it gives no explicit guidance about alternatives or when not to use this tool.

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

onelake_lsC

List files and folders within a OneLake lakehouse path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
lakehouseYes
workspaceNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral disclosure burden, but it only states the listing action. It does not mention recursion behavior, path defaulting, workspace or lakehouse requirements, permissions, or return format, leaving the agent to guess.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. It is appropriately concise for a straightforward list operation, even though other dimensions penalize the lack of supporting detail.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and three undocumented parameters, this description is not sufficient. An agent knows the tool lists files and folders but cannot reliably determine how to supply workspace/lakehouse/path or what the result structure looks like, especially given the large sibling toolset.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only clarifies that 'path' refers to a OneLake lakehouse path. It gives no meaning for the 'lakehouse' or 'workspace' parameters and no detail about default values or how the path is resolved.

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

Purpose4/5

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

The description uses the specific verb 'List' and resource 'files and folders within a OneLake lakehouse path,' which makes the core operation clear. It does not explicitly differentiate from sibling tools like onelake_list_shortcuts or list_lakehouses, so it stops short of 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.

Usage Guidelines2/5

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 onelake_read, onelake_list_shortcuts, or list_lakehouses. The description only states the action and gives no contextual triggers, exclusions, or preferred usage patterns.

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

onelake_readC

Read file contents from OneLake.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
lakehouseYes
workspaceNo

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description must disclose behavior itself. 'Read file contents' conveys that this is a non-mutating operation, but it does not state return format, file type handling, size limits, 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.

Conciseness4/5

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

The single sentence is concise and front-loaded, containing no fluff. It is appropriately short for a simple read operation, though it sacrifices informative content for brevity.

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

Completeness2/5

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

With no annotations, no output schema, and three parameters, an agent is left without information about what the read returns, how the workspace parameter affects behavior, or how failures are surfaced. The description is too thin to be fully self-sufficient.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the path, lakehouse, or workspace parameters. The parameter names are somewhat self-explanatory, but the tool description adds no semantic detail beyond the schema.

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

Purpose5/5

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

States a specific verb ('Read') and resource ('file contents from OneLake'), clearly distinguishing it from sibling operations like onelake_ls (listing), onelake_write (writing), and onelake_rm (deleting). The action and target are unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus its siblings. It neither names alternatives such as onelake_ls for listing or onelake_write for writing, nor states any conditions, prerequisites, or exclusions.

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

onelake_rmC

Delete a file or directory from OneLake.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
lakehouseYes
recursiveNo
workspaceNo

TDQS

C2.4/5.0
Behavior2/5

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, yet it only states the delete action. It does not disclose that deletion is likely permanent and irreversible, that removing a non-empty directory requires recursive=true, or what happens when the path does not exist. For a destructive tool, these are material gaps.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no wasted words, which is efficient. However, it is under-specified rather than genuinely concise: one sentence is insufficient for a destructive tool with four parameters and zero annotation support.

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

Completeness1/5

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, no output schema, and 0% schema description coverage, this description is far from complete. It omits recursive semantics, permanence, path formats, and workspace/lakehouse resolution behavior. An agent cannot safely invoke this tool based on this description alone.

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

Parameters1/5

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 four undocumented parameters, but it adds almost nothing. It does not explain path formats, how lakehouse/workspace resolve, or what the recursive flag does — arguably the most safety-critical parameter since deleting a directory without it will behave differently (or fail).

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

Purpose4/5

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

The description states a specific verb (Delete) and a specific resource (file or directory from OneLake), making the core operation unambiguous. It distinguishes at the operation level from the onelake_ls/read/write siblings, but does not explicitly differentiate from the closely related onelake_delete_shortcut, which is a similar destructive action on a different resource type.

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

Usage Guidelines2/5

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 onelake_delete_shortcut (shortcuts) or vacuum_delta (delta table cleanup). It also does not mention prerequisites like set_lakehouse/set_workspace or any conditions for when not 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.

onelake_writeC

Write text or base64 content to OneLake.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
encodingNoutf-8
is_base64No
lakehouseYes
overwriteNo
workspaceNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden, but it only says 'write'. It does not disclose that overwrite defaults to true, how encoding/base64 is handled, or whether workspace/lakehouse selection has 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.

Conciseness4/5

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

The description is a single compact sentence with no filler and is front-loaded with the action. It is efficient for its length, though it sacrifices needed detail for a 7-parameter tool.

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

Completeness2/5

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

Given 7 parameters, no schema descriptions, no annotations, and no output schema, this description is far from complete. An agent would not know the required target context, overwrite behavior, or parameter roles without opening the schema.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only hints at content encoding via 'text or base64'. It provides no meaning for required parameters like lakehouse and path, nor for overwrite, workspace, or encoding defaults.

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

Purpose4/5

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

The description states a specific action ('Write') and a clear resource ('OneLake'), and it identifies the two supported content forms (text or base64). This distinguishes it from sibling tools like onelake_read and onelake_rm, though it does not mention path/lakehouse context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as onelake_read or onelake_create_shortcut. The intended use is only implied by the verb 'Write' and the tool name.

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

optimize_deltaD
ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
lakehouseNo
workspaceNo
zorder_byNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

pipeline_logsD
ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNo
pipelineNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

pipeline_runD
ParametersJSON Schema
NameRequiredDescriptionDefault
pipelineNo
workspaceNo
parametersNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

pipeline_statusD
ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNo
pipelineNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

report_exportD
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNopdf
reportNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

report_params_listD
ParametersJSON Schema
NameRequiredDescriptionDefault
reportNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

resolve_itemC

Resolve an item name or ID to its canonical ID and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
workspaceYes
name_or_idYes

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description must carry behavioral disclosure. It only describes the high-level mapping and does not mention whether the operation is read-only, how ambiguity or missing items are handled, what metadata is returned, or whether permissions are required.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler words. It is concise and easy to scan, though the brevity contributes to the lack of detail captured in other dimensions.

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

Completeness2/5

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

With no annotations and no output schema, the description is not sufficiently complete. An agent cannot determine how workspace and type affect resolution, what valid input formats look like, or what the returned metadata actually contains.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate. It only clarifies the 'name_or_id' parameter; the required 'workspace' parameter and the optional 'type' parameter are not explained, leaving important call semantics unclear.

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

Purpose4/5

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

The description states a clear action ('resolve'), a clear target ('an item name or ID'), and a clear output ('canonical ID and metadata'). It is distinct from the sibling tools even though it does not explicitly name an alternative.

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

Usage Guidelines3/5

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

The intended use is implied: when an agent needs to convert a human-readable name or ID into a canonical ID and metadata. However, it gives no explicit guidance about prerequisites, when not to use it, or how it relates to similar tools such as list_items.

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

run_notebook_jobC

Submit a notebook job run with optional parameters and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
notebookNo
workspaceNo
parametersNo
configurationNo

TDQS

C2.7/5.0
Behavior2/5

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 only states that a job is submitted, but does not disclose whether execution is synchronous or asynchronous, whether a job ID is returned, what side effects occur, or what happens if the job fails or is submitted twice.

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

Conciseness4/5

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

The description is a single, focused sentence with no redundant wording. It front-loads the action and resource, but it could use the available space to add more useful guidance without becoming verbose.

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

Completeness2/5

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

Given the absence of annotations and output schema, a run-submission tool needs to explain what the caller receives after submission and how to track the job, e.g., via get_run_status. The description omits these important details, leaving the agent uncertain about return values and follow-up steps.

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

Parameters2/5

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 compensate, but it only mentions 'optional parameters and configuration' generically. It does not explain the meaning of notebook, workspace, parameters, or configuration fields, nor how they interact with the current workspace context.

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

Purpose4/5

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

The description uses a specific verb ('Submit') and resource ('a notebook job run'), making the core action clear. It is distinguishable from sibling tools like get_run_status and cancel_notebook_job because it initiates a run rather than inspecting or canceling one, though it does not explicitly call out that contrast.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus siblings such as get_run_status or cancel_notebook_job. It also does not mention any prerequisites like setting a workspace or notebook context before submitting a run.

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

save_teams_channel_aliasB

Create or update a named alias for a Teams channel (team_id + channel_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
aliasYes
team_idYes
channel_idYes

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden. It does disclose the upsert-like behavior ('Create or update'), but it does not mention permissions, overwrite semantics in detail, or what the tool returns, leaving important behavioral context undisclosed.

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

Conciseness5/5

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

One short sentence with no filler. It front-loads the action, names the object, and gives the required identity fields efficiently.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and no parameter descriptions, this is under-specified. An agent is left to infer alias naming rules, response behavior, and whether an existing alias is overwritten, so the description is not complete enough for fully confident invocation.

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

Parameters2/5

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 only restates the parameter roles: alias is the named alias, and team_id + channel_id identify the channel. It does not explain alias format, uniqueness, or the relationship between team and channel beyond what the parameter names already suggest.

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

Purpose5/5

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

The description states a specific action ('Create or update') and a clear resource ('a named alias for a Teams channel'), and even names the identifying parameters. This clearly distinguishes the tool from its siblings list_teams_channel_aliases and delete_teams_channel_alias.

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

Usage Guidelines3/5

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

The intended use is implied: call this tool when you want to create or update a channel alias. However, it does not explicitly say when not to use it or which sibling tool to use instead, such as listing or deleting aliases.

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

schedule_listD
ParametersJSON Schema
NameRequiredDescriptionDefault
itemNo
job_typeNoDefaultJob
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

schedule_setD
ParametersJSON Schema
NameRequiredDescriptionDefault
itemNo
job_typeNoDefaultJob
scheduleNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

semantic_model_refreshD
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
workspaceNo
refresh_typeNoFull

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

set_lakehouseA

Set the current lakehouse for the session.

Args:
    lakehouse: Name or ID of the lakehouse
    ctx: Context object containing client information

Returns:
    A string confirming the lakehouse has been set.
ParametersJSON Schema
NameRequiredDescriptionDefault
lakehouseYes

TDQS

A3.9/5.0
Behavior3/5

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 discloses that the operation is session-scoped and that a confirming string is returned, but it does not mention overwriting behavior, error conditions, or any permission requirements. This is adequate but minimal for a simple stateful setter.

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

Conciseness4/5

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

The description is compact and well-structured with a purpose statement, Args, and Returns sections. The main call to action is front-loaded, and there is little wasted text, though the undocumented 'ctx' parameter introduces slight noise.

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

Completeness4/5

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

For a simple one-parameter setter with no output schema, the description is reasonably complete: it explains what the tool does, what the parameter means, and what the return value is. It does not provide usage guidance or behavioral edge cases, but the low complexity keeps the missing information minor.

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

Parameters4/5

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

The input schema only defines 'lakehouse' as a string, and the description adds useful semantics by stating it accepts a 'Name or ID.' This fills a real gap at 0% schema description coverage. However, the description also lists 'ctx' as an argument, which is not present in the input schema and adds minor confusion.

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

Purpose5/5

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

The description states a clear verb and resource: 'Set the current lakehouse for the session.' This distinguishes the tool from sibling setters like set_workspace, set_warehouse, and set_table by explicitly naming the lakehouse as the target.

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

Usage Guidelines3/5

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

The phrase 'for the session' implies a stateful context and suggests this tool is used when the agent needs a default lakehouse for subsequent operations. However, it does not explicitly state when to use this tool versus alternatives like set_workspace or set_warehouse, and provides no exclusions.

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

set_permissionsA

Add a workspace role assignment (Admin, Member, Contributor, Viewer).

Note: Fabric REST API supports workspace-level roles, not item-level permissions.

Args:
    workspace: Workspace name or ID
    principal_id: User, group, or service principal ID (UUID)
    principal_type: "User", "Group", or "ServicePrincipal"
    role: "Admin", "Member", "Contributor", or "Viewer"
ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoViewer
workspaceYes
principal_idYes
principal_typeNoUser

TDQS

A3.8/5.0
Behavior2/5

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

With zero annotations provided, the description carries the full burden of behavioral disclosure, and it only discloses scope. It does not state whether the assignment replaces or augments existing roles, whether admin/owner authorization is required, whether the operation is reversible, or what happens when the principal already holds a role. For a security-sensitive mutation tool this is a meaningful gap.

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

Conciseness5/5

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

The one-sentence purpose summary is front-loaded and immediately unambiguous. The API scoping note earns its place by resolving the ambiguity of the generic tool name, and the Args section is justified given 0% schema coverage. No wasted words.

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

Completeness3/5

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

The description fully covers purpose and parameters, which is sufficient for a basic call. But as a mutation tool with no annotations and no output schema, it omits expected context: the effect on pre-existing assignments, required authorization level for the caller, and any irreversibility or constraints. The nullable workspace field and its meaning also go unexplained.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates: the Args section documents all four parameters with data types and valid values — workspace (name or ID), principal_id (UUID), principal_type ('User', 'Group', 'ServicePrincipal'), and role ('Admin', 'Member', 'Contributor', 'Viewer'). This adds the enum-like vocabulary and type constraints the schema itself omits.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Add a workspace role assignment' followed by the exact role vocabulary (Admin, Member, Contributor, Viewer). The follow-up note explicitly scopes the tool to workspace-level roles and excludes item-level permissions, which differentiates it from a generic 'set_permissions' name and from the sibling get_permissions read counterpart.

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

Usage Guidelines3/5

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

The note 'Fabric REST API supports workspace-level roles, not item-level permissions' gives an implied exclusion — the agent can infer this tool is wrong for item-level permission changes. However, no alternative tool is named and no explicit when-to-use condition is stated, so the routing guidance is left to inference.

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

set_tableD
ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

set_warehouseB

Set the current warehouse for the session.

Args:
    warehouse: Name or ID of the warehouse
    ctx: Context object containing client information

Returns:
    A string confirming the warehouse has been set.
ParametersJSON Schema
NameRequiredDescriptionDefault
warehouseYes

TDQS

B3.2/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It does mention that the warehouse is 'current' and 'for the session,' indicating a stateful change, and it states the return is a confirmation string. However, it omits session lifetime, overwrite behavior, prerequisites such as the warehouse needing to exist, and permission requirements.

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

Conciseness4/5

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

The core purpose is front-loaded in one clear sentence, followed by compact Args/Returns sections. The ctx line is unnecessary and potentially confusing, but overall the description is appropriately short and structured.

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

Completeness3/5

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

For a simple one-parameter setter with no output schema, the description covers the purpose, parameter meaning, and return value. It is adequate for basic invocation, but it lacks usage guidance relative to sibling tools and includes an inconsistent ctx parameter, leaving some gaps.

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

Parameters3/5

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

The description adds meaning by saying 'warehouse' accepts a Name or ID, which is more informative than the schema's plain string type. However, it also lists a 'ctx' argument that is not present in the input schema, which could mislead an agent into passing an unsupported parameter.

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

Purpose4/5

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

The description states a clear verb-object-resource: 'Set the current warehouse for the session,' which identifies the operation and scope. It is distinguishable from create/list warehouse tools by the action and from other set_* tools by the resource name, though it does not explicitly contrast with them.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus set_workspace, set_lakehouse, set_table, or list_warehouses. The session-setting context is implied but no exclusions or alternative tool suggestions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_workspaceB

Set the current workspace for the session.

Args:
    workspace: Name or ID of the workspace
    ctx: Context object containing client information
Returns:
    A string confirming the workspace has been set.
ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does add useful context: the operation sets session state and returns a confirmation string. However, it does not disclose whether the workspace must already exist, how this affects subsequent tool calls, or whether the change is persistent across sessions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the key purpose, followed by compact Args and Returns sections. The ctx line is slightly extraneous since it is absent from the schema, but overall the structure is organized and free of unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 the core purpose, parameter meaning, and return value. Gaps remain: there is no usage guidance, no mention of validation behavior, and no indication of what 'current workspace' affects. For a simple setter with no annotations and no output schema, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides the property name 'workspace' with no description, so the description's clarification that it accepts 'Name or ID' adds meaningful semantics. The extra 'ctx' argument is not present in the input schema and could be confusing, but the primary parameter is adequately explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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: 'Set the current workspace for the session.' This distinguishes it from sibling tools like set_warehouse and set_lakehouse because the target resource is explicitly named. It does not explicitly differentiate from list_workspaces or create_workspace, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as list_workspaces, create_workspace, or other set_* tools. The phrase 'for the session' implies a stateful selection, but no conditions, prerequisites, or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sql_explainB

Retrieve an estimated execution plan for a query.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
queryYes
lakehouseNo
warehouseNo
workspaceNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It communicates that the operation is read-only in nature ('Retrieve') and that the result is an estimated plan, suggesting the query is not actually executed. However, it does not state whether execution occurs, what the plan output looks like, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler. It front-loads the core action and result, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 5-parameter tool with no output schema and no annotations, yet the description only explains the query input. The optional context parameters and the structure of the returned execution plan are unexplained, so the description is not complete enough for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to compensate by explaining the optional parameters. It only reinforces that 'query' is the main input; the purpose and effect of type, lakehouse, warehouse, and workspace remain entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Retrieve'), a specific resource ('estimated execution plan'), and a clear object ('a query'). It distinguishes sql_explain from sibling tools like sql_query and sql_export by indicating this tool returns a plan rather than executing a query or exporting results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as sql_query or analyze_dax_query. No conditions, exclusions, or preferred scenarios are provided, leaving the agent to infer when an estimated execution plan is wanted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sql_exportC

Export query results to OneLake as CSV or Parquet.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
queryYes
lakehouseNo
overwriteNo
warehouseNo
workspaceNo
file_formatNocsv
target_pathYes
export_lakehouseNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, but it only states the basic action. It fails to disclose that overwrite defaults to true, that existing targets may be replaced, or how workspace, lakehouse, and warehouse context is resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise and front-loaded with the action and destination. It is efficient, though it sacrifices enough detail that the length is not fully appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given nine parameters, no annotations, and no output schema, the description is too sparse to fully support correct invocation. An agent is not told how to specify destination context, what overwrite does by default, or what happens after the export completes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaningful detail for the nine parameters. It only hints at file format, leaving query, target_path, overwrite, workspace, lakehouse, warehouse, export_lakehouse, and type unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it exports query results to OneLake and specifies CSV or Parquet formats. The core action is distinct from tools like sql_query or report_export, though it does not explicitly contrast itself with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 sql_query, onelake_write, or report_export. It does not mention prerequisites, context requirements, or cases where another tool should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sql_queryC

Run a SQL query against a lakehouse or warehouse endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
queryYes
max_rowsNo
lakehouseNo
warehouseNo
workspaceNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the SQL query is read-only, whether it can mutate data, what permissions are needed, what side effects may occur, or what the result format looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core action and target resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, no annotations, no output schema, and minimal description, the tool definition leaves important gaps: parameter meaning, endpoint selection, side effects, limits, and expected result are all undocumented. This is inadequate for an agent to call the tool correctly in many realistic scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 gives some meaning to the lakehouse and warehouse parameters by naming the endpoint types, but it leaves the type, max_rows, workspace, and endpoint-selection semantics unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Run a SQL query against a lakehouse or warehouse endpoint.' It clearly identifies what the tool does. However, it does not explicitly differentiate from similar siblings like sql_explain or table_preview, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 sql_explain, sql_export, or table_preview. It does not mention exclusions, prerequisites, or when a different tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

table_previewD
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tableNo
lakehouseNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

table_schemaD
ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
lakehouseNo
workspaceNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_measureA

Update an existing DAX measure in a semantic model.

Args:
    measure_name: Current name of the measure to update
    workspace: Name or ID of the workspace (optional)
    model: Name or ID of the semantic model (optional)
    dax_expression: New DAX formula (optional)
    format_string: New display format string (optional)
    description: New description (optional)
    is_hidden: New hidden status (optional)
    new_name: New name for the measure (optional)
    ctx: Context object containing client information

Returns:
    A dictionary containing success status and the updated measure details.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
new_nameNo
is_hiddenNo
workspaceNo
descriptionNo
measure_nameYes
format_stringNo
dax_expressionNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does disclose that this is a mutating operation, enumerates which fields are affected, and states the return shape ('a dictionary containing success status and the updated measure details'). However, it omits error behavior when measure_name is not found, permission requirements, and whether updates are atomic or partial, which matters for a mutation 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the returns line is useful, but the bulk of the description is a parameter enumeration that partially duplicates the schema's optional/type structure. The parameter list is justified given 0% schema coverage, yet the overall text is longer than needed and the redundant 'optional' markers could have been trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no annotations and no output schema, the description covers parameter meanings and the return value adequately. But it is incomplete: no failure modes, no prerequisites (e.g., must the semantic model be set?), no guidance on partial updates, and no explicit routing between this and create_measure/delete_measure. Workable, but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 schema parameter gets a semantic gloss ('dax_expression: New DAX formula', 'format_string: New display format string', 'is_hidden: New hidden status'), adding meaning beyond bare types and titles. It loses a point because the explanations are terse one-liners and 'ctx' is documented in the description but absent from the schema, creating a minor inconsistency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence, 'Update an existing DAX measure in a semantic model,' names a specific verb (update) and resource (DAX measure), immediately distinguishing it from siblings like create_measure, delete_measure, get_measure, and list_measures. An agent can tell what this tool does without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'existing' implicitly signals this tool is for modifying measures that already exist, which implies it should not be used to create new ones. However, the description never explicitly names alternatives or states when-not-to-use it, so an agent must infer the boundary against create_measure and delete_measure from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_notebook_cellA

Update a specific cell in a notebook.

Args:
    workspace: Name or ID of the workspace
    notebook_id: ID or name of the notebook
    cell_index: Index of the cell to update (0-based)
    cell_content: New content for the cell
    cell_type: Type of cell ('code' or 'markdown')
    ctx: Context object containing client information
Returns:
    A string confirming the update or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
cell_typeNocode
workspaceYes
cell_indexYes
notebook_idYes
cell_contentYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. It states the operation returns a confirmation string or error, but it does not disclose that this is an in-place mutation, whether existing content is overwritten, what happens on invalid cell_index, or any permission/context requirements. For a mutating tool this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, followed by a structured Args/Returns list. Every line serves a purpose and there is no filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity tool with no annotations and no output schema, the description covers the main parameters and return type, which is enough for a basic call. However, it omits behavioral details like default cell_type handling, overwrite semantics, and error conditions, so an agent may not fully understand side effects before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates well by explaining key semantics beyond the schema: workspace/notebook_id accept name or ID, cell_index is 0-based, cell_content is the new content, and cell_type has allowed values 'code' or 'markdown'. This adds real meaning beyond the bare schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear, specific statement: 'Update a specific cell in a notebook.' This identifies the verb, the resource, and the granularity (a specific cell), which distinguishes it from create/get/delete notebook tools. It is not a tautology and contains no misleading language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this tool updates an existing cell rather than creating a notebook or reading its content. However, the description provides no explicit when-to-use guidance or mention of alternatives among the many notebook-related siblings, such as get_notebook_content or create_notebook.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vacuum_deltaD
ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
lakehouseNo
workspaceNo
retain_hoursNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_fabric_codeC

Validate PySpark code for Microsoft Fabric compatibility and performance.

Args:
    code: PySpark code to validate for Fabric compatibility
    ctx: Context object containing client information
Returns:
    A string containing detailed validation results and Fabric-specific recommendations.
ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It states that a string of validation results is returned, but it does not disclose whether the code is actually executed, whether this is static analysis, or what side effects (if any) occur. The mention of a ctx argument also suggests client context is involved without clarifying its role.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The docstring structure is compact and front-loaded with the core purpose. However, the ctx line is unnecessary and inaccurate, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-string-parameter validation tool, the description provides the basic input and output shape. It is minimally sufficient, but it lacks details about execution behavior, when to choose this over validate_pyspark_code, and any safety or timeout considerations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should compensate, but it only restates that 'code' is PySpark code to be validated. More importantly, it documents a 'ctx' argument that is absent from the input schema, which is misleading. No format, constraints, or examples are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Validate'), the resource ('PySpark code'), and the context ('Microsoft Fabric compatibility and performance'). It is specific enough to be useful, though it does not explicitly contrast with the sibling validate_pyspark_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool instead of alternatives. Given the sibling validate_pyspark_code exists and is nearly identically named, this omission is costly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_pyspark_codeB

Validate PySpark code for syntax and best practices.

Args:
    code: PySpark code to validate
    ctx: Context object containing client information
Returns:
    A string containing validation results and suggestions.
ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It states that the tool validates PySpark code and returns a string of results and suggestions, which is useful. However, it does not disclose whether the code is actually executed, whether any side effects occur, or any permission requirements, so the behavioral picture is only partially painted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose, followed by a compact Args/Returns structure. It wastes few words, though the inclusion of the nonexistent 'ctx' parameter is a minor structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter validation tool, the description is nearly sufficient: it names the input and the return value. It lacks comparison with sibling tools and contains the misleading 'ctx' reference, so it is adequate but not fully complete for selecting and invoking the tool with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 add meaning for 'code' as 'PySpark code to validate', but it also documents a 'ctx' argument that is not present in the input schema. This mismatch could confuse an agent into passing or expecting an unsupported parameter, undermining the semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Validate PySpark code for syntax and best practices.' It clearly communicates the tool's function and is distinguishable from generation tools like generate_pyspark_code, though it does not explicitly differentiate from the closely related sibling validate_fabric_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line implies the intended use case—when you have PySpark code that needs syntax and best-practice validation. However, it gives no explicit guidance about when not to use this tool or how to choose between this and validate_fabric_code, leaving the decision partly to inference.

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.

  1. 83 tool updatesv0.1.0
    • First observedanalyze_dax_query
    • First observedanalyze_notebook_performance
    • First observedcancel_notebook_job
    • First observedclear_context
    • First observedcluster_info
    • First observedcreate_data_pipeline
    • First observedcreate_fabric_notebook
    • First observedcreate_lakehouse
    • First observedcreate_measure
    • First observedcreate_notebook
    • First observedcreate_pyspark_notebook
    • First observedcreate_warehouse
    • First observedcreate_workspace
    • First observeddataflow_refresh
    • First observeddax_query
    • First observeddelete_measure
    • First observeddelete_teams_channel_alias
    • First observeddescribe_history
    • First observedgenerate_fabric_code
    • First observedgenerate_pyspark_code
    • First observedget_all_lakehouse_schemas
    • First observedget_lakehouse_table_schema
    • First observedget_measure
    • First observedget_model_schema
    • First observedget_notebook_content
    • First observedget_permissions
    • First observedget_pipeline_definition
    • First observedget_report
    • First observedget_run_status
    • First observedget_semantic_model
    • First observedget_sql_endpoint
    • First observedgraph_drive
    • First observedgraph_mail
    • First observedgraph_teams_message
    • First observedgraph_teams_message_alias
    • First observedgraph_user
    • First observedinstall_requirements
    • First observedinstall_wheel
    • First observedlist_items
    • First observedlist_lakehouses
    • First observedlist_measures
    • First observedlist_notebooks
    • First observedlist_reports
    • First observedlist_semantic_models
    • First observedlist_tables
    • First observedlist_teams_channel_aliases
    • First observedlist_warehouses
    • First observedlist_workspaces
    • First observedload_data_from_url
    • First observedonelake_create_shortcut
    • First observedonelake_delete_shortcut
    • First observedonelake_list_shortcuts
    • First observedonelake_ls
    • First observedonelake_read
    • First observedonelake_rm
    • First observedonelake_write
    • First observedoptimize_delta
    • First observedpipeline_logs
    • First observedpipeline_run
    • First observedpipeline_status
    • First observedreport_export
    • First observedreport_params_list
    • First observedresolve_item
    • First observedrun_notebook_job
    • First observedsave_teams_channel_alias
    • First observedschedule_list
    • First observedschedule_set
    • First observedsemantic_model_refresh
    • First observedset_lakehouse
    • First observedset_permissions
    • First observedset_table
    • First observedset_warehouse
    • First observedset_workspace
    • First observedsql_explain
    • First observedsql_export
    • First observedsql_query
    • First observedtable_preview
    • First observedtable_schema
    • First observedupdate_measure
    • First observedupdate_notebook_cell
    • First observedvacuum_delta
    • First observedvalidate_fabric_code
    • First observedvalidate_pyspark_code

TDQS

C2.1/5.0

Scored across 83 tools

Disambiguation2/5

Several tools have overlapping purposes, such as create_notebook, create_pyspark_notebook, and create_fabric_notebook, or generate_pyspark_code vs generate_fabric_code. dax_query and analyze_dax_query, as well as table_schema and get_lakehouse_table_schema, also blur boundaries. Multiple empty descriptions like vacuum_delta and set_table make selection even more ambiguous.

Naming Consistency3/5

Most tools follow a readable snake_case pattern with a rough verb_noun structure like list_*, get_*, create_*, update_*, and delete_*. However, there are notable deviations such as onelake_ls, pipeline_run/status/logs, table_preview, and describe_history. The naming is generally predictable within subgroups but inconsistent across the full set.

Tool Count1/5

With 83 tools, this server is far beyond a manageable scope for agent tool selection and exceeds the 50+ extreme threshold. Even though Microsoft Fabric is a broad platform, consolidating this many operations into one MCP server creates significant cognitive overhead. This would be better split into focused servers by domain.

Completeness2/5

The tool surface covers many Fabric areas including workspaces, lakehouses, warehouses, notebooks, semantic models, pipelines, OneLake, SQL, and Graph integrations. However, CRUD coverage is incomplete: warehouses and lakehouses lack update/delete, reports lack create/delete, and pipelines lack list/update/delete. These gaps create dead ends for common lifecycle workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Python-based MCP server that enables interaction with Microsoft Fabric APIs for managing workspaces, lakehouses, warehouses, and tables through natural language.
    16
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    The Fabric-Analytics-MCP server enables AI agents to interact directly with Microsoft Fabric using natural language. It transforms complex data engineering tasks—such as workspace management, data exploration, and job execution—into intuitive, conversational workflows for LLMs like Claude or GitHub
    17 npm
    109
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for Microsoft Fabric that enables AI agents to query and analyze Lakehouse and Eventhouse data, and manage Eventstreams, using natural language through the MCP interface.
    MIT