superbi-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@superbi-mcpopen Sales.pbix and rename Total to Total Sales everywhere"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Super BI MCP
An MCP server that gives AI agents full local Power BI authoring - the semantic model, the report, and Power Query M - by editing .pbix and PBIP/PBIR files directly. 490 tools, backed by ~1,800 automated tests.
Point Claude (or any MCP client) at it and the agent can build a model, write the DAX, lay out the report pages and visuals, transform the Power Query, lint and auto-fix best-practice violations, prove the RLS actually filters, rename a column across the model and every report binding in one atomic call, screenshot the rendered result out of a running Power BI Desktop, evaluate DAX and read table rows out of a closed .pbix with no Fabric, edit a closed .pbit template's model with no Desktop at all, and hand you back a finished .pbix - all on your machine.
Why this instead of the other Power BI MCP servers
Super BI MCP | Microsoft Power BI Modeling MCP + agent skills | Community servers | |
Semantic model authoring (TOM) | Yes, with write transactions + rollback | Yes | Partial |
Report authoring (pages, visuals, filters, bookmarks) | Yes - legacy Layout and PBIR, deterministic tools | Skill-guided raw JSON editing by the LLM (separate skill pack) | Report-only or preview |
Direct | Yes | No - PBIP files only | Rare |
Power Query M authoring | Yes - 60+ transform/generator tools | Analyze/refactor only | Rare |
Propagating renames (model rename rewrites DAX, M, and every report binding, atomically) | Yes | No | One server, PBIP-only |
Model-to-report cross-analysis (usage, unused fields incl. conditional-formatting bindings, broken-reference repair) | Yes | No | Partial |
RLS execution testing (run any query as any role, per-role matrix) | Yes | No | Partial |
DAX benchmark + Analysis Services trace (FE/SE split, cache hits) | Yes | Benchmark yes | Partial |
Offline DAX linter (incl. catching hallucinated function names before they hit the engine) | Yes | No | One server |
Visual formatting | Deterministic property registry for 52 visual types, validated against the theme schema | n/a | Raw JSON edits |
Best Practice Analyzer | 89 rules, 28 with automatic fixes, Tabular Editor ruleset import | Loose | Rare |
Desktop feedback loop (page screenshots + hot-reload from a running Desktop) | Yes - via the Desktop Bridge | Yes - same bridge, separate CLI | No |
Layout, star-schema, theme-compliance, naming and file-integrity audits | Yes | No | Partial |
DAX generators (time-intelligence, ranking, segmentation, calc groups, dynamic RLS, custom calendars) | Yes, live or straight to TMDL offline | n/a | Partial |
Works offline, no Fabric account | Yes | Yes (local mode) | Varies |
Ships as | One integrated server | A server + a skills pack + two CLIs | Single-purpose servers |
The short version: Microsoft's official server stops at the semantic model, and its report story is a separate skill pack that has the LLM hand-write layout JSON. This is one server that authors the whole artifact - model, report, and Power Query - with deterministic, validated tools, treats model and report as one cross-referenced thing (renames propagate, broken bindings are found and fixed, unused fields are provable), and works on the .pbix files you actually have, not just PBIP folders.
Related MCP server: PBIXRay MCP Server
Requirements
Windows x64 (the engine drives the Analysis Services client libraries and, for live-model work, Power BI Desktop)
Power BI Desktop - needed for live model editing, bulk refresh, bake, and the engine-backed offline
.pbixtools; report-layer and file-level tools work without itNode.js 16+ to install via
npx(below), or the .NET 8 SDK to build from source
Install
One command (recommended) - no .NET SDK needed. Add this to your MCP client's config (Claude Code / Claude Desktop .mcp.json, Cursor, etc.):
{
"mcpServers": {
"super-bi": {
"command": "npx",
"args": ["-y", "powerbi-pbix-mcp"]
}
}
}The first launch downloads the self-contained engine SuperBiMcp.exe (~109 MB) from the latest release, verifies its SHA-256, and caches it under ~/.powerbi-pbix-mcp/; later launches reuse the cache. Set SUPERBI_MCP_EXE to an existing SuperBiMcp.exe to skip the download.
Prefer a plain binary? Download SuperBiMcp-win-x64.zip from the release, extract, and point your client's command straight at SuperBiMcp.exe.
Build from source (needs the .NET 8 SDK):
git clone https://github.com/cyphonica/powerbi-pbix-mcp
cd powerbi-pbix-mcp
dotnet build src/SuperBiMcp.csproj -c Releasethen register the built DLL with "command": "dotnet", "args": ["<absolute path>/src/bin/Release/net8.0/SuperBiMcp.dll"].
Then ask your agent to open a .pbix and get to work. docs/automation-capabilities/GENERATED-TOOL-INDEX.md lists every tool; regenerate it any time with SuperBiMcp capability-map.
CLI modes
The same binary is also a headless factory:
Command | What it does |
| Headless report build from a declarative manifest (single file or batch/glob) |
| Bulk-refresh |
| In-memory model build to a complete PBIP (TMDL) - no Desktop needed |
| Deploy + refresh a scaffolded model and produce the populated binary DataModel |
| Turn a solution spec + sample data into a starter |
| CI integrity gate over two model snapshots |
| Docs drift gate - fails when the committed tool index no longer matches the code |
| Inspect the durable job queue used to serialise heavy Desktop work |
| Dump the 300 built-in starting-point templates |
Testing
dotnet test tests/SuperBiMcp.Tests/SuperBiMcp.Tests.csproj -c ReleaseA handful of live-connector smoke tests skip unless you provide credentials via DAXTEST_* environment variables. Set SUPERBI_TEST_SCRATCH to move test scratch space off your system drive.
Environment variables
Variable | Purpose |
|
|
| Scratch root for the test suite (defaults to the system temp dir) |
| Command template that turns a refreshed PBIP into a populated |
| Analysis Services instance for |
| Power BI Service / XMLA connectivity for the service-side tools |
License
Source-available under the Functional Source License, FSL-1.1-ALv2 (see LICENSE.md).
Use it freely for anything internal, personal, educational, or for client/consulting work. You may not offer it, or a product substantially built on it, as a competing commercial product or hosted service. Each release automatically becomes Apache 2.0 two years after publication.
This is a curated public mirror of a private development tree; history starts at the first public release and updates land as versioned drops.
Acknowledgements
See NOTICE.md for bundled third-party assets and rule-set attributions.
Available Tools
490 toolsadd_abc_classificationA
Generate ABC (Pareto) classification: a dynamic class measure plus a calculated class table. aThreshold / bThreshold are cumulative-share cut-offs (e.g. 0.7 and 0.9); the rest fall into C.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | entity key column as Table[Column] | |
| sessionId | Yes | ||
| aThreshold | No | A cumulative-share threshold (default 0.7) | |
| bThreshold | No | B cumulative-share threshold (default 0.9) | |
| entityTable | Yes | entity / home table | |
| valueMeasure | Yes | value measure to Pareto on, e.g. Total Sales | |
| classTableName | No | name for the class table (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool generates a dynamic measure and a calculated class table, but it does not mention whether this modifies the model, overwrites existing objects, requires specific permissions, or has any side effects. For a mutation-type tool without an output schema, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every clause earns its place. It concisely explains the output and threshold semantics without any filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It mentions the generated artifacts but does not describe return behavior, default naming, prerequisites (e.g., numeric value measure, existing entity table), or potential conflicts. This leaves substantial ambiguity for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, which sets a baseline of 3. The description adds meaningful semantics for aThreshold/bThreshold by explaining they are cumulative-share cut-offs and that the rest fall into C, which is not fully explicit in the schema. This helps the agent understand the classification logic beyond mere parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb 'Generate' and identifies the resource 'ABC (Pareto) classification'. It further specifies the tangible outputs (a dynamic class measure plus a calculated class table), which clearly distinguishes it from generic add_* tools like add_measure or add_calculated_table. This is not a tautology and provides concrete purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for ABC/Pareto analysis by explaining the threshold cut-offs, but it does not explicitly state when to prefer this tool over alternatives such as add_dynamic_segmentation or add_measure. No when-not scenarios or alternative tool references are provided, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_action_buttonA
Add a button bound to a BOOKMARK (the view-switch pattern): clicking it applies the bookmark (e.g. swap which visuals show). Writes the exact visualLink {type='Bookmark', bookmark=} shape the live product uses, plus the button label. bookmarkName = a bookmark from list_bookmarks/add_bookmark. Returns the new visual id.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| page | Yes | page name or displayName to place the button on | |
| text | Yes | button label | |
| width | No | ||
| height | No | ||
| bookmarkName | Yes | the bookmark name the button applies | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the written payload (exact visualLink shape), the button label, and the return value, and notes the prerequisite that bookmarkName must come from list_bookmarks/add_bookmark. It doesn't discuss error handling or permissions, but for a non-destructive add operation this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense: every clause adds value—behavior, payload construction, parameter source, and return type. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (8 params, no output schema), the description covers the essential non-obvious details: how the button links to a bookmark, the exact visualLink shape, and the returned id. It doesn't explain the session/positioning params, but those have defaults or are conventional, so the overall tool is usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (38%), mostly for page/text/bookmarkName. The description compensates for the key parameter by explaining bookmarkName's origin and purpose, and for text by referencing the label. However, the positioning and sizing parameters (x, y, width, height) and reportSessionId receive no description-level semantics beyond the schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Add a button bound to a BOOKMARK') and immediately distinguishes itself from generic button tools like add_button/add_nav_button by specifying the bookmark-triggered view-switch pattern. It also clarifies the behavioral effect (clicking applies the bookmark) and the return value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the intended use case (view-switch pattern via a bookmark) and points to list_bookmarks/add_bookmark as the source for bookmarkName, implying a prerequisite. However, it doesn't explicitly state when not to use it (e.g., for page navigation use add_nav_button), leaving a small gap in exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_advanced_filterA
Add an ADVANCED multi-condition filter (the And/Or advanced filter card) at a scope=visual|page|report: up to two conditions on the same field joined by And or Or. conditions = JSON array of {op,value} where op=gt|gte|lt|lte|eq|ne|isblank|isnotblank|contains|startswith. combine=and|or. fieldKind=column|measure, valueType=int|decimal|string. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page (scope=visual|page) | |
| field | Yes | the field | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the field | |
| visual | No | visual (scope=visual) | |
| combine | No | and | or | and |
| fieldKind | No | column | measure | column |
| valueType | No | int|decimal|string | string |
| conditions | Yes | JSON array of {op,value} (1-2 conditions) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the structure of conditions, combine operator, fieldKind, and valueType, which adds useful context beyond the schema. However, it does not disclose side effects (e.g., whether existing filters are replaced, whether the filter is immediately applied, or any validation behavior for invalid inputs). This is typical for a mutation tool but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the core purpose and then efficiently lists the key parameter semantics. Every clause adds value, with no redundant or filler content. It avoids repeating schema information and focuses on the most actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and a nested JSON structure, the description covers the essential usage: the condition format, allowed operators, combine logic, fieldKind, valueType, and scope-specific parameter requirements. It leaves a couple of minor gaps (e.g., what to pass for report scope, behavior when more than two conditions are provided) but is largely complete given the schema's rich parameter descriptions. The lack of an output schema means return behavior is not addressed, but the core usage is well documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (90%), but the description adds significant meaning beyond the schema: it enumerates the allowed operators (gt|gte|lt|lte|eq|ne|isblank|isnotblank|contains|startswith), clarifies the combine option (and|or), and explains the scope-to-parameter mapping (visual requires page+visual, page requires page). This helps the agent construct valid JSON conditions and correctly choose parameters, exceeding what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: adding an ADVANCED multi-condition filter with And/Or logic at visual, page, or report scope. It specifies the key differentiator (up to two conditions on the same field joined by And or Or) and explicitly distinguishes it from basic filters, making it easy to differentiate from sibling filter tools like add_visual_filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage context, including the scope options and the requirement to pass page+visual for visual scope and page for page scope. It does not explicitly name alternative tools or exclusions, but the 'ADVANCED' label and condition details imply when this tool is appropriate compared to simpler filter tools. Minor gap: no explicit 'use this instead of X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_analytics_lineA
Add an ANALYTICS reference line to a chart. kind = constant | min | max | average | median | trend | forecast. constant needs value; min/max/average/median compute from measureTable+measure; trend/forecast need no value. Optional label (data-label text on the line) and color (hex). Structure matched to the legacy analytics shape - verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | constant | min | max | average | median | trend | forecast | |
| page | Yes | page name or displayName | |
| color | No | line colour hex e.g. #E81123 | |
| label | No | optional line label | |
| value | No | value for a constant line | |
| visual | Yes | chart visual name | |
| measure | No | measure that drives the line | |
| measureTable | No | table that owns the measure (for min/max/average/median/forecast) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the responsibility for disclosing behavior. It adds a useful caveat: 'Structure matched to the legacy analytics shape - verify the render in Desktop,' which warns about potential rendering issues and legacy compatibility. It also clarifies the meaning of 'label' as 'data-label text,' going beyond the schema. It doesn't discuss other side effects, but for a simple add-line operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It's front-loaded with the purpose, then provides parameter rules, then adds a legacy caveat. Every sentence conveys unique, useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and no output schema, the description covers the purpose, parameter selection logic, and a key behavior caveat. It doesn't explain reportSessionId/page/visual, but those are standard and documented in the schema. The legacy note adds important context that a user might otherwise miss. It's complete enough for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 89% of parameters with descriptions, but the description adds essential cross-parameter semantics by explaining how 'kind' determines which other parameters are needed (constant → value; min/max/average/median → measureTable+measure; trend/forecast → none). This grouping goes beyond individual parameter descriptions and is critical for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add an ANALYTICS reference line to a chart.' This clearly states the tool's function and distinguishes it from sibling tools like add_chart or add_visual since it focuses on analytics reference lines specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool by explaining which parameters are needed for each 'kind' (constant uses value; min/max/average/median use measureTable+measure; trend/forecast need no value). However, it does not explicitly name alternative tools or state when NOT to use this tool, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_anomaly_detectionA
Add ANOMALY DETECTION to a line chart (the anomalyDetection object). sensitivity 0-100 optional (higher = more anomalies). explainBy = comma-separated fields the explanation groups by. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | line-chart visual name | |
| explainBy | No | comma-separated explain-by fields | |
| sensitivity | No | 0-100 sensitivity | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds the note 'Verify the render in Desktop' which hints at a Desktop-only verification workflow, and explains parameter effects. However, it doesn't disclose whether existing anomalyDetection settings are overwritten, nor any prerequisites or error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences, front-loaded with the main purpose, and every sentence adds useful information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param tool with no output schema, the description covers the purpose, key parameters, and a verification step. It lacks details on return values or edge cases, but is adequate for an add operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds semantics for sensitivity ('higher = more anomalies') and explainBy ('the explanation groups by'), which go beyond the schema's short descriptions. It doesn't cover reportSessionId, but that's a session identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Add ANOMALY DETECTION to a line chart' and identifies the object ('the anomalyDetection object'). This distinguishes it from other add-* tools like add_analytics_line or add_moving_average, and conveys the exact resource affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context that this tool is for line charts and covers the optional sensitivity and explainBy parameters. It doesn't explicitly mention alternatives or when not to use, but the purpose is clear enough to select for anomaly detection use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_auto_aggregationsA
Build an auto-aggregation scaffold: a hidden {Table}_Agg GROUPBY table over the group-by columns, hidden _Agg measures for each mapping, and IF-routing rewrites of the base measures so they answer from the small agg table when possible. groupByColumns is comma-separated Table[Column]. measureMappings is comma-separated aggMeasureName=baseMeasure. Extends set_aggregation. FLAG: the IF-routing is a best-known scaffold - review before production.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| detailTable | Yes | the detail (fact) table to summarise | |
| groupByColumns | Yes | group-by columns, comma-separated Table[Column] | |
| measureMappings | Yes | measure mappings, comma-separated aggMeasureName=baseMeasure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden; it discloses that it creates hidden objects, rewrites base measures, and only routes 'when possible.' The explicit FLAG warning that the IF-routing is a 'best-known scaffold' and needs review before production is valuable beyond the schema. It stops short of detailing side effects on existing aggregation tables or reversibility, but the core mutating behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and content-dense: two sentences plus a needed flag. It front-loads the core purpose and provides necessary parameter formats, but the first sentence is long and packs many clauses; still, no words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no annotations and no output schema, this description gives a strong overview of what will be built, the parameter syntax, and a production risk note. It leaves minor gaps (prerequisites, reversibility, return value), but the core context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description reaffirms and clarifies the comma-separated formats for groupByColumns and measureMappings, matching and slightly expanding the schema. It provides context on how the parameters map to the scaffold (hidden measures per mapping), though it does not elaborate beyond the schema for detailTable or sessionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Build') and resource ('auto-aggregation scaffold'), then enumerates the exact deliverables: hidden agg table, hidden measures, and IF-routing rewrites. It explicitly distinguishes itself from the sibling 'set_aggregation' by stating it extends that tool, clarifying its niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Extends set_aggregation' signals a relationship to an alternative, but the description never explicitly states when to choose this tool over set_aggregation or when not to use it. It implies usage for auto-aggregation but lacks clear exclusions or prerequisites (e.g., whether set_aggregation must be run first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_between_filterA
Add a BETWEEN filter (lo <= field <= hi) at a scope=visual|page|report: two Comparisons (GTE + LTE) joined by And. valueType picks the literal encoding (int|long|decimal|double|datetime|...). fieldKind=column|measure. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| hi | Yes | upper bound (inclusive) | |
| lo | Yes | lower bound (inclusive) | |
| page | No | page (scope=visual|page) | |
| field | Yes | the field | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the field | |
| visual | No | visual (scope=visual) | |
| fieldKind | No | column | measure | column |
| valueType | No | int|long|decimal|double|datetime|string | double |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for safety and behavior. It explains the internal structure (GTE + LTE joined by And) and scope handling, but it does not disclose whether the filter is additive or replaces existing filters, nor does it mention any side effects, permissions, or limitations. This leaves notable behavioral gaps for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise, information-dense sentences with no filler. Each sentence earns its place: the first defines the operation and scope, the second covers valueType and fieldKind, and the third details scope-specific parameter requirements. It is front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and no output schema or annotations, the description covers the essential semantic details: scope handling, value encoding, field kind, and the inclusive bounds meaning. It does not address whether the filter is appended or replaces existing filters, and reportSessionId is left unexplained, but the core usage is clear and well-rounded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 90% of parameters with descriptions, giving a baseline of 3. The description adds meaningful semantics beyond the schema: lo/hi are inclusive bounds, the operation composes two comparisons, valueType controls literal encoding, and fieldKind distinguishes column vs measure. It also clarifies the conditional requirement for page/visual based on scope, which adds practical usage value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') combined with a precise resource ('BETWEEN filter') and immediately clarifies the semantic (lo <= field <= hi). It clearly distinguishes this from sibling filter tools by specifying the two-value comparison and the scope options, so an agent can easily see what unique operation it performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to pass page+visual versus page based on scope, which is helpful for correct invocation. However, it does not explicitly mention alternatives or when not to use this tool (e.g., versus add_advanced_filter or add_does_not_contain_filter), so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_bookmarkA
Add a report-level bookmark that captures a page's visualContainers with the listed visuals HIDDEN and the rest shown (the view-state pattern). Names it 'Bookmark'+16 hex. hiddenVisuals = comma-separated visual ids (from list_visuals). Returns the new bookmark name. Wire it to a button with add_action_button.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName the bookmark captures | |
| captureData | No | also capture the live DATA state (filter/slicer values, sort, drill, cross-highlight) - not just which visuals show | |
| displayName | Yes | bookmark title shown in the pane | |
| hiddenVisuals | No | comma-separated visual ids to hide (the rest are shown) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the auto-generated name format 'Bookmark'+16 hex, the hidden/rest-shown behavior, the return of the new bookmark name, and a follow-up wiring suggestion. It doesn't cover permissions or explain the relationship between generated name and displayName, but covers most key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, front-loaded sentences convey the core action, naming scheme, parameter format, return value, and usage tip without any fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers purpose, behavior, parameters, return value, and integration. Minor gaps remain around reportSessionId context and error handling, but the essential operational flow is well-covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 80% of parameters. The description adds meaningful semantics by specifying hiddenVisuals as comma-separated IDs from list_visuals, clarifying the 'rest shown' default, and revealing the naming mechanism not present in the schema. However, reportSessionId remains undocumented and displayName interplay is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a report-level bookmark with a specific view-state pattern, hiding listed visuals and showing the rest. The verb 'add', resource 'bookmark', and detailed behavior distinguish it from siblings like update_bookmark, delete_bookmark, and add_bookmark_navigator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'view-state pattern' phrase and 'Wire it to a button with add_action_button' provide contextual usage guidance. It implies using list_visuals for IDs and contrasts view-state with captureData for data state, but does not explicitly name alternatives or state 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.
add_buttonA
Add a BUTTON with any action: actionType = bookmark | back | pageNavigation | drillthrough | qna | webUrl | clearAllSlicers | applyAllSlicers. bookmark needs bookmarkName; pageNavigation/drillthrough need a destination page (in destinationOrUrl); webUrl needs a url (in destinationOrUrl); back/qna/clearAllSlicers/applyAllSlicers need neither (clearAllSlicers/applyAllSlicers act on the page's slicers, e.g. a native Clear-all-slicers button). Writes the actionButton visualLink the product uses. Returns the new visual id.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| page | Yes | page name or displayName to place the button on | |
| text | Yes | button label | |
| width | No | ||
| height | No | ||
| actionType | No | bookmark | back | pageNavigation | drillthrough | qna | webUrl | clearAllSlicers | applyAllSlicers | bookmark |
| bookmarkName | No | bookmark name (actionType=bookmark) | |
| reportSessionId | Yes | ||
| destinationOrUrl | No | destination page (pageNavigation/drillthrough) OR url (webUrl) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool writes the actionButton visualLink and returns the new visual id, and it explains the behavior of clearAllSlicers/applyAllSlicers acting on the page's slicers. It does not cover permissions or error conditions, but for a button-creation tool, the disclosed behavior is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized: three sentences pack the actionType list, per-type parameter requirements, a note about slicer behavior, and the side effect/return value. Every sentence adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description covers the essential context: purpose, action-specific configuration, side effect, and return value. It omits nothing critical for adding a correctly configured button. The positional and session parameters are left to the schema, but their function is inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema for the conditional parameters (bookmarkName, destinationOrUrl) and explains the actionType enumeration values. However, schema description coverage is only 50%, and the description does not explain the semantics of x, y, width, height, or reportSessionId, which remain reliant on their default values and names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Add[s] a BUTTON with any action' and enumerates the supported actionType values, which immediately distinguishes this from generic add_visual and sibling tools like add_action_button. It also specifies the output ('Returns the new visual id') and the side effect ('Writes the actionButton visualLink'), making the function'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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on which parameters are required for each actionType (bookmark needs bookmarkName, pageNavigation/drillthrough and webUrl use destinationOrUrl, others need neither), giving the agent clear instructions on configuration. However, it does not explicitly compare this tool to sibling tools like add_action_button or add_nav_button, so guidance on when to use this tool versus alternatives is only implied via the actionType distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calc_group_formatA
Build a calc group whose items OVERRIDE the displayed format (a currency / % / scale switcher): each item keeps the value (SELECTEDMEASURE()) but reformats it via its own format string. items = JSON array of {name,formatString}. Creates the calc group on table if absent.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of {name,formatString}, e.g. [{"name":"Currency","formatString":"$#,0"},{"name":"Percent","formatString":"0.0%"}] | |
| table | Yes | the table to host the format calc group | |
| sessionId | Yes | ||
| precedence | No | calc-group precedence (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: use of SELECTEDMEASURE(), per-item format strings, and creation of the calc group if absent. But it omits what happens if the group already exists, any permissions required, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences, front-loaded with the essential concept, and free of unnecessary details. Every sentence contributes to understanding the tool's purpose and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers core functionality, item structure, and table creation behavior. It lacks details on precedence semantics and behavior when the group already exists, making it good but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 75% of parameters with detailed descriptions (including an example for items). The description adds semantic context about items preserving value and using format strings, but this is largely redundant with the schema's 'items' description. No significant new parameter guidance is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a calc group that overrides displayed format as a currency/%/scale switcher. It distinguishes itself from generic calc group tools by specifying the exact mechanism (items keep value but reformat) and provides a concrete example via the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It identifies the use case ('currency / % / scale switcher') and explains that items preserve the value while reformatting, which implies when this tool is appropriate. However, it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calculated_columnC
Add a DAX calculated column to a table.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | DAX expression for the column | |
| name | Yes | ||
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral details. It only states the action ('Add a DAX calculated column') but does not mention that this is a mutating operation, whether it requires an existing table, how it affects the model, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. It is maximally concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 required parameters and no output schema or annotations, yet the description provides minimal operational context. It does not explain how the parameters relate, expected behavior, or any return values, leaving the agent without sufficient guidance for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'dax' has a description). The tool description adds no parameter-level meaning beyond what the schema already implies, failing to explain the 'table', 'name', or 'sessionId' parameters. It does not compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('DAX calculated column') with a target ('table'), which clearly states what the tool does. It distinguishes from siblings like add_measure and add_calculated_table by the explicit 'column' and 'DAX' terms, though it does not elaborate on context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as add_measure or add_custom_column. The description simply states the action without any contextual hints, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calculated_tableB
Create a new calculated table from a DAX table expression (e.g. a Calendar via CALENDAR()).
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | DAX table expression | |
| name | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the action (create) without mentioning side effects, prerequisites (e.g., open session), existence checks, or what happens to the model. For a mutation tool, this is insufficient context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a concrete example. Every word contributes, and there is no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the core purpose but leaves gaps around required session context, parameter semantics for name/sessionId, and potential errors. Without an output schema, a bit more detail could improve completeness, but for a relatively simple create operation it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%), with only 'dax' described. The description clarifies 'dax' as a DAX table expression, but provides no meaning for 'name' or 'sessionId'. It does not compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new calculated table from a DAX table expression, with a concrete example (Calendar via CALENDAR()) that illustrates the intended use. It distinguishes from sibling tools like add_calculated_column or add_measure by specifying 'table' as the resource and 'DAX table expression' as the source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example implies usage for calendar-like tables, but it does not explicitly state when to use this tool versus alternatives such as create_date_table or add_table_from_m. It lacks explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calculation_groupA
Turn a (single-column) table into a calculation group - the engine for reusable selectors like Time Intelligence (Current/YTD/PY/YoY) applied to ANY measure. After this, add items with add_calculation_item. Lower precedence is applied first when groups are nested. target=pbip: pass pbipFolder instead of sessionId to apply the edit OFFLINE to a PBIP semantic model's TMDL (no engine; a missing table is created whole and DiscourageImplicitMeasures is switched on).
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | the table to convert into a calculation group | |
| sessionId | No | sessionId from connect_model (live engine; pass exactly one of sessionId / pbipFolder) | |
| pbipFolder | No | target=pbip: a PBIP <name>.SemanticModel / TMDL definition folder to edit OFFLINE (engine-free) | |
| precedence | No | precedence when multiple groups exist (higher applies last; optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses important behaviors: precedence ordering, offline mode behavior for pbip (missing table created whole, DiscourageImplicitMeasures switched on), and the engine-for-selectors concept. It could be more explicit about side effects like modifying existing tables, but the information provided goes well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with three sentences each providing essential information: purpose, next step, precedence, and offline mode. No wasted words; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description covers the core functionality, sequencing, precedence, offline mode, and key behaviors. Missing details like return values are not critical given the lack of an output schema, but some side-effect information could be added. Overall, it is reasonably complete for a moderate-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description still adds value by clarifying that the table must be single-column, explaining the precedence parameter ('Lower precedence is applied first when groups are nested'), and distinguishing sessionId vs pbipFolder for offline edits. This supplements the schema's field descriptions meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Turn a (single-column) table into a calculation group' and explains its role as 'the engine for reusable selectors like Time Intelligence (Current/YTD/PY/YoY) applied to ANY measure.' This verb+resource+concept is specific and distinguishes it from sibling tools like add_calculation_item by noting the sequencing ('After this, add items...').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it shows the workflow ('After this, add items with add_calculation_item'), explains precedence behavior ('Lower precedence is applied first when groups are nested'), and details the pbip offline alternative. However, it does not explicitly exclude alternatives such as add_time_intelligence_calc_group, so it lacks full when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calculation_itemA
Add a calculation item to a calculation group. The DAX usually wraps SELECTEDMEASURE(), e.g. "CALCULATE(SELECTEDMEASURE(), DATESYTD('Calendar'[Date]))" for a YTD item. ordinal sets display order; formatStringExpression sets a dynamic format for that item.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | item name, e.g. YTD | |
| table | Yes | the calculation-group table | |
| ordinal | No | display order (optional) | |
| sessionId | Yes | ||
| daxExpression | Yes | DAX expression, usually over SELECTEDMEASURE() | |
| formatStringExpression | No | DAX dynamic format-string expression for this item (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'Add' (mutation) and describes parameters, but does not mention side effects, reversibility, permissions, errors, or return behavior, leaving significant gaps for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every phrase adds value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and while the description covers the core purpose and optional parameters, it omits behavioral context (e.g., what happens if the calculation group doesn't exist, whether changes are reversible). It is adequate but not thorough for a mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), so the schema already describes most parameters. The description adds a helpful DAX example and clarifies the purpose of ordinal and formatStringExpression, but these largely mirror the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Add a calculation item') and the target resource ('to a calculation group'), with a concrete DAX example that distinguishes it from siblings like add_calculation_group or update_calculation_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating new calculation items and provides a DAX example, but it does not explicitly contrast with alternatives like set_calc_item_ordinal or update_calculation_item, nor does it mention prerequisites (e.g., an existing calculation group).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calendar_based_time_intelligenceA
Add native (non-Gregorian) calendar-based time intelligence: a calendar object on the calendar table's primary date column with a calendarColumnGroup over the associated period columns. associatedColumns is comma-separated. FLAG: the calendar / calendarColumnGroup objects are very new and absent from this build, so this is stamped as a PBI_Calendar table annotation - confirm in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| calendarTable | Yes | the calendar table | |
| primaryColumn | Yes | the primary date column | |
| associatedColumns | Yes | associated period columns, comma-separated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a significant caveat: the calendar/calendarColumnGroup objects are 'very new and absent from this build', leading to a stamped annotation workaround and instruction to confirm in Desktop. This is valuable behavioral information beyond a simple 'add' operation, though it does not discuss side effects or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main action and mechanics in the first sentence, followed by a brief parameter note and a crucial flag. No filler words, though the first sentence is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no annotations or output schema, the description covers the core mechanics and a critical implementation caveat. It lacks guidance on alternatives and explicit behavioral consequences, but the essential information for invoking the tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context to the schema parameters by explaining the relationship: a calendar object on the primary date column and a calendarColumnGroup over associated period columns. It also reinforces that associatedColumns is comma-separated. With 75% schema coverage, this adds meaning beyond the bare field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Add') and the resource ('native (non-Gregorian) calendar-based time intelligence'), with specific details about creating a calendar object and calendarColumnGroup. This distinguishes it from generic time intelligence tools like add_time_intelligence or add_custom_calendar_time_intelligence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for native/non-Gregorian calendars but does not explicitly state when to use this versus alternatives such as add_custom_calendar_time_intelligence or add_time_intelligence. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_cardC
Add a KPI card showing one measure.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| table | Yes | ||
| title | No | ||
| width | No | ||
| height | No | ||
| measure | Yes | measure name | |
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It implies creation and single-measure scope, but omits behavioral traits like whether it appends to the current page, requires a live session, or returns a visual reference. This is minimal beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is easy to parse. However, it is under-specified rather than appropriately concise for a 9-parameter API, so it does not achieve high marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and nine parameters with minimal schema docs, the description is far from complete. It omits context about required session/page/table and return behavior, leaving an agent with insufficient information to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, and the description only reinforces that a measure is shown; it does not explain x/y/width/height/title defaults or the role of reportSessionId/pageName/table. This does not compensate for the large undocumented parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a KPI card and constrains it to a single measure, so the purpose is specific. However, it does not differentiate from the sibling add_kpi_card, despite the near-identical name, so it falls short of full distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided: no when-to-use, prerequisites (e.g., open report session, existing page/table), or alternatives such as add_kpi_card or add_visual. The description simply states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_chartB
Add a chart. chartType = clusteredColumnChart | clusteredBarChart | lineChart | pieChart | donutChart | areaChart. Category is the axis, value is the measure.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| title | No | ||
| width | No | ||
| height | No | ||
| pageName | Yes | ||
| chartType | Yes | ||
| valueTable | Yes | value table | |
| seriesField | No | optional legend/series field | |
| seriesTable | No | optional legend/series table | |
| valueMeasure | Yes | value measure | |
| categoryField | Yes | axis/category field (column) | |
| categoryTable | Yes | axis/category table | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explains the semantic roles (category is the axis, value is the measure) and lists supported chart types, which is useful. However, it fails to disclose side effects, required session/page context, positioning defaults, or what the tool returns, leaving significant behavioral ambiguity for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the actual verb+object and then precise enum/domain semantics. It contains no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 14 parameters and no output schema, the description only addresses chartType and the category/value axis relationship. It leaves out how reportSessionId/pageName are used, the meaning of x/y/width/height, the optional series fields, and any return or result behavior, making it incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, so the description must compensate. It adds meaning for chartType (allowed values) and clarifies category/value table-field relationships. But it omits semantics for position/size parameters and optional series parameters, relying on parameter names and schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the operation ('Add a chart') and specifies chart types with a compact enum, distinguishing it from generic add_visual or table/matrix tools. It clearly defines chartType values but doesn't explicitly contrast with sibling tools like add_visual or add_matrix, so it falls just short of a top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of add_visual, add_matrix, or add_table_visual. It provides no prerequisites, context, or alternative references, so an agent must infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_conditional_columnA
Power Query Add Conditional Column: add a column from an ordered if/then/else rule chain (the structured Conditional Column builder). Appends Table.AddColumn with a nested if-chain to the table's M query. rules is comma-separated as column:op:value:result, e.g. "Score:ge:90:A,Score:ge:80:B". op = eq | ne | gt | ge | lt | le | contains | startswith | endswith. valueType types the compared values; resultType types the results (text | number | logical | null).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the new column name | |
| rules | Yes | rules as column:op:value:result, comma-separated | |
| table | Yes | ||
| sessionId | Yes | ||
| valueType | No | value type for comparisons: text | number | logical | null (default text) | text |
| elseResult | No | the else/default result when no rule matches | |
| resultType | No | result type: text | number | logical | null (default text) | text |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently states that it appends Table.AddColumn to the table's M query (a mutation) and details the rule format and operators. However, it does not mention side effects like existing-column overwrites, error conditions, or prerequisites, which would have elevated it further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, front-loading the core purpose, then detailing syntax, operators, and types. Every sentence contributes, though the rule example and operator list make it moderately verbose. It is appropriately sized for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and no annotations, the description covers the essential elements: the operation's effect, rule format, operators, and type handling. It does not explain return values or error scenarios, but the core usage is sufficiently documented for an agent to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters, but the description adds significant meaning beyond the schema by defining the exact comma-separated rule syntax (column:op:value:result), listing valid operators, and clarifying how valueType and resultType affect comparisons and outputs. This is valuable for invoking the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a conditional column via an ordered if/then/else rule chain, explicitly mentioning the underlying Table.AddColumn with a nested if-chain. This distinguishes it from generic add_custom_column or add_calculated_column tools by focusing on the structured Conditional Column builder pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use this tool: when you need an ordered conditional column based on rules. It provides examples and operator lists, but it does not explicitly name alternatives or state when not to use it, so it lacks explicit exclusions while giving clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_coverage_flagA
Close the loop on blank-on-select (the partner to audit_robustness). Adds a boolean calculated column to a dimension flagging whether each member has rows in a fact table. Filter slicers or add a report-level filter on it = users can no longer select a dead value (e.g. a brand with no sales). Returns how many members have data vs are dead. Idempotent + auto-recalcs.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the dimension table to add the flag to (e.g. Dim_Products) | |
| factTable | Yes | the fact table to test coverage against (e.g. Fact_Sales) | |
| sessionId | Yes | ||
| columnName | No | column name (default 'Has <factTable> Data') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behaviors: it adds a boolean column, idempotency, auto-recalculation, and return value ('Returns how many members have data vs are dead'). It stops short of mentioning prerequisites like existing relationships or permissions, but the core side effects are well described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with context, then action, then usage, then properties. Every sentence contributes unique value with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool does, how to use it, what it returns, and important properties (idempotent, auto-recalcs). It lacks explicit mention of prerequisites such as an existing relationship between the dimension and fact table, but the overall context is sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (3 of 4 params have descriptions). The description adds minimal parameter-level meaning beyond reinforcing the distinction between fact table and dimension. The missing sessionId description is not compensated for, but the schema itself is already descriptive, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and resource ('boolean calculated column to a dimension'), and clearly distinguishes this tool from siblings by positioning it as 'the partner to audit_robustness' and 'Close the loop on blank-on-select'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to prevent blank-on-select by flagging dead dimension members) and references a related sibling (audit_robustness). It does not explicitly list alternatives or exclusions, but the practical usage example ('Filter slicers or add a report-level filter') makes the trigger scenario evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_cultureA
Add a culture (locale, e.g. fr-FR or mi-NZ) so the model can carry translated captions, descriptions and display folders for that language. Add the actual translations with set_translation.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | locale code, e.g. fr-FR, de-DE, mi-NZ | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the purpose and outcome but does not mention side effects, error behavior, idempotency, or required permissions. No information on what happens if the culture already exists or how the addition is stored. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and resource, and every word contributes to understanding the tool's purpose and workflow. No redundant filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no output schema, the description gives a solid high-level understanding of the tool's effect and how it fits into the translation workflow. However, it lacks important operational context such as what the response/return value is, whether the operation is reversible, or what happens on duplicate cultures. The description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (locale is described, sessionId is not). The description repeats the locale examples from the schema ('fr-FR or mi-NZ') and adds 'mi-NZ' as an example, but it does not explain sessionId or any additional parameter semantics. The description adds marginal value beyond the schema and fails to compensate for the missing sessionId documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') with a clear resource ('a culture') and explains its purpose (enabling translated captions, descriptions, and display folders). It distinguishes itself from sibling tools like delete_culture and set_translation by describing its role in the localization workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names set_translation as the tool for adding actual translations, providing clear guidance on when to use this tool versus an alternative. It implies a sequencing step ('Add a culture... Add the actual translations with set_translation'), which is actionable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_currency_conversion_calc_groupA
Create a currency-conversion calculation group: an Original Value item and a Converted item that applies the daily exchange rate (SUMX over Date * rate).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the (single-column) table that becomes the calc group | |
| rateTable | Yes | the exchange-rate table name | |
| sessionId | Yes | ||
| precedence | No | precedence (optional) | |
| rateColumn | Yes | the rate column name | |
| currencyColumn | Yes | the currency column name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It explicitly describes that the tool creates two calculation items and the exchange-rate formula, which is meaningful behavioral context. However, it does not mention potential side effects, prerequisites, or idempotency, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Create', and contains no wasted words. Every element contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with 6 parameters and no output schema. The description captures the core behavior but omits details such as how the currencyColumn is used, prerequisites (e.g., base table must be single-column, but that is in schema), and possible interactions with existing calc groups. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), so the baseline is 3. The description adds some semantic context for rateTable and rateColumn by explaining the SUMX formula, but it does not elaborate on sessionId, precedence, or the currencyColumn beyond schema descriptions. It provides marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a currency-conversion calculation group, specifying its structure (Original Value item and Converted item) and the formula (SUMX over Date * rate). This is specific and distinguishes it from generic sibling tools like add_calculation_group and add_time_intelligence_calc_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool, i.e., when creating a currency-conversion calculation group. It does not explicitly mention alternatives or exclusions, but the specialized nature is evident from the name and description. A clear context is provided without explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_custom_calendar_time_intelligenceA
Generate integer-index time intelligence for a custom (445/454/544/weekly/13-period) calendar - the case where built-in TI breaks. Builds *TD/PY/PYTD/prev-week/MAT(364) measures off DayIndex/MonthIndex/Year/PeriodIndex columns on the calendar table. kind = 445 | 454 | 544 | weekly | 13period.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | 445 | 454 | 544 | weekly | 13period | |
| table | Yes | home table for the new measures | |
| sessionId | Yes | ||
| baseMeasure | Yes | base measure name | |
| calendarTable | Yes | the custom calendar table name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool builds multiple measure types (TD/PY/PYTD/prev-week/MAT) based on specific index columns (DayIndex/MonthIndex/Year/PeriodIndex) and lists the supported calendar kinds. However, it does not explicitly mention side effects like overwriting existing measures, required permissions, or whether it's a read-only or mutating operation. The generated measures are clearly stated, so it's fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and conveys the essential purpose, supported kinds, and measure outputs without wasted words. It is dense but well-structured, leading with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations. The description comprehensively covers the tool's input requirements and output measure types. It could mention return behavior or exact naming of generated measures, but the description is sufficient for an agent to select and invoke the tool correctly. Minor gaps like prerequisites are implied by the column references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 4 of 5 parameters (80%), so the baseline is 3. The description repeats the kind enum values but adds context about the required DayIndex/MonthIndex/Year/PeriodIndex columns on the calendar table, which enriches the understanding of baseMeasure and calendarTable. It doesn't add further detail for sessionId or parameter syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: generating integer-index time intelligence for custom calendars. It lists specific calendar types (445/454/544/weekly/13-period) and the measures built, which differentiates it from sibling tools like add_time_intelligence or add_calendar_based_time_intelligence by emphasizing the custom calendar context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies the use case: custom calendars where built-in time intelligence fails. It implicitly contrasts with built-in TI but does not explicitly name alternatives or provide when-not scenarios beyond 'built-in TI breaks'. This is clear context but lacks explicit sibling tool exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_custom_columnA
Power Query Add Custom Column: add a column from an M expression. Appends Table.AddColumn(prev, name, each ) to the table's M query. The expression references other columns as [Col], e.g. "[Qty] * [Price]".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the new column name | |
| table | Yes | ||
| sessionId | Yes | ||
| mExpression | Yes | the M expression, e.g. [Qty] * [Price] | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it appends Table.AddColumn to the table's M query, revealing the exact transformation and that the operation modifies the query. Since no annotations are provided, this carries the transparency burden, and while it doesn't mention error handling or side effects, the explicit M code gives strong behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences that front-load the purpose and add essential detail without redundancy. It earns its place with a clear statement, a mechanism explanation, and a useful example—no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 5-parameter tool with no output schema or annotations, the description covers the core mechanics and provides a usage example. It omits context about session/table handling and potential side effects, but the essential operation is clearly conveyed, leaving only minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that mExpression references columns as [Col] and provides a concrete example, adding context beyond the schema's basic description. It also shows how name and mExpression combine in the Table.AddColumn code, giving relational meaning that the schema alone lacks, though table and sessionId remain under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states 'add a column from an M expression,' specifying the exact action and resource. It distinguishes this from sibling tools like add_calculated_column by emphasizing M expressions and provides a concrete example, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Power Query Add Custom Column' and the M expression syntax clearly indicate this is for Power Query transformations. It implies the right context (adding custom columns via M) but does not explicitly name alternatives or state when not to use it, landing just below the 'explicit alternatives' threshold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_data_columnA
Add a data column's metadata to an import (M) table so relationships and bindings resolve. Needed after add_table_from_m because TOM does not auto-infer columns. Refresh afterwards to populate values.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| table | Yes | ||
| dataType | Yes | String|Int64|Double|DateTime|Boolean|Decimal | |
| sessionId | Yes | ||
| sourceColumn | No | source column name in the M output (defaults to name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: this adds metadata only, and a refresh is required to actually populate values. It also explains the underlying TOM limitation, adding context beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and each sentence adds value. There is no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential context: what it does, when it's needed (after add_table_from_m), and the post-operation refresh requirement. It lacks details about error cases or return values, but given the tool's moderate complexity and no output schema, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, covering dataType and sourceColumn. The description does not compensate by explaining required parameters like sessionId, table, or name. It mentions 'import (M) table' but does not elaborate on the parameter semantics, leaving the agent to rely on the incomplete schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: adding a data column's metadata to an import (M) table. It specifies the resource ('import table') and the action ('add metadata'), distinguishing it from other add_* tools like add_calculated_column or add_custom_column that target different column types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Needed after add_table_from_m because TOM does not auto-infer columns.' It also instructs to refresh afterwards. However, it does not explicitly mention alternatives or when-not-to-use scenarios, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_deneb_visualA
Add a DENEB (Vega / Vega-Lite) custom visual to a page: registers the Deneb guid, adds the visual, binds dataRoles into Deneb's 'values' data role, and writes objects.vega[0].properties (jsonSpec one-lined + single-quoted in a literal, jsonConfig, provider=vega|vegaLite, renderMode=svg|canvas, enable* booleans). spec/config = JSON strings. dataRoles = JSON array of {table,field,kind}. FLAG: visualGuid defaults to the published Deneb guid - confirm in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| w | No | ||
| x | No | ||
| y | No | ||
| name | Yes | a label/title for the visual | |
| page | Yes | page name or displayName | |
| spec | Yes | the Vega/Vega-Lite spec as a JSON string | |
| config | No | optional Vega config as a JSON string | |
| provider | No | vega | vegaLite | vegaLite |
| dataRoles | No | JSON array of {table,field,kind} to bind into Deneb's data role | |
| renderMode | No | svg | canvas | svg |
| visualGuid | No | override the Deneb visual guid (confirm in Desktop) | |
| enableTooltips | No | enable Deneb tooltips | |
| enableHighlight | No | enable Deneb cross-highlight | |
| enableSelection | No | enable Deneb selection | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses internal behaviors: registers guid, adds visual, binds dataRoles, and writes objects.vega[0].properties with specific formatting details. It also includes a caveat about visualGuid defaulting to the published guid, adding transparency about a potential misconfiguration. It does not cover all side effects (e.g., overwriting, errors) but is above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence but efficiently packs all essential information. It is front-loaded with the main action and then details sub-operations. Slightly overlong and could benefit from bullets, but every sentence earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (16 params, no output schema, no annotations), the description covers the core behavior and key parameter formats but leaves gaps: it doesn't explain return values, error conditions, or prerequisites like reportSessionId. It also omits semantics for positional parameters x/y/w/h (though those have defaults). It's adequate but not complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 69%, so the description adds meaningful context beyond the schema. It explains that spec/config are JSON strings (schema already says), dataRoles is a JSON array of {table,field,kind}, provider/renderMode have specific enum-like values, and enable* booleans exist. It also reveals the format of jsonSpec (one-lined + single-quoted in a literal), which is not in the schema. This compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add a DENEB (Vega / Vega-Lite) custom visual to a page' and enumerates specific actions (registers the Deneb guid, adds the visual, binds dataRoles, writes properties). This distinguishes it from sibling tools like add_visual or register_custom_visual by its Deneb-specific scope and detailed behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when adding a Deneb visual to a page, with specifics on how to structure the call (e.g., spec/config as JSON strings, dataRoles array format). It does not explicitly mention alternatives or when-not-to-use, but the context is clear enough for an agent to infer it's the correct tool for Deneb visuals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_does_not_contain_filterA
Add a DOES-NOT-CONTAIN filter (Not(Contains)) on a text column at a scope=visual|page|report. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page (scope=visual|page) | |
| field | Yes | the text column | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the column | |
| value | Yes | the substring the value must NOT contain | |
| visual | No | visual (scope=visual) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It discloses the exact filter logic ('Not(Contains)') and scope-dependent parameter requirements, but it does not mention side effects, return values, how the filter combines with existing filters, or authorization requirements. This is adequate but has notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and includes essential conditional details. No filler or redundant repetition of schema property names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter filter tool with a rich schema and no output schema, the description provides the key missing contextual information: scope handling and page/visual parameter requirements. It is sufficiently complete to guide correct invocation, though it could mention return behavior or interaction with existing filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers most parameters with descriptions (86% coverage). The description adds valuable conditional semantics by explaining which page/visual parameters are needed per scope, going beyond the schema's individual property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Add a DOES-NOT-CONTAIN filter (Not(Contains)) on a text column.' It specifies the resource type (text column) and the filter semantics, distinguishing it from sibling filter tools like add_between_filter or add_visual_filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by specifying valid scopes ('scope=visual|page|report') and the required parameters for visual/page scopes ('For scope=visual pass page+visual; scope=page pass page'). It does not explicitly compare to alternative tools or state when not to use, but the scope and parameter guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_drillthroughB
Make a page a DRILL-THROUGH target on a column: right-clicking a data point of that column on any other page offers 'Drill through' to this page, filtered to that value. Adds the drill-through page filter + the Back button. Ground-truthed from a real report.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | ||
| drillTable | Yes | table of the drill column, e.g. Dim_Product | |
| drillColumn | Yes | column to drill on, e.g. Brand | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the disclosure burden. It clearly states side effects: it adds a drill-through page filter and a Back button, and explains the user-visible right-click behavior. This is meaningful behavioral context, though it omits prerequisites, permission needs, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at two sentences, with the core purpose front-loaded. The trailing 'Ground-truthed from a real report' is extraneous for an agent selecting a tool, but it does not significantly harm clarity or structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description conveys the primary purpose and side effects, but gaps remain: parameter meanings are incomplete, no return behavior is described, and the relation to sibling drillthrough tools is unaddressed. It is adequate but not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes drillTable and drillColumn; pageName and reportSessionId lack descriptions, yielding 50% coverage. The tool description adds conceptual context about drill-through but does not explain the role of each parameter, especially pageName and reportSessionId. With low schema coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: making a page a drill-through target on a column, with specific behavior (right-clicking a data point on other pages offers 'Drill through'). It distinguishes from related sibling tools by focusing on the column-based, intra-report drill-through target behavior, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this when you want a page to serve as a drill-through target for a specific column. However, there is no explicit guidance on when not to use it or how it relates to sibling tools like set_drillthrough_fields or set_cross_report_drillthrough, leaving some ambiguity for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dynamic_rlsA
Generate dynamic row-level security: create the role (if absent) and set a USERPRINCIPALNAME()-driven filter on the SECURED table. shape = direct | bridge | hierarchy | lookup. Never targets the user/mapping table (refused - it would break the lookup).
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | role name | |
| shape | Yes | direct | bridge | hierarchy | lookup | |
| sessionId | Yes | ||
| userTable | Yes | the user/security mapping table | |
| pathColumn | No | path column on the user table for the hierarchy shape (optional) | |
| securedTable | Yes | the fact/dimension table to secure | |
| securedColumn | Yes | the column on the secured table to filter | |
| modelPermission | No | model permission for a new role (default Read) | |
| userEmailColumn | Yes | the email/UPN column on the user table | |
| userValueColumn | Yes | the value column on the user table that matches the secured column |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description covers key side effects: role creation is conditional ('if absent'), the filter is UPN-driven, and the user/mapping table is explicitly refused. It does not mention whether an existing role's filter is overwritten or what happens to permissions, but the provided behaviors are meaningful and non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and each sentence adds distinct value. The shape enumeration and refusal note are compact and directly relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with 10 parameters and no output schema, and the description does not explain the key shape semantics (direct vs bridge vs hierarchy vs lookup), nor handling of existing roles or permission defaults. The refusal behavior and high schema coverage help, but significant behavioral gaps remain for such a configurable tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 90%, so the baseline is 3. The description adds context beyond the schema by explaining the UPN-driven filter and the refusal case, but it does not elaborate on the meaning of each shape or how parameters like pathColumn and modelPermission interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates dynamic row-level security by creating a role and setting a USERPRINCIPALNAME()-driven filter. It specifies the resource (SECURED table) and the action (create role + set filter), and the 'dynamic' qualifier plus refusal behavior distinguishes it from static RLS or role-management siblings, though no sibling is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for dynamic RLS scenarios and lists the shape enum to guide configuration, but it does not explicitly say when to prefer this tool over alternatives like set_rls or add_role. The refusal to target the user/mapping table is a clear exclusion, but there is no direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dynamic_segmentationA
Generate a dynamic-segmentation measure that classifies an entity by a measure value against a disconnected band table (left-closed, right-open bounds). Returns the count of entities in the selected segment.
| Name | Required | Description | Default |
|---|---|---|---|
| measure | Yes | the measure to classify on, e.g. Total Sales | |
| sessionId | Yes | ||
| entityTable | Yes | entity / home table | |
| lowerColumn | Yes | lower-bound column name on the band table | |
| upperColumn | Yes | upper-bound column name on the band table | |
| boundaryTable | Yes | the boundary/band table name | |
| segmentColumn | Yes | segment-label column name on the band table | |
| granularityColumn | Yes | entity grain column as Table[Column], e.g. Customer[CustomerKey] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose the interval semantics ('left-closed, right-open bounds') and the logical result (count of entities), but it does not clarify what the tool actually returns to the caller (e.g., a measure object or string) or whether it modifies existing measures. This ambiguity leaves room for misunderstanding the tool's direct output and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and contains no redundant words. Every clause contributes to either the action or the algorithm, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of annotations/output schema, the description gives a solid overview but omits practical details: what the tool directly returns, how the 'selected segment' is specified, and any limitations (e.g., handling of nulls or out-of-range values). These gaps make it harder for an agent to invoke the tool confidently without additional guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 7 of 8 parameters, so baseline is 3. The description adds important context by explaining the 'disconnected band table' and 'left-closed, right-open bounds,' which clarifies the roles of lowerColumn and upperColumn. It also connects measure and granularityColumn to the classification logic, enriching understanding beyond the individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('Generate a dynamic-segmentation measure') and explains the mechanism ('classifies an entity by a measure value against a disconnected band table') and the output ('Returns the count of entities in the selected segment'). This clearly distinguishes it from sibling tools like add_dynamic_topn or add_abc_classification by focusing on band-table-based segmentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case—dynamic segmentation using a band table—but does not explicitly state when to choose this over alternatives or what prerequisites exist (e.g., whether the band table must be sorted). While the context is useful, it lacks explicit exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dynamic_title_measureA
Author a DYNAMIC TITLE text measure: SELECTEDVALUE over a column with an All/multiple fallback, optionally wrapped in a template ({value} is the placeholder). e.g. column Dim_Product[Category], template "Sales - {value}". Then bind it to a visual title with bind_dynamic_title (report side).
| Name | Required | Description | Default |
|---|---|---|---|
| column | Yes | the column whose selection drives the title, e.g. Dim_Product[Category] | |
| allLabel | No | label when not a single selection (default 'All') | |
| template | No | title template with {value} placeholder (optional; omit for the bare value) | |
| homeTable | Yes | home table for the new measure | |
| sessionId | Yes | ||
| measureName | Yes | the new measure's name, e.g. Page Title |
TDQS
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 explains the measure's internal logic (SELECTEDVALUE with All/multiple fallback, template placeholder, optional template), which goes beyond the schema. It doesn't mention side effects or error handling, but the core behavior and the follow-up binding action are clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core purpose, but the first sentence is long and packs several concepts. The example and the binding instruction are useful and earn their place. Overall it is efficient, if slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a measure-authoring tool with no output schema, the description provides sufficient context: the formula pattern, fallback behavior, template usage, an example, and the next step (bind_dynamic_title). It misses some details like what the tool returns (e.g., the measure name) and the sessionId context, but the core usage is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 83% of parameters with descriptions, so the baseline is 3. The description adds extra meaning by providing a concrete example (column Dim_Product[Category], template "Sales - {value}"), clarifying how the column and template parameters interact. It also explains the {value} placeholder, which is not in the schema, adding value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: authoring a DYNAMIC TITLE text measure using SELECTEDVALUE with a fallback and optional template. It specifies the verb 'author', the resource (measure), and the technical approach, and distinguishes itself from generic measure tools and from bind_dynamic_title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use this tool (to create a dynamic title measure) and explicitly directs the user to bind_dynamic_title for the report-side step. It doesn't explicitly say when not to use it, but the inclusion of a concrete example and the reference to the sibling tool provides solid usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dynamic_topnA
Generate a dynamic Top N: a what-if N slider, a UNION+Others dimension table, and a rank-or-others measure that buckets everything below rank N into an Others row.
| Name | Required | Description | Default |
|---|---|---|---|
| nMax | No | maximum N (default 20) | |
| nMin | No | minimum N (default 1) | |
| measure | Yes | the measure to rank on | |
| nDefault | No | default N (optional) | |
| dimension | Yes | dimension column as Table[Column] | |
| homeTable | Yes | home table for the measure | |
| sessionId | Yes | ||
| nIncrement | No | N increment (default 1) | |
| othersLabel | No | label for the Others bucket (default Others) | |
| topNTableName | No | name for the Top N dimension table (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the generated components and bucketing logic, but does not mention side effects on the model, reversibility, or required permissions. The description adds meaningful context but leaves some behavioral aspects implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the tool's purpose and generated artifacts without wasted words. It is concise yet highly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters) and lack of output schema, the description conveys the core concept and generated artifacts well. It does not fully explain return values or side effects, but the essential purpose is clear enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90%, so the schema documents most parameters. The description does not add details about individual parameters (e.g., nMin, nMax, othersLabel) beyond what is already in the schema, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and names distinct artifacts (what-if N slider, UNION+Others dimension table, rank-or-others measure), clearly differentiating it from siblings like add_topn_filter or add_visual_topn. It precisely captures the tool's unique value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case (dynamic top N with an interactive slider and Others bucket) but does not explicitly mention alternatives or exclusions. It provides sufficient context for an agent to know when to use it, just lacks explicit comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_error_barsA
Add ERROR BARS to a chart (the errorBars object). kind=byField: upperField (+ lowerField unless symmetrical) measures bound from measureTable. kind=byPercentage: percent of the value. relation = Absolute|Relative. symmetrical optional. band = Fill|Line|Both. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Fill | Line | Both | |
| kind | Yes | byField | byPercentage | |
| page | Yes | page name or displayName | |
| visual | Yes | chart visual name | |
| percent | No | percent of value (byPercentage) | |
| relation | No | Absolute | Relative | Absolute |
| lowerField | No | lower-bound measure (byField, omit if symmetrical) | |
| upperField | No | upper-bound measure (byField) | |
| symmetrical | No | symmetrical bars | |
| measureTable | No | table that owns the bound measures (byField) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose side effects, whether it overwrites existing error bars, permissions, or potential failure modes. However, it does provide meaningful behavioral context by explaining how the kind parameter changes interpretation (byField vs byPercentage) and instructs to verify the render in Desktop, which gives some operational awareness. Since there are no annotations, more transparency would be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action. It efficiently packs many parameter relationships into a compact format. It loses a point for being a somewhat dense run-on structure, which could be more readable with bullet points or clearer separation of ideas.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no annotations, no output schema), the description covers the core parameter interactions but omits practical context such as when to use the tool, prerequisites, or what happens to existing settings. The instruction to verify in Desktop hints at a render step, but not enough for a fully self-contained understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial value beyond the schema by explaining the relationships between parameters: e.g., byField uses upperField/lowerField from measureTable, byPercentage uses percent, symmetrical is optional, and relation/band have specific enums. This clarifies conditional logic that the schema's per-field descriptions do not capture.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add ERROR BARS') and the specific target ('the errorBars object' on a chart). It is distinct from sibling tools by naming the exact chart feature, so there is no ambiguity about 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.
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, nor any exclusions or prerequisites. The description focuses on configuration details (kind, relation, band) but does not explain the broader use case or when this tool is appropriate compared to other visual-editing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_field_parameterA
Create a FIELD PARAMETER - a small calculated table that lets a user swap which field a visual shows. Pass the fields as Table[Column] references; the first generated column drops onto a slicer to switch between them. Builds the {("Display", NAMEOF('T'[Col]), order), ...} table with the parameter metadata the report layer recognises.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name for the field-parameter table, e.g. 'Measure Selector' | |
| fields | Yes | fields to switch between, comma-separated Table[Column] refs, e.g. "Sales[Amount],Sales[Qty]" | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key mechanics: passing fields as Table[Column] references, the first generated column dropping onto a slicer, and the exact table structure built. This goes beyond a simple 'create' statement, though it doesn't mention potential side effects like overwriting existing tables.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, highly information-dense, with the core purpose front-loaded. Every sentence earns its place, explaining the use case, input format, and output structure without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description adequately covers the tool's purpose, input requirements, and behavioral output. It is complete enough for an agent to understand how to invoke it, though additional constraints like required fields are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description compensates by elaborating on the 'fields' parameter (format and usage) and the resulting table structure. It adds meaning beyond the schema for the main parameter, while sessionId remains standard with no additional need.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('FIELD PARAMETER'), and explains its function as a small calculated table that lets users swap visual fields. This clearly distinguishes it from generic tools and even from related siblings like bind_field_parameter, which focuses on binding an existing parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (allowing a user to switch which field a visual shows) but does not explicitly state when to use this tool versus alternatives such as bind_field_parameter or add_whatif_parameter. Context is present but exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fixed_anchor_relative_date_filterA
Add a FIXED-ANCHOR relative-date window (UI-impossible): Last/Next N units measured from a LITERAL anchor date instead of Now. Encoded as a GTE + LT pair of datetime Comparisons. mode=Last|Next, unit=Days|Weeks|Months|Years. anchorDate=ISO date (e.g. 2024-06-30). For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Last | Next | |
| page | No | page (scope=visual|page) | |
| unit | Yes | Days | Weeks | Months | Years | |
| count | Yes | number of units | |
| field | Yes | the date column | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the date column | |
| visual | No | visual (scope=visual) | |
| anchorDate | Yes | the literal anchor date, ISO (e.g. 2024-06-30) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It adds useful behavioral context, such as the filter being 'Encoded as a GTE + LT pair of datetime Comparisons' and being 'UI-impossible'. However, it does not disclose potential side effects (e.g., whether existing filters are replaced, validation of inputs, or error behavior), leaving some gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, tightly packed with essential information. The opening sentence states the core concept, followed by encoding details, parameter listings, and scope mapping. No redundant or filler content appears.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no output schema, no annotations), the description covers the primary purpose, key distinguishing features, and critical parameter semantics. It does not explain every edge case (e.g., how the GTE/LT pair applies to filtering) but is sufficient for a competent agent to select and invoke the tool correctly for the main use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (~90%), so the baseline is 3. The description adds value by explaining 'mode=Last|Next', 'unit=Days|Weeks|Months|Years', providing an example for anchorDate (2024-06-30), and clarifying scope-to-parameter mapping, which goes beyond the schema's terse property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and clearly names the resource ('FIXED-ANCHOR relative-date window'). It distinguishes the tool from siblings by highlighting 'UI-impossible' and using 'instead of Now' to contrast with standard relative-date filters, making its unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use this tool (for fixed-anchor relative-date windows) and explicit direction on parameter combinations: 'For scope=visual pass page+visual; scope=page pass page.' However, it does not explicitly name alternative tools or state when not to use it, though the 'instead of Now' contrast implies the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_hierarchyA
Create a drill-down hierarchy on a table from an ordered, comma-separated list of existing columns (e.g. "Year,Quarter,Month" or "Segment,Subsegment,ItemDesc"). target=pbip: pass pbipFolder instead of sessionId to apply the same edit OFFLINE to a PBIP semantic model's TMDL (no engine).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | hierarchy name | |
| table | No | the table to build the hierarchy on | |
| levels | No | ordered column names, comma-separated | |
| sessionId | No | sessionId from connect_model (live engine; pass exactly one of sessionId / pbipFolder) | |
| pbipFolder | No | target=pbip: a PBIP <name>.SemanticModel / TMDL definition folder to edit OFFLINE (engine-free) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the offline PBIP TMDL behavior ('no engine') and the requirement of existing columns. However, it does not mention what happens on conflicts (e.g., if a hierarchy with the same name already exists), whether levels are validated, or any side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main purpose, provides parenthetical examples, and then introduces the offline mode. Every word contributes meaning with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description covers the primary usage and the offline variant. However, it does not explicitly state that exactly one of sessionId or pbipFolder must be supplied (schema shows 0 required but description implies 'instead of'), nor does it describe the expected return value or success/failure behavior. This leaves gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing a baseline of 3. The description adds value by clarifying the relationship between sessionId and pbipFolder ('pass pbipFolder instead of sessionId') and explicitly defining the levels format as an ordered, comma-separated list with examples. This goes beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a drill-down hierarchy on a table from an ordered, comma-separated list of existing columns.' It provides concrete examples and distinguishes this from siblings like add_hierarchy_level by specifying the creation of the entire hierarchy rather than adding a single level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for using the tool (building a hierarchy from existing columns) and explains the pbip offline mode as an alternative to using sessionId. However, it does not explicitly state when not to use this tool versus related tools like set_hierarchy_properties, leaving some room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_hierarchy_levelA
Add a level to an existing hierarchy from a column on the same table. ordinal positions it (0 = top; omitted = appended at the bottom); remaining levels are renumbered densely.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column backing the new level | |
| ordinal | No | position within the hierarchy, 0 = top (optional; default = bottom) | |
| hierarchy | Yes | the hierarchy to extend | |
| levelName | No | level display name (optional; defaults to the column name) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: how the ordinal parameter positions the level (0 = top, omitted = bottom) and that existing levels are renumbered densely. This goes beyond the schema, which only mentions the default position.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence with two clauses. It front-loads the primary purpose and then specifies the crucial ordinal behavior without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters and no annotations, the description covers the main operation and the subtle ordinal behavior. It does not describe error cases or prerequisites beyond the same-table constraint, but the schema covers parameter-level details like the levelName default. It is reasonably complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers most parameters with descriptions (column, ordinal, hierarchy, levelName), but the description adds meaning by noting the column must be on the same table (clarifying the 'table' parameter) and by explaining the renumbering side effect of the 'ordinal' parameter. This complements the 67% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a level') and the target ('an existing hierarchy'), with a source constraint ('from a column on the same table'). This specific verb+resource clearly distinguishes it from sibling tools such as remove_hierarchy_level or add_hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: extending an existing hierarchy by adding a level backed by a column on the same table. It does not explicitly name alternatives or exclusions, but the specificity makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_html_content_blockA
Add the HTML Content (lite) custom visual bound to a DAX measure that returns HTML/CSS: registers the visual type, adds the visual, and binds the measure to its content (values) role. daxHtmlMeasure = "Table[Measure]" (the measure must already exist and return an HTML string). visualGuid overrides the visual type id (confirm the certified guid in Desktop).
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | ||
| w | Yes | ||
| x | Yes | ||
| y | Yes | ||
| name | Yes | a label/title for the visual | |
| page | Yes | page name or displayName | |
| visualGuid | No | override the HTML Content visual guid (optional) | |
| daxHtmlMeasure | Yes | the DAX HTML measure, "Table[Measure]" | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the sequence of operations (registers, adds, binds) and the prerequisite for the measure, which is useful. However, it does not disclose potential failure modes, permissions needed, or what happens if the measure does not return HTML or the guid is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the main purpose, followed by prerequisites and an optional override. No redundant information or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 9 parameters, no output schema, and no annotations, the description is adequate but incomplete. It explains the core workflow and key parameters, but omits details on coordinate parameters, reportSessionId, and expected return value or errors. There are clear gaps for an agent to fully understand the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 44%, with descriptions for name, page, visualGuid, and daxHtmlMeasure. The description adds context for daxHtmlMeasure (must return HTML string) and visualGuid (certified guid in Desktop), but does not clarify h, w, x, y, or reportSessionId. Thus it partially compensates for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: adding an HTML Content (lite) custom visual bound to a DAX measure, including the steps of registering the visual type, adding the visual, and binding the measure to the content role. This distinguishes it from sibling tools like add_deneb_visual or add_visual.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use this tool when you have a DAX measure that returns HTML/CSS and need to add an HTML Content visual. It gives a prerequisite (the measure must already exist and return an HTML string) and notes the optional visualGuid override. It does not explicitly mention alternatives or exclusion cases, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_ibcs_variance_measureA
Author IBCS variance measure(s) for an actual measure vs a comparison base (PY|PL|FC). kind=abs (AC - base, leading-sign format) or rel (DIVIDE(AC - base, ABS(base)) %). The base is expected as a measure ' ' unless comparisonMeasure is given. applyIbcsFormat applies an IBCS number format (+/- leading sign).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | abs | rel | abs |
| table | Yes | the measure's table | |
| sessionId | Yes | ||
| comparison | No | PY | PL | FC | PY |
| actualMeasure | Yes | the actual measure, e.g. Sales | |
| applyIbcsFormat | No | apply an IBCS number format | |
| comparisonMeasure | No | explicit comparison-base measure name (optional; else '<actual> <comparison>') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and delivers by explaining the exact formulas for abs and rel, the expected base measure naming convention, and the effect of applyIbcsFormat. It does not cover error handling, overwrite behavior, or permissions, but the core computation and key assumptions are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, with three sentences that each add essential information: purpose, formulas, and naming/format expectations. No filler or redundant content; it is well-structured and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool without an output schema, the description covers the main decision points and algorithmic behavior. It does not mention return values or edge cases (e.g., missing base measure), but given the complexity and the provided schema, the description is sufficiently complete for correct invocation in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes most parameters, but the description adds meaningful semantics beyond the schema: it defines the kind formulas, explains the '<actual> <comparison>' naming convention for the base measure, and clarifies that applyIbcsFormat adds a leading sign. This goes well beyond the baseline for 86% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: authoring IBCS variance measures against a comparison base (PY, PL, FC). It distinguishes itself from generic measure-creation tools by specifying the variance types (abs/rel) and the IBCS format, making it unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when creating IBCS variance measures with year-over-year or plan comparisons. It does not explicitly name alternatives or state when not to use it, but the specialized purpose and formula details imply the appropriate scenario strongly enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_imageA
Place an image (e.g. a brand LOGO) on a page - embeds the file into the .pbix as a resource and adds an image visual. Completes the brand kit (logo IN the report, not just the palette). scaling = Fit | Fill | Normal.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| width | No | ||
| height | No | ||
| scaling | No | Fit | Fill | Normal | Fit |
| pageName | Yes | ||
| imagePath | Yes | path to the image file (png/jpg) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does disclose key behavioral traits: it 'embeds the file into the .pbix as a resource' (a side-effect with file size implications) and 'adds an image visual'. It also enumerates the scaling options. While it doesn't cover permissions or error behavior, the embedding behavior is a significant non-obvious trait that goes beyond a generic 'add image' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core action and embed details efficiently. The brand kit phrasing adds context without redundancy, and the scaling line is a compact reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and no annotations, this description leaves too many gaps: no explanation of x/y/width/height semantics, no mention of required session/page context, and no indication of return values or error conditions. The simple use case is clear, but operational completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%), so the description must compensate for undocumented parameters like x, y, width, height, pageName, and reportSessionId. It only re-echoes the scaling enum and gives an example ('brand LOGO') for imagePath, but does not explain coordinate units, defaults (already in schema), or how to obtain required session/page identifiers. This is insufficient for a tool with 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Place') and resource ('an image on a page') with concrete detail about embedding the file into the .pbix and adding an image visual. It clearly distinguishes itself from generic tools like add_visual by focusing on image resources and brand logo use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this for placing a brand logo in the report, explicitly noting it 'Completes the brand kit (logo IN the report, not just the palette)'. While it doesn't name alternatives or exclusions, the brand kit framing gives a specific use case that implies when to choose this tool over generic visual-adders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_include_exclude_filterA
Add an INCLUDE or EXCLUDE filter (the right-click include/exclude these values) at a scope=visual|page|report. values = comma-separated or JSON array. exclude=true excludes them (Not In), false includes them (In). valueType=int|decimal|string. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page (scope=visual|page) | |
| field | Yes | the column | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the column | |
| values | Yes | values (comma-separated or JSON array) | |
| visual | No | visual (scope=visual) | |
| exclude | No | true = exclude, false = include | |
| valueType | No | int|decimal|string | string |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral semantics: exclude=true maps to 'Not In', false maps to 'In', and values can be comma-separated or a JSON array. It also clarifies conditional parameter requirements per scope, adding meaningful behavior beyond what the schema alone conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a tight two-sentence summary that front-loads the purpose and packs syntax details without redundancy. Every clause adds value, and the structure is logical: purpose, parameter formats, then scope-specific guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters with no output schema, and the description covers the main functional parameters (values, exclude, valueType, scope, page/visual). Slight gaps include not addressing reportSessionId explicitly or clarifying how table/field relate to schema identifiers, but overall it is sufficiently complete for a filter-add operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so baseline is 3, but the description adds critical meaning: values format, exclude mapping, valueType options, and scope-dependent parameter usage. This goes well beyond the schema, making parameter semantics very clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds an include/exclude filter and specifies the scopes (visual, page, report). It uses a specific verb and resource, distinguishing it from generic filter tools by describing the right-click include/exclude behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains valid scopes and how to select the target (page+visual for visual scope, page for page scope). However, it does not explicitly compare with alternative filter tools like add_visual_filter, leaving some ambiguity about when this specific include/exclude variant is preferred over other filter mechanisms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_index_columnB
Power Query Add Index Column: add a sequential index. Appends Table.AddIndexColumn to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | the index column name (default Index) | |
| step | No | increment between rows (default 1) | |
| start | No | starting value (default 0) | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the mechanical effect (appends to the M query) but does not disclose side effects, permissions, reversibility, or behavior with existing index columns. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose and implementation in two short clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a relatively simple transformation tool, it has 6 parameters, no output schema, and no annotations. The description covers the core action but omits prerequisites, return values, and edge cases, making it incomplete for reliable autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for 4 of 6 parameters, but the description adds no parameter-level meaning. It does not compensate for the undocumented table and sessionId parameters, and the moderate schema coverage (67%) is not high enough to rely on schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('add a sequential index') and the specific resource ('Power Query Add Index Column'), and it distinguishes the tool by noting it appends Table.AddIndexColumn to the table's M query. This is a specific verb+resource combination that separates it from other add_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an index column is needed, but it provides no explicit guidance on when to use this tool over alternatives, nor does it mention any exclusions. There is clear context but no direct comparison to similar add_* operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_kpi_cardA
Add a PREMIUM KPI card: a white rounded panel (shadow) with an uppercase label, a big value, an optional coloured delta ('vs LY') and an optional sparkline - composed from proven primitives so it always renders. Far richer than add_card. Pass deltaMeasure for the comparison, and trendMeasure + dateTable/dateColumn for the sparkline.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| label | Yes | uppercase label, e.g. SALES | |
| table | Yes | table that owns the measures | |
| width | No | ||
| height | No | ||
| pageName | Yes | ||
| dateTable | No | date table for the sparkline axis | |
| dateColumn | No | date column for the sparkline axis | |
| trendTable | No | optional table for the sparkline trend measure (defaults to table) | |
| valueColor | No | colour for the big value | #16365C |
| accentColor | No | accent colour for the delta + sparkline | #1B8A4B |
| deltaMeasure | No | optional delta/comparison measure, e.g. Sales Growth % | |
| trendMeasure | No | optional trend measure for the sparkline | |
| valueMeasure | Yes | the headline measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds valuable behavioral context by stating the card is 'composed from proven primitives so it always renders', which is a meaningful reliability guarantee beyond the schema. It also describes the visual style, but does not disclose potential side effects (e.g., overwriting existing visuals), though the non-destructive nature seems intuitive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and efficient, using two sentences to convey purpose, visual details, differentiation, and parameter guidance. It is front-loaded with the main action and contains no fluff, earning a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 16 parameters, no annotations, and no output schema, the description covers the essentials: what it does, how to use key optional parameters, and how it differs from a sibling. It leaves color/position parameters to schema defaults, which is acceptable. Missing return-value description is mitigated by the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, so the baseline is 3. The description adds relational guidance for parameters: it links deltaMeasure to comparison and the trendMeasure + dateTable/dateColumn combination to sparkline. This clarifies how to configure the optional features, which is more than the schema's individual descriptions provide, elevating the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add a PREMIUM KPI card' with a detailed visual breakdown (white rounded panel, uppercase label, big value, optional delta and sparkline). It also distinguishes from a sibling tool by saying 'Far richer than add_card', making the specific resource and value proposition clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context by comparing to add_card and explaining how to enable optional features ('Pass deltaMeasure for the comparison, and trendMeasure + dateTable/dateColumn for the sparkline'). It doesn't explicitly say when not to use alternatives like add_sparkline, but the premium positioning implies a clear choice for richer KPI visuals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_matrixC
Add a matrix. rows/columns/values = JSON arrays of {table,field,kind}. Rows/columns are typically columns; values are measures.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| rows | Yes | JSON array of {table,field} for rows | |
| title | No | ||
| width | No | ||
| height | No | ||
| values | Yes | JSON array of {table,field,kind} for values (measures) | |
| columns | No | JSON array of {table,field} for columns (optional, '[]' for none) | [] |
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It only says 'Add a matrix' and describes the data structure, but does not disclose that this modifies the report, requires an open session, or any other behavioral consequences. No safety profile is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and every word adds value. It is concise without being overly terse, though some necessary detail is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no annotations, and no output schema, this description is insufficient. It explains only the data structure for rows/columns/values but omits how position, size, title, session, and page context work, leaving the agent without enough information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds semantic meaning for rows, columns, and values, clarifying they are JSON arrays of {table,field,kind} and that values are measures. However, schema coverage is only 30%, and the description does not explain the other seven parameters (position, size, title, etc.), leaving most parameters under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Add a matrix' clearly states the action and resource, and the clarification about rows/columns/values as JSON arrays of {table,field,kind} distinguishes it from generic visual-add siblings like add_table_visual or add_chart. However, it doesn't explicitly mention 'visual' or 'to the report', so it's not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you use this when you want to add a matrix with specified rows, columns, and values. But there is no explicit guidance on when to choose this over alternatives like add_table_visual or add_chart, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_measureA
Add a DAX measure to a table. Commits to the live model (persist with File > Save in Desktop). target=pbip: pass pbipFolder instead of sessionId to write the measure OFFLINE into a PBIP semantic model's TMDL (no engine; collision-checked, /// doc comments preserved).
| Name | Required | Description | Default |
|---|---|---|---|
| dax | No | DAX expression, e.g. SUM(Sales[Amount]) | |
| name | No | measure name | |
| table | No | home table for the measure | |
| sessionId | No | sessionId from connect_model (live engine; pass exactly one of sessionId / pbipFolder) | |
| pbipFolder | No | target=pbip: a PBIP <name>.SemanticModel / TMDL definition folder to edit OFFLINE (engine-free) | |
| description | No | description | |
| formatString | No | format string, e.g. "#,0" or "0.0%" | |
| displayFolder | No | display folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and delivers rich behavioral detail: commits to the live model, requires File > Save to persist, and the PBIP mode is engine-free, collision-checked, and preserves /// doc comments. This goes well beyond the schema and gives essential safety and side-effect information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences pack the core action, live-model commit caveat, and offline mode details with zero fluff. The structure is front-loaded with the primary purpose, making it easy to scan and digest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, no annotations, and no output schema. The description covers both operational modes, the persistence caveat, and key offline behaviors. It could mention potential errors or prerequisites (e.g., needing a connected model), but given schema richness, this is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by clarifying the sessionId vs. pbipFolder exclusivity and introduces extra behavioral context for the pbipFolder parameter (collision-checked, doc comments preserved). This enhances parameter understanding beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Add a DAX measure to a table' with a specific verb and resource, and it distinguishes the two operating modes (live vs. offline PBIP). This differentiates it from sibling tools like update_measure or delete_measure, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use each mode: live model with sessionId, or offline PBIP with pbipFolder. It states the persistence requirement for the live model ('persist with File > Save in Desktop') and the offline nature of the PBIP mode. However, it does not explicitly name alternative tools (e.g., update_measure for modifications), so it falls short of the top criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_moving_averageA
Generate a rolling moving-average measure over the last N periods. unit = day | month (default day).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | day | month (default day) | |
| table | Yes | home table | |
| periods | Yes | number of periods, e.g. 7 or 3 | |
| dateTable | Yes | date table | |
| sessionId | Yes | ||
| dateColumn | Yes | date column | |
| baseMeasure | Yes | base measure name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the primary action (generates a measure) but does not mention side effects, whether existing measures are overwritten, or prerequisites like having a valid date table. This is minimal but not outright missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a brief unit note. The main verb 'Generate' is front-loaded, and every word contributes. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations and no output schema, a single-sentence description is insufficient. It does not explain prerequisites, behavior on missing or partial periods, where the measure is added, or the expected overall outcome. The description is adequate for purpose but lacks depth for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the baseline is 3. The description adds slight meaning by clarifying the window via 'last N periods' and the unit default, but it does not elaborate on parameter semantics beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a rolling moving-average measure over the last N periods', which specifies a distinct operation (generating a specific measure type) and differentiates it from sibling time-intelligence tools like running totals or general time intelligence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a rolling moving-average is needed, but it does not state explicit when-to-use conditions or mention alternatives such as add_running_total or add_time_intelligence_measures. No exclusions or comparative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_m_parameterA
Create (or update) a Power Query parameter (the Manage Parameters entry) as a shared expression carrying the IsParameterQuery metadata. type = Text | Number | Logical | DateTime. Pass allowedValues (comma-separated) to restrict the parameter to a fixed list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the parameter name | |
| type | No | Text | Number | Logical | DateTime (default Text) | Text |
| sessionId | Yes | ||
| defaultValue | No | the default/current value (parsed per type) | |
| allowedValues | No | allowed values, comma-separated (omit for a free value) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the create-or-update semantics, the metadata attachment, and the effect of allowedValues. However, it doesn't mention return behavior, error conditions, or side effects beyond the parameter entry itself, which is a notable gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the primary action. No filler or redundant wording; every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description covers the core purpose, key behavioral aspects, and parameter constraints. It misses details like return values or prerequisites, but these are less critical given the tool's relatively low complexity and the schema's coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%), so the baseline is 3. The description adds slight meaning by explaining type options and allowedValues as a 'fixed list', but it doesn't add much beyond the schema descriptions. sessionId remains undocumented in both schema and description, though it's likely a common context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create (or update) a Power Query parameter' with specific details about the metadata it carries (IsParameterQuery). It distinguishes itself from siblings like set_shared_expression or define_udf by referencing the 'Manage Parameters entry' and the specific metadata flag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context on parameter types and the allowedValues restriction, implicitly signaling when this tool is appropriate. However, it does not explicitly name alternatives or state when NOT to use this tool, leaving some room for ambiguity among similar shared-expression tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_narrative_measureA
Auto-narrative: create a dynamic DAX text measure like 'Grated, Sliced drove +2.1% growth'. Names the top-N dimension members by contribution to the change (current - prior) and states the overall growth. Display it in a card (it updates live with slicers). Insight text without the native smart-narrative visual.
| Name | Required | Description | Default |
|---|---|---|---|
| topN | No | how many top contributors to name | |
| dimTable | Yes | dimension table, e.g. Dim_Product | |
| dimColumn | Yes | dimension column, e.g. Segment | |
| homeTable | Yes | home table for the new measure | |
| sessionId | Yes | ||
| measureName | Yes | the new measure's name, e.g. Sales Story | |
| priorMeasure | Yes | prior-period measure, e.g. Sales (Period) PY | |
| growthMeasure | Yes | overall growth % measure, e.g. Sales Growth % | |
| currentMeasure | Yes | current-period measure, e.g. Sales (Period) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains the measure's logic and live-update behavior, but doesn't address whether it overwrites an existing measure with the same name, required permissions, or other side effects. The 'create' verb makes the mutating nature clear, but more detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the verb and resource in the first phrase. Each sentence provides distinct value: what it creates, how it works, and where to use it. No redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity with 9 parameters and no output schema, the description covers the key functional behavior and usage context. It doesn't mention return values or prerequisites like existing measures, but the schema descriptions and the examples for each measure parameter fill in much of the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 89% of parameters individually, so baseline is 3. The description adds significant context by explaining that the top-N members are based on contribution to the change (current - prior), which clarifies the roles of currentMeasure, priorMeasure, dimColumn, and topN.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'create a dynamic DAX text measure' that names top-N contributors and states overall growth. It distinguishes this from the native smart-narrative visual and from generic add_measure by the auto-narrative behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use (for insight text in a card, as an alternative to the native visual) and mentions the live-update behavior with slicers. It doesn't explicitly list exclusions, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pageB
Add a report page. Returns its internal pageName (use that for adding visuals).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| displayName | Yes | page title shown on the tab | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does reveal an important behavior—returning the internal pageName for subsequent visual addition—which is valuable. Yet it omits other behavioral aspects such as side effects, required permissions, or behavior on duplicate display names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action. Every word is purposeful, and there is no redundant information. This is an model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too thin. It doesn't explain the session requirement or the optional width/height parameters, and leaves the agent guessing about prerequisites. The return value note is helpful but insufficient for a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only displayName has a description). The description adds no parameter information; it doesn't clarify reportSessionId, width, or height. It only references an output value, not inputs. With low schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's primary function with a specific verb and resource: 'Add a report page.' It also mentions the return value (internal pageName), which is useful. However, it does not explicitly differentiate from sibling page-creation tools like clone_page or create_pbir_page, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'use that for adding visuals' implies a follow-up workflow, which gives some usage context. However, it does not state when to prefer this tool over alternatives or mention any preconditions or exclusions. Thus, guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_page_filterA
Add a PAGE-level filter (filters every visual on that page). kind=categorical writes an 'is one of' values filter (pass values, comma-separated or a JSON array); any other kind writes a comparison/blank filter (op = gt|gte|lt|lte|eq|ne|isblank|isnotblank) on a column or measure (fieldKind=column|measure). valueType=int|decimal|string for the values.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | comparison op: gt|gte|lt|lte|eq|ne|isblank|isnotblank | |
| kind | No | categorical (values list) | comparison | categorical |
| page | Yes | page name or displayName | |
| field | Yes | field (column or measure) to filter on | |
| table | Yes | table that owns the filter field | |
| values | No | categorical values (comma-separated or JSON array); or a single comparison value | |
| fieldKind | No | for a comparison filter: column|measure | column |
| valueType | No | int|decimal|string | string |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the behavioral traits well: how the filter is constructed for categorical vs comparison modes, the operator list, the value formats (comma-separated or JSON array), and fieldKind/valueType options. It does not cover side effects like whether existing page filters are replaced or if filters are idempotent, but it gives a strong behavior overview for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with semicolons and parentheticals, but every clause adds value. It front-loads the purpose and then logically organizes the two modes. It's not the most concise, but it's appropriately sized for the tool's complexity and well-structured, earning a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and two distinct modes, the description covers both modes, key parameter interactions, and value formatting. It doesn't explain return values, but no output schema exists and the focus is on the action, not the response. It leaves out session-related details, but those are in the schema. Overall, it's contextually complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so baseline is 3. The description adds meaning beyond the schema by explaining the relationship between kind and values/op, clarifying the values format (comma-separated or JSON array), and defining the comparison op list. It also explains the fieldKind choices. These enrich the schema details, warranting a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: 'Add a PAGE-level filter (filters every visual on that page).' This clearly distinguishes it from sibling tools like add_visual_filter and add_report_filter by specifying the page-level scope. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to filter all visuals on a page) but does not explicitly mention alternatives or exclusion criteria. It explains the parameter-driven behavior (categorical vs comparison) but stops short of saying 'use add_visual_filter for visual-level filters.' The page-level scope is an implicit usage guideline, so it's a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_partitionA
Add an M partition to an existing table (e.g. to split a fact by year). mode = Import | DirectQuery | Dual | DirectLake (optional; engine default when omitted). The new partition has never refreshed - refresh before saving the .pbix.
| Name | Required | Description | Default |
|---|---|---|---|
| m | Yes | the partition's full M let-expression | |
| mode | No | Import | DirectQuery | Dual | DirectLake (optional) | |
| name | Yes | new partition name | |
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait: the new partition has never been refreshed and must be refreshed before saving the .pbix. This goes beyond the schema and helps the agent anticipate follow-up actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary purpose, followed by a useful mode note and refresh warning. It contains no redundant phrases and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and 5 parameters, the description covers the essential aspects: what it does, how the mode works, and a critical refresh warning. It lacks details on prerequisites or return values, but these are not central for a partition-add operation and the description is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60% (m, mode, name documented). The description adds contextual meaning for 'm' (M partition) and 'table' (existing table), and clarifies the mode's default engine behavior. However, it does not clarify 'sessionId' or provide additional semantics for other parameters, so it only partially compensates for undocumented fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'add' with a clear resource ('M partition') and provides an example ('split a fact by year'), making the tool's purpose immediately clear. It also distinguishes itself from sibling tools like set_partition_m, delete_partition, and refresh_partition by explicitly stating it adds a new partition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case (adding a partition to an existing table, e.g., splitting by year) and explains the mode parameter with its optionality and default engine behavior. It does not explicitly contrast with alternatives, but the context is sufficient for an agent to know 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.
add_pbir_bookmarkA
Add a bookmark to a PBIR report: a definition/bookmarks/.bookmark.json (explorationState with each visual's display.mode) plus a bookmarks.json index entry. hiddenVisuals = JSON array of the visual GUID names to hide; every other visual on the page is shown.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page GUID name or displayName the bookmark activates | |
| displayName | Yes | bookmark title | |
| hiddenVisuals | No | JSON array of visual GUID names to hide | [] |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the on-disk side effects (new bookmark.json file plus index entry) and the behavior of hiddenVisuals (hides listed visuals, shows all others). It lacks details on permissions or overwrite semantics, but the core effects are clearly explained, going beyond a simple 'add' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the purpose and then provides necessary behavioral detail. The structure is efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must cover essential context. It explains the operation and hiddenVisuals, but the purpose of pbirSessionId is not explained, and there's no mention of prerequisites (e.g., an open PBIR session). This is a moderate gap for a mutation tool with four parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so most parameters are described. The description adds meaning to hiddenVisuals by explaining that it's a JSON array of visual GUIDs to hide while showing all others. However, pbirSessionId remains undocumented in both schema and description, leaving a gap for a required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add a bookmark to a PBIR report'. It specifies the exact file structure (definition/bookmarks/<guid>.bookmark.json and bookmarks.json index entry), which distinguishes it from generic bookmark tools like add_bookmark and aligns with its PBIR-specific name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for PBIR reports through the name and first phrase, but it doesn't explicitly contrast with sibling tools like add_bookmark or set_pbir_bookmark. No exclusions or alternative recommendations are provided, so the guidance is merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pbir_filterA
Add a filter to a PBIR report at scope = report | page | visual, written into the PBIR filterConfig.filters array via the shared filter builders. kind=categorical|in|values -> an is-one-of values list (pass values); else a comparison/blank filter (op=gt|gte|lt|lte|eq|ne|isblank|isnotblank). fieldKind=column|measure. valueType=string|int|double|decimal|bool|datetime|color drives the literal type suffix.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | gt|gte|lt|lte|eq|ne|isblank|isnotblank (comparison form) | |
| kind | No | categorical|in|values for a values list; comparison|advanced (or empty) for a comparison/blank filter | comparison |
| page | No | page GUID name or displayName (required for page/visual scope) | |
| field | Yes | ||
| scope | Yes | report | page | visual | |
| table | Yes | ||
| values | No | JSON array of string values (for a categorical list, or a single value for a comparison) | |
| visual | No | visual GUID name (required for visual scope) | |
| fieldKind | No | column|measure (for the comparison form) | column |
| valueType | No | string|int|double|decimal|bool|datetime|color | string |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does include useful behavioral details: it writes to the filterConfig.filters array, uses shared filter builders, and explains that kind=categorical|in|values yields an is-one-of list while other kinds produce comparison/blank filters. However, it omits side effects like whether existing filters are replaced or what happens if a session is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, tightly packed with essential information. The first sentence gives the purpose and mechanism; the second details parameter-driven behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no output schema, no annotations), the description covers core filter-building logic well but lacks context on session requirements (pbirSessionId), return behavior, and any potential side effects. It is complete enough for the primary action but leaves gaps around operational prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 73%, so the schema already documents most parameters. The description adds valuable cross-parameter semantics: the relationship between kind and values (is-one-of vs comparison) and how valueType drives the literal suffix. This goes beyond the schema's isolated field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the resource 'a filter to a PBIR report' with explicit scope options (report|page|visual). It differentiates from siblings by specifying PBIR and the config array, though it does not name alternative tools explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the many sibling filter tools (e.g., add_report_filter, add_visual_filter, add_page_filter). The context is implied by 'PBIR report' but there are no exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pbir_visualA
Add a visual to a PBIR page: a fresh GUID folder definition/pages//visuals//visual.json. The query (projections + prototypeQuery) is built by the shared query builder. fields = JSON array of {role,table,field,kind} (kind=column|measure; role=Category|Y|Values|Rows|Columns|...). Returns the new visual GUID name.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| page | Yes | page GUID name or displayName | |
| title | No | ||
| width | No | ||
| fields | No | JSON array of {role,table,field,kind} | [] |
| height | No | ||
| visualType | Yes | visual type id, e.g. clusteredColumnChart | tableEx | card | slicer | |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool creates a 'fresh GUID folder' (new unique visual, not overwriting) and returns the GUID name, which is useful. It also mentions the query is built by a shared builder. However, it does not state permissions, validation behavior, or potential side effects on the page layout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences deliver purpose, structural path, query-building behavior, field format, and return value without unnecessary verbosity. Information is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and no output schema, but the description explains the primary behavior (creating a visual, building query, returning GUID) and the most complex parameter (`fields`). It omits explicit guidance on positional/sizing parameters, but those are simple and have defaults, so the context is largely sufficient for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description compensates well for the `fields` parameter by detailing its JSON structure and enums (role, table, field, kind). It also notes `page` usage via the path. However, it leaves `x`, `y`, `width`, `height`, `title`, and `pbirSessionId` unexplained beyond their names/defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a visual to a PBIR page and specifies the exact folder structure created (`pages/<page>/visuals/<guid>/visual.json`). This distinguishes it from generic visual tools (e.g., `add_visual`) via the PBIR-specific artifact and shared query builder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is to add visuals to PBIR pages, and the mention of the shared query builder suggests automated query construction. However, it does not explicitly state when to prefer this over sibling tools like `add_visual` or `add_chart`, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_percent_of_parentA
Generate a percent-of-parent measure over a hierarchy. hierarchyColumns is a comma-separated list of Table[Column] from top level to leaf, e.g. Product[Category], Product[Subcategory], Product[Product].
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | home table | |
| sessionId | Yes | ||
| baseMeasure | Yes | base measure name | |
| hierarchyColumns | Yes | comma-separated Table[Column] hierarchy levels, top to leaf |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says 'Generate' but does not state whether this mutates the model, creates a new measure, or returns a result. It lacks details on side effects, reversibility, permissions, or error behavior, which is critical for a likely mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second explains the key parameter with an example. It is front-loaded, concise, and contains no redundant words or filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description provides adequate input semantics but omits behavioral context such as where the measure is created, naming conventions, overwrite behavior, or what output to expect. It is not severely incomplete, but users/agents get limited guidance on the full impact of invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (sessionId undocumented). The description adds a concrete example for hierarchyColumns ('Product[Category], Product[Subcategory], Product[Product]') that clarifies the expected syntax beyond the schema's generic 'comma-separated Table[Column]' description. This is a meaningful addition, though other parameters (table, baseMeasure) receive no extra explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a percent-of-parent measure over a hierarchy.' It uses a specific verb and resource, and the 'percent-of-parent' concept distinguishes it from sibling tools like add_percent_of_total. The example hierarchy further reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for generating percent-of-parent measures over hierarchies, but it does not explicitly contrast with alternatives such as add_percent_of_total or state when not to use this tool. No when/when-not guidance is provided, only the general context of hierarchy-based calculations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_percent_of_totalB
Generate a percent-of-total measure for a base measure over a dimension. scope = ALL | ALLSELECTED | ALLEXCEPT (default ALLSELECTED).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ALL | ALLSELECTED | ALLEXCEPT (default ALLSELECTED) | |
| table | Yes | home table | |
| dimension | Yes | dimension column as Table[Column] | |
| sessionId | Yes | ||
| baseMeasure | Yes | base measure name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden for behavioral disclosure. It mentions 'Generate' implying a mutation, but does not state side effects, reversibility, permissions, or return values. It only repeats the scope options which are already in the parameter schema, adding little value beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main purpose. Every sentence earns its place with minimal redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with no annotations and no output schema. The description fails to mention what is returned, any prerequisites, or side effects. It is too sparse for a tool that modifies the model, leaving significant gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 80% of parameters with descriptions (table, baseMeasure, dimension, scope). The description adds no extra parameter meaning beyond restating the scope options already present in the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Generate a percent-of-total measure for a base measure over a dimension.' This is a specific verb+resource and distinguishes it from similar siblings like add_percent_of_parent or add_measure by explicitly mentioning percent-of-total and the dimension context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on what the tool does but does not explicitly state when to use it versus alternatives. It does not mention exclusions or provide alternative tool names. The purpose is clear enough to imply usage, but there is no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_perspectiveA
Create a perspective - a named, focused view that shows only a chosen subset of tables/columns/measures (e.g. a 'Finance' or 'Sales' lens over a large model). Add members with add_to_perspective.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that a perspective is created and shows a subset, but does not disclose side effects, whether it is a mutating operation that changes the model, what the created perspective initially contains, or if it persists. It adds some workflow context but lacks behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. It front-loads the action, provides a concrete example, and immediately points to the companion tool for the next step.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter create tool, the description covers the purpose, gives an example, and explains how to populate the perspective via add_to_perspective. It lacks mention of return values or deletion, but no output schema is provided and the workflow is clear enough for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It indirectly clarifies the 'name' parameter by calling the perspective 'named', but it does not explain 'sessionId' at all. Since name is the key semantic parameter and the description gives some context, it is minimally acceptable but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Create') and resource ('perspective'), and differentiates it from related tools by explaining it creates a named, focused view over a subset of tables/columns/measures. It also distinguishes from sibling add_to_perspective by directing users there for adding members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells when to use the tool (to create a perspective) and directs to add_to_perspective for adding members, which is a clear alternative. However, it does not explicitly say when not to use it (e.g., if only adding members is needed) or mention prerequisites like an open session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_query_groupA
Create a query group - a display folder for queries (shared expressions / partitions) in the Power Query Queries pane, e.g. 'Staging' or 'Parameters'. Assign objects to it with set_object_query_group.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | folder name/path, e.g. 'Staging' or 'Data\\Raw' | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that this tool creates a display folder, with examples including nested paths like 'Data\\Raw', which implies path support. However, it does not mention permissions, idempotency, error behavior if the folder already exists, or any side effects beyond creation. This is a moderate level of transparency for a simple create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and includes practical examples and a cross-reference to the follow-up tool. Every sentence earns its place with no fluff or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with no output schema and no annotations, the description provides sufficient context: it defines the resource, gives examples, and indicates the next step in the workflow. The only missing elements are potential edge-case behaviors like duplicate folder handling or permissions, but these are not critical for a tool with this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context for the 'folder' parameter by explaining it as a display folder and providing examples of folder names and paths, reinforcing the schema's description. However, it does not explain 'sessionId' at all, which is also absent from the schema's description (50% coverage). Since sessionId is likely a generic session identifier used across tools, the lack of explanation is a minor gap, but the description could have compensated more fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') with a clear resource ('query group') and defines it as a display folder for queries in the Power Query Queries pane. It provides concrete examples ('Staging' or 'Parameters') and explicitly distinguishes itself from the related sibling tool set_object_query_group, which is for assigning objects rather than creating the group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this when you need to create a display folder for organizing queries, and then assign queries to it with set_object_query_group. It clearly mentions the companion tool and gives a workflow, but does not explicitly state when not to use it or list exceptions, so it stops short of a full when/when-not explanation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_rank_measureA
Generate a RANKX measure with ISINSCOPE + ALLSELECTED + blank guard. order = ASC | DESC (default DESC); ties = SKIP | DENSE (default SKIP). withinGroup (Table[Column]) ranks inside each group.
| Name | Required | Description | Default |
|---|---|---|---|
| ties | No | SKIP | DENSE (default SKIP) | SKIP |
| order | No | ASC | DESC (default DESC) | DESC |
| table | Yes | home table | |
| dimension | Yes | dimension column as Table[Column] | |
| sessionId | Yes | ||
| baseMeasure | Yes | base measure name | |
| withinGroup | No | group column as Table[Column] for within-group ranking (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the internal DAX pattern (ISINSCOPE, ALLSELECTED, blank guard) and option semantics, but it does not explain whether the tool creates a new measure in the model, what the new measure is named, or what the return value is. This leaves key behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, two sentences, and front-loaded with the core purpose and pattern. Every sentence provides useful technical detail without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool uses 7 parameters and has no output schema, so the description must explain both inputs and expected outcomes. While it covers the input options and the DAX pattern, it fails to specify the resulting measure's name, return value, or side effects, leaving the agent without critical operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents most parameters. The description adds minimal value beyond that, mainly restating order/ties/withinGroup semantics already present in the schema. It does not clarify the purpose of sessionId or how baseMeasure and table relate to the generated measure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Generate a RANKX measure') and the resource/scope (with ISINSCOPE + ALLSELECTED + blank guard). It distinguishes itself from generic siblings like add_measure by naming the exact DAX pattern and options like order, ties, and withinGroup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating ranking measures but does not explicitly state when to use it over alternatives like add_dynamic_topn or add_running_total. No exclusions or alternative tool names are mentioned, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_relationshipA
Create a relationship between two columns. Defaults to a star-schema Many->One (from = many/fact side, to = one/dimension side), but the cardinality is overridable to support 1:1, M:1, 1:M and M:M. fromCardinality/toCardinality = One | Many. crossFilteringBehavior = OneDirection | BothDirections | Automatic (overrides the bothDirections flag). securityFilteringBehavior = OneDirection | BothDirections | None. joinOnDateBehavior = DateAndTime | DatePartOnly.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | make the relationship active (default true) | |
| toTable | Yes | to (one/dimension) side table | |
| toColumn | Yes | to-side column | |
| fromTable | Yes | from (many/fact) side table | |
| sessionId | Yes | ||
| fromColumn | Yes | from-side column | |
| toCardinality | No | to-side cardinality: One | Many (default One) | |
| bothDirections | No | bi-directional cross filter shortcut (default false = single direction). crossFilteringBehavior overrides this. | |
| fromCardinality | No | from-side cardinality: One | Many (default Many) | |
| joinOnDateBehavior | No | DateAndTime | DatePartOnly (for date-based joins) | |
| crossFilteringBehavior | No | OneDirection | BothDirections | Automatic (overrides bothDirections) | |
| securityFilteringBehavior | No | OneDirection | BothDirections | None |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses useful behavioral details like default cardinality, the meaning of from/to sides, and flag precedence (crossFilteringBehavior overrides bothDirections). However, it does not mention side effects, prerequisites, validation, or failure behavior, which are significant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, covering all key behaviors in three sentences. It front-loads the core purpose and then logically details the overridable options. No fluff, though the lack of bullet points makes it a bit of a text wall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (12 params, no output schema, no annotations), the description covers the configuration options well but lacks operational context. It does not mention return values, error handling, or whether it validates table/column existence. This is a notable gap for a model-mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 92%, so the baseline is 3. The description adds value by explaining the semantic mapping of from=many/fact and to=one/dimension, and clarifies the enum values for crossFiltering, securityFiltering, and joinOnDate. This goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a relationship between two columns' with a specific verb and resource. It also clarifies the from/to sides as many/fact and one/dimension, distinguishing it from sibling tools like update_relationship and delete_relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on the default star-schema M:1 and explains when to override cardinality and behavior flags. However, it does not explicitly state when to use this tool over alternatives like infer_relationships or update_relationship, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_relative_date_filterA
Add a RELATIVE DATE filter at a scope=visual|page|report on a date column: mode=Last|Next|This, count units of unit=Days|Weeks|Months|Years. includeCurrent includes the current period; calendar=true aligns to calendar boundaries (vs a rolling window). For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Last | Next | This | |
| page | No | page (scope=visual|page) | |
| unit | Yes | Days | Weeks | Months | Years | |
| count | Yes | number of units | |
| field | Yes | the date column | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the date column | |
| visual | No | visual (scope=visual) | |
| calendar | No | calendar-aligned (vs rolling) | |
| includeCurrent | No | include the current period | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains calendar semantics and scope requirements, but does not state whether the filter is appended or replaces existing filters, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, packing all essential information into two sentences with no filler words. It is front-loaded with the core purpose and structured with clear separators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters and no annotations, the description provides adequate context on how to apply filters across scopes. It could be more complete by differentiating from the fixed anchor sibling, but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (91%), giving a baseline of 3. The description adds value by clarifying scope-specific parameter requirements and defining calendar vs rolling behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: adding a relative date filter with explicit scope, mode, count, and unit parameters. It distinguishes itself from related siblings by specifying 'RELATIVE DATE' and the scope options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidelines on which parameters to pass for each scope (visual requires page+visual; page requires page). However, it does not explicitly compare with alternatives like add_relative_time_filter or add_fixed_anchor_relative_date_filter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_relative_time_filterA
Add a RELATIVE TIME filter at a scope=visual|page|report on a datetime column: mode=Last|Next|This, count units of unit=Hours|Minutes|Seconds. includeCurrent includes the current period. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Last | Next | This | |
| page | No | page (scope=visual|page) | |
| unit | Yes | Hours | Minutes | Seconds | |
| count | Yes | number of units | |
| field | Yes | the datetime column | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the datetime column | |
| visual | No | visual (scope=visual) | |
| includeCurrent | No | include the current period | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explains includeCurrent semantics and scope-specific parameter requirements, but does not disclose whether the filter replaces existing filters, is additive, or has other side effects. Some behavioral context is present but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are both functional and efficient. The first front-loads the purpose and core values; the second provides parameter-scope relationships. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 10-parameter complexity and no output schema, the description covers the essential behaviors (scope, mode, unit, includeCurrent, page/visual requirements). It lacks explicit guidance for scope=report (no page needed) and error conditions, but overall it is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (90%), but the description adds meaningful semantics: enumerates allowed values for scope, mode, and unit, clarifies the role of includeCurrent, and explains the page/visual dependency for scope=visual. This goes beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add a RELATIVE TIME filter at a scope=visual|page|report on a datetime column' with mode, count, and unit specifics. This distinguishes it from sibling tools like add_relative_date_filter (date vs. time) and other filter tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance for scope variations: 'For scope=visual pass page+visual; scope=page pass page.' It clearly defines when to use which parameter combination, but does not explicitly mention alternatives (e.g., use add_relative_date_filter for date-based filters) or list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_report_filterA
Add a REPORT-level filter (filters every page in the report). kind=categorical writes an 'is one of' values filter (pass values, comma-separated or a JSON array); any other kind writes a comparison/blank filter (op = gt|gte|lt|lte|eq|ne|isblank|isnotblank) on a column or measure (fieldKind=column|measure). valueType=int|decimal|string.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | comparison op: gt|gte|lt|lte|eq|ne|isblank|isnotblank | |
| kind | No | categorical (values list) | comparison | categorical |
| field | Yes | field (column or measure) to filter on | |
| table | Yes | table that owns the filter field | |
| values | No | categorical values (comma-separated or JSON array); or a single comparison value | |
| fieldKind | No | for a comparison filter: column|measure | column |
| valueType | No | int|decimal|string | string |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses important behavioral differences (categorical vs. comparison/blank filters), allowed operators, and field/value type handling. It does not mention side effects or return values, but the described behavior is detailed and actionable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense, with no filler. It front-loads the primary purpose and then packs conditional logic and parameter details into three precise sentences, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 8 parameters and no output schema, the description adequately covers the core filter-building logic and parameter relationships. It lacks explicit guidance on when report-level filtering is preferred over page/visual filters, but overall it provides enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (88%), so baseline is 3. The description adds meaningful semantics beyond the schema by explaining how 'kind' toggles behavior, what operators are valid, and how valueType and fieldKind are used. This helps the agent construct correct parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a 'REPORT-level filter (filters every page in the report),' specifying the verb, resource, and scope. This distinguishes it from sibling filter tools like add_page_filter or add_visual_filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context that this filter applies report-wide, which implies the appropriate scenario. However, it does not explicitly name alternatives or say when NOT to use this tool, though the report-level emphasis is enough guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_report_measureA
Add a REPORT-LEVEL measure (a DAX measure stored in the report, not the model - handy when you cannot edit the model). table = the host table it attaches to. Written into layout.config.modelExtensions (legacy best-known shape; confirm in Desktop). Re-adding the same name updates it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | measure name | |
| table | Yes | host table the measure attaches to | |
| formatString | No | optional format string, e.g. "#,0" or "0.0%" | |
| daxExpression | Yes | DAX expression | |
| displayFolder | No | optional display folder | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the storage location (layout.config.modelExtensions), calls out the legacy best-known shape with a recommendation to confirm in Desktop, and states the upsert-like behavior (re-adding updates). This is valuable side-effect information beyond a simple 'create' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value: purpose, storage detail, and update semantics. It is front-loaded with the core concept, avoiding filler, and covers essential caveats without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the key behavioral aspects: storage location, legacy uncertainty, update behavior, and usage context. It omits error/prerequisite details (e.g., open report session, invalid table), but the combination of schema and description is adequate for a focused creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), and the description adds a brief clarification for the table parameter ('host table it attaches to'), but that largely mirrors the schema. It doesn't enrich understanding of daxExpression, formatString, or displayFolder beyond their existing descriptions. Baseline 3 is appropriate when the schema already carries most of the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a REPORT-LEVEL measure, explicitly contrasting with model measures via 'not the model'. It also names the resource (DAX measure) and host table, making its purpose unambiguous and distinct from siblings like add_measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: 'handy when you cannot edit the model' indicates when to prefer this tool. It also notes that re-adding the same name updates it, which helps set expectations. No explicit exclusions or alternative tool names are given, but the model-vs-report distinction serves as a strong differentiator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_roleA
Create a security role. modelPermission controls what the role can do model-wide: Read (query only), ReadRefresh (query + refresh), Refresh (refresh only), Administrator (full control), or None. Then attach row-level filters with set_rls and members with add_role_member.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sessionId | Yes | ||
| modelPermission | No | Read | ReadRefresh | Refresh | Administrator | None (default Read) | Read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds meaningful context by explaining what each modelPermission value permits (Read=query only, ReadRefresh=query+refresh, etc.) and clarifies that row-level filters and members are handled elsewhere. It does not disclose idempotency, required permissions, or return behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. Every sentence earns its place: the first states it, the second explains the most important parameter and gives next-step guidance. No verbosity or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-param creation tool, the description covers purpose, permission semantics, and the role-creation workflow. It doesn't mention return values or error conditions, but given the tool's simplicity and the explicit next-step pointers, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only modelPermission has a description, and it's a bare list). The description compensates by providing semantic explanations for each permission value. The remaining params (name, sessionId) are self-explanatory or context-dependent, so the tool's key parameter is well-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a security role', a specific verb+resource statement. It clearly distinguishes this from sibling tools like set_rls and add_role_member by positioning it as the first step in role creation, while those tools handle filters and members respectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit sequence guidance: after creating the role, use set_rls for row-level filters and add_role_member for members. This implies when to use this tool, though it doesn't mention alternatives like set_role_permission for updating an existing role, which would be useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_role_memberA
Add a member to a role. By default a Windows member (e.g. DOMAIN\\user or user@org.com); pass provider (e.g. AzureAD) to add an external/cloud identity member instead.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | role name | |
| provider | No | external identity provider (e.g. AzureAD); omit for a Windows member | |
| sessionId | Yes | ||
| memberName | Yes | member identity, e.g. user@org.com or DOMAIN\\user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses important behavioral nuance: the default member type is Windows and how to switch to external/cloud identity via provider. This goes beyond the schema by explaining the default behavior. It does not mention potential errors or permissions, but for a simple add operation this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that front-loads the core action and then adds necessary nuance about member types. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple add operation with 4 parameters and no output schema, the description explains the core purpose and the key variable behavior (member type). It omits sessionId details, but that is likely a standard parameter. The absence of error handling details is not critical for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (sessionId lacks description). The description clarifies the default vs. external member behavior, which complements the schema's parameter descriptions but does not add much beyond them. It does not explain sessionId, so the description only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Add a member to a role.' It distinguishes from sibling tools like 'add_role' (creating a role) and 'remove_role_member' by specifying the exact action of adding a member. The additional detail about member types further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to add members to roles) and gives specific guidance on parameter usage: use Windows member by default, pass a provider for external identities. It does not explicitly mention alternatives or exclusions, but the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_running_totalA
Generate a running-total measure. Provide dateTable+dateColumn for a date cumulative, OR sortColumn (Table[Column]) for a generic / Pareto running total.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | home table | |
| dateTable | No | date table (omit when using sortColumn) | |
| sessionId | Yes | ||
| dateColumn | No | date column (omit when using sortColumn) | |
| sortColumn | No | generic sort column as Table[Column] (alternative to date) | |
| baseMeasure | Yes | base measure name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It implies a write operation (adds a measure) but does not state side effects, return values, or whether it modifies the model irreversibly. The description only covers input modes, not the behavioral impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose and the two usage patterns with no wasted words. The first sentence states the purpose, the second explains the alternatives, making it front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main input distinction but omits important context such as the role of baseMeasure (the measure to accumulate), the need for a home table, and expected return value (e.g., the new measure's name). Given the tool's moderate complexity and lack of output schema, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for 83% of parameters, but the description adds crucial semantics by explaining the alternative relationship between dateTable/dateColumn and sortColumn, and what each mode produces. This goes beyond the schema's simple 'omit when using sortColumn' hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Generate a running-total measure' with a clear verb and resource, and outlines two distinct modes (date cumulative vs generic/Pareto). This distinguishes it from other measure-creation tools like add_rank_measure or add_moving_average, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditional guidance: 'Provide dateTable+dateColumn for a date cumulative, OR sortColumn ... for a generic / Pareto running total.' This tells the user which parameters to use based on the desired output. However, it does not explicitly mention when not to use this tool or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_semiadditive_measuresA
Generate semi-additive balance measures (opening/closing balance, last/first non-blank) over a value column and date column - the standard inventory / account-balance pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | home table | |
| sessionId | Yes | ||
| dateColumn | Yes | date column as Table[Column] | |
| valueColumn | Yes | value column as Table[Column] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It explains what measures are generated but does not mention whether the measures are persisted to the model, any prerequisites (e.g., a date table), permissions, or reversibility. This is a significant gap for a mutation tool that presumably alters the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that lists the measure types and the pattern. Every phrase adds value, the core action is front-loaded, and there is zero wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality well, but for a mutation tool with no annotations and no output schema, it would benefit from explaining what the generated measures are named, where they are created (e.g., in the target table), and any prerequisites. It is adequate for a simple generation tool but leaves out important operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the schema: it confirms valueColumn and dateColumn are the basis for the measures, but the schema already provides descriptions for those. It does not clarify sessionId or table usage. With 75% schema coverage, the description neither fully compensates for the undocumented sessionId nor adds significant new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates semi-additive balance measures with specific types (opening/closing balance, last/first non-blank) over value and date columns. It names a specific verb and resource, and the 'standard inventory / account-balance pattern' distinguishes it from general time-intelligence tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case via 'standard inventory / account-balance pattern,' giving clear context for when to apply it. However, it does not explicitly mention alternatives like add_time_intelligence_measures or state when not to use this tool, leaving exclusion guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_shapeA
Add a decorative rounded rectangle panel. Place it BEHIND a group of visuals (lower z) to visually group them and add depth - the panel technique for sectioning a report.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| fill | No | hex fill e.g. #FFFFFF (null = no fill) | #FFFFFF |
| width | Yes | ||
| height | Yes | ||
| shadow | No | drop shadow | |
| pageName | Yes | ||
| lineColor | No | hex outline colour e.g. #E6E9EF (null = none) | |
| cornerRadius | No | corner radius in px | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context by noting the shape is 'decorative' and should be placed at a 'lower z' to sit behind visuals. However, with no annotations, missing details about mutability, permissions, or side effects leave gaps. The safety profile is not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action verb 'Add', and wastes no words. It efficiently conveys purpose and usage without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and no annotations, the description should provide more guidance on how to use the tool. It covers the 'why' but not the 'how'—required parameters like coordinates and session context are unexplained, making it incomplete for an agent to invoke correctly without additional reasoning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, and the description does not compensate. It never mentions x/y/width/height, reportSessionId, or pageName, leaving half of the parameters without guidance. The 'rounded rectangle' wording implies cornerRadius but that is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a 'decorative rounded rectangle panel' and explicitly positions it as a 'panel technique' for visually grouping visuals. This specific verb+resource differentiates it from other add_* tools like add_visual or add_textbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use: place behind visuals to group them and add depth. It doesn't explicitly name alternatives or exclusions, but the intended scenario (sectioning a report) is well-defined and distinct from other shape/visual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_slicerA
Add a slicer for one column or measure. Defaults to a compact Dropdown (what users almost always want); pass mode=List for the classic vertical list, Between/Single for numeric/date ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| kind | No | column|measure | column |
| mode | No | Dropdown|List|Between|Single | Dropdown |
| field | Yes | ||
| table | Yes | ||
| title | No | ||
| width | No | ||
| height | No | ||
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits (defaults to Dropdown, mode changes the visual style) but does not mention side effects, response behavior, or prerequisites like an open report session. It is honest but incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no redundancy. Every clause adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters and no output schema, the description covers the primary behavior and mode options but omits return value, error conditions, and explicit guidance for other parameters. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover only 18% of parameters (kind and mode). The description fills this gap for the most behaviorally significant parameters: it explains mode values (Dropdown, List, Between, Single) and distinguishes column vs measure. It does not explain x/y, width/height, or title, but these have sensible defaults and are less critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a slicer') with a specific object ('one column or measure'). It also explains the default mode and how to request alternatives, distinguishing it from sibling tools that manage slicers rather than create them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use different modes (Dropdown is default and recommended, List for classic vertical list, Between/Single for ranges) but does not explicitly compare this tool to sibling slicer tools like set_slicer_selection or fix_slicer_single_select. No exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_source_stepA
Seed or replace a table's data-source step with a generated connector expression (downstream steps preserved). connector = sql | oracle | mysql | postgresql | db2 | web | odata | excel | csv | json | xml | pdf | html | analysisservices | odbc | oledb | folder | sharepoint | azureblob | azuretable | datalake | deltalake | cdm. params is comma-separated key=value pairs; required keys per connector: sql/oracle/mysql/postgresql/db2 -> server, database (optional query); analysisservices -> server, database (optional query = MDX/DAX); web -> url (optional relativePath, query as a raw M record e.g. [#"$top"="10"], headers as a raw M record, content for a POST binary, apiKeyName, manualStatusHandling e.g. 404,500); odata -> url (optional filter/select/top/orderby folded into $filter/$select/$top/$orderby); excel/pdf -> path; csv -> path (optional delimiter, columns); json/xml/html -> path OR url; odbc -> connectionString or dsn (optional query); oledb -> connectionString (optional query); folder -> path; sharepoint -> url; azureblob/azuretable -> account; datalake/deltalake/cdm -> url. Static base URL + relativePath/query is the refresh-safe web pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| params | Yes | connector parameters as key=value, comma-separated (see description) | |
| connector | Yes | the connector kind (see description for the full list) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden of behavioral disclosure. It explicitly states 'downstream steps preserved' and the dual seed-or-replace behavior, which are non-obvious and valuable. It does not cover potential side effects like validation failures or reversibility, but the core mutation behavior is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but logically structured by connector type. It front-loads the core purpose and then procedurally lists each connector's parameters. Every sentence in the connector list is necessary given the tool's complexity, though it is dense and could benefit from visual formatting in an ideal scenario.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of annotations or output schema, the description covers the input space thoroughly, listing all connector kinds and their specific parameter requirements. It also includes a best-practice note for refresh-safe usage. It lacks an example and does not explain return values, but the core behavior and parameters are adequately addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides extensive parameter semantics beyond the schema. For each connector, it lists required and optional keys (e.g., 'sql/oracle/mysql/postgresql/db2 -> server, database (optional query)'), and clarifies the params format as 'comma-separated key=value pairs.' This fully compensates for the schema's minimal descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Seed or replace a table's data-source step with a generated connector expression (downstream steps preserved).' This is a specific verb-resource pair that distinguishes it from sibling tools like set_data_source or rewrite_connection_string, and the note about preserving downstream steps further differentiates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by defining its action (seeding/replacing the data-source step) and provides a concrete usage guideline with the 'Static base URL + relativePath/query is the refresh-safe web pattern' tip. However, it does not explicitly contrast with alternatives or state when NOT to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sparklineA
Add a NATIVE SPARKLINE column to a table/matrix: a per-row mini line driven by a value measure across a category (e.g. trend over month). Writes objects.sparkline with the line measure + category bindings. valueTable/valueMeasure = the line measure; categoryTable/categoryField = the axis.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | the table/matrix visual name | |
| lineColor | No | optional line colour hex | |
| valueTable | Yes | value measure's table | |
| valueMeasure | Yes | value measure name | |
| categoryField | Yes | category (axis) field | |
| categoryTable | Yes | category (axis) table | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that the tool 'Writes objects.sparkline with the line measure + category bindings', which is a meaningful behavioral detail about what gets modified. However, it does not mention potential side effects, overwriting behavior, or prerequisites (e.g., whether an existing sparkline is replaced), leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and purpose. Every sentence contributes value, with no filler or redundant restatement of the tool name. It efficiently conveys the core mechanism and parameter roles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential behavior, target visual type, and key parameters. It explains what the sparkline represents and how it is bound, which is sufficient for an agent to select and invoke the tool. Some minor missing details like the optional lineColor default are covered by the schema, so the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (88%), but the description adds domain-specific meaning by clarifying that 'valueTable/valueMeasure = the line measure' and 'categoryTable/categoryField = the axis'. This goes beyond the raw schema field names and helps an agent understand the roles of the parameters in the sparkline context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: 'Add a NATIVE SPARKLINE column to a table/matrix'. It explains what a sparkline is ('a per-row mini line driven by a value measure across a category') and distinguishes from similar sibling tools like add_svg_sparkline by emphasizing 'NATIVE'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for adding a native sparkline to a table/matrix, with a typical use case ('trend over month'). It does not explicitly name alternative tools, but the 'NATIVE' qualifier implies when this tool is appropriate, giving the agent enough context to distinguish it from SVG-based sparkline tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_svg_chipA
Author an SVG CHIP/PILL measure (DataCategory=ImageUrl): an auto-sizing rounded label whose width fits the text. textMeasure supplies the label; colorMeasure (optional, returns a hex) supplies the fill, else defaultFill.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| table | Yes | ||
| height | No | svg height in px | |
| sessionId | Yes | ||
| defaultFill | No | default fill hex when no colorMeasure | #2E86AB |
| textMeasure | Yes | a measure returning the chip's text | |
| colorMeasure | No | a measure returning the chip's fill hex (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: auto-sizing width, textMeasure provides the label, optional colorMeasure supplies fill, defaultFill fallback. This goes beyond the schema by explaining how the visual behaves. However, it omits side effects like overwriting or error handling, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence that front-loads the purpose and packs in the essential parameter mapping. Every clause adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 params, no annotations, and no output schema. The description explains the visual output but omits the creation context (adding a measure to the model), potential conflicts, return behavior, and prerequisites. It's insufficient for an agent to fully understand what happens when the tool is invoked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%. The description reiterates the schema descriptions for textMeasure/colorMeasure/defaultFill but provides no help for required params like name, table, and sessionId. It doesn't explain their roles, so it doesn't compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Author an SVG CHIP/PILL measure,' which uses a specific verb and resource, and clarifies the DataCategory. It contrasts with sibling SVG tools (sparkline, gauge, etc.) by explicitly naming 'CHIP/PILL' and the auto-sizing label behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (creating a chip/pill label) and explains the text/color parameters, but it does not explicitly state when to prefer this over alternative SVG tools or any prerequisites/exclusions. It provides context but not explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_svg_databarA
Author an SVG DATA BAR measure (DataCategory=ImageUrl) that renders an in-cell bar scaled to value/max. Drop it into a table/matrix/card. valueMeasure/maxMeasure are measure names; pass maxMeasure for a comparable scale. negativeFill colours bars below zero; align=left|right.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | bar colour hex, e.g. #2E86AB | #2E86AB |
| name | Yes | the new measure's name | |
| align | No | left | right (right grows leftwards) | left |
| table | Yes | home table for the new measure | |
| width | No | svg width in px | |
| height | No | svg height in px | |
| sessionId | Yes | ||
| maxMeasure | No | a measure giving the bar's max/100% (optional - else |value|) | |
| negativeFill | No | colour for negative bars (optional) | |
| valueMeasure | Yes | the value measure, e.g. Total Sales |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses behavior such as scaling to value/max, negative fill coloring, and align direction. However, it does not mention potential side effects like overwriting an existing measure, permission requirements, or whether the measure is immediately visible in the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and purposeful, with four short sentences. Each sentence contributes essential information: what the tool creates, where to use it, how to configure scaling, and optional parameter behaviors. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 10-parameter tool with no output schema, the description covers the core purpose, placement, and key parameter semantics. It doesn't explain every parameter (e.g., width, height, fill) but relies on the schema's 90% coverage. The essential operational context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 90%, so the baseline is 3. The description adds value by explaining the relationship between valueMeasure and maxMeasure ('valueMeasure/maxMeasure are measure names; pass maxMeasure for a comparable scale') and clarifying effects of negativeFill and align, which goes beyond the schema entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Author'), resource ('SVG DATA BAR measure'), and technical detail ('DataCategory=ImageUrl', 'renders an in-cell bar scaled to value/max'). This differentiates it from sibling SVG tools like add_svg_sparkline and add_svg_gauge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on where to use the tool ('Drop it into a table/matrix/card') and explains parameter usage for maxMeasure, negativeFill, and align. However, it does not explicitly name alternative tools or state when not to use it, though the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_svg_gaugeA
Author an SVG ARC GAUGE measure (DataCategory=ImageUrl): a semicircular gauge mapping the value onto min..max, rendered in-cell. thresholds (optional JSON array of {at,color}, ascending) tint the value arc by the highest band the value clears.
| Name | Required | Description | Default |
|---|---|---|---|
| max | Yes | gauge maximum | |
| min | Yes | gauge minimum | |
| name | Yes | ||
| size | No | svg size in px (square) | |
| table | Yes | ||
| fillColor | No | default arc colour hex | #2E86AB |
| sessionId | Yes | ||
| thresholds | No | JSON array of {at,color} threshold bands (optional), e.g. [{"at":80,"color":"#2E7D32"}] | |
| valueMeasure | Yes | the value measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool creates a measure with DataCategory=ImageUrl and explains threshold tinting behavior. It does not mention potential side effects (e.g., overwriting existing measures), required permissions, or return values, but the core mutating nature is implied by 'Author'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no wasted words, covering purpose and threshold behavior efficiently. It could be slightly improved with clearer sentence boundaries, but every part contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema and no annotations, the description explains the core concept and threshold behavior but omits details about side effects, prerequisites, and parameters like size, fillColor, table, or sessionId. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (6 of 9 params have descriptions). The description adds relational meaning by explaining how valueMeasure, min, max, and thresholds interact to map a value and tint the arc. It does not elaborate on size or fillColor, but those are adequately described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'authors an SVG ARC GAUGE measure' and specifies it's a semicircular gauge mapping a value onto min..max, rendered in-cell. This distinguishes it from sibling SVG tools like add_svg_progress_bar or add_svg_sparkline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when creating a semicircular gauge measure for in-cell rendering. However, it does not explicitly mention alternatives or exclusions, though the specificity of 'ARC GAUGE' makes the intended scenario obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_svg_iconA
Author an SVG THRESHOLD ICON measure (DataCategory=ImageUrl): renders a unicode glyph in a colour chosen by which [min,max) band the value falls into. rules = JSON array of {min,max,glyph,color}, e.g. [{"min":-1e9,"max":0,"glyph":"▼","color":"#D7263D"},{"min":0,"max":1e9,"glyph":"▲","color":"#2E7D32"}].
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| size | No | svg size in px (square) | |
| rules | Yes | JSON array of {min,max,glyph,color} rules | |
| table | Yes | ||
| sessionId | Yes | ||
| valueMeasure | Yes | the value measure tested against the bands |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that it creates a measure with DataCategory=ImageUrl and explains the rules JSON structure, but it does not mention side effects such as whether it overwrites existing measures, requires specific permissions, or what the tool returns. The behavioral detail is moderately rich but incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but reasonably sized. It front-loads the core purpose and includes a practical example of the rules format. The sentence is long but every part adds value, and the JSON example is particularly useful despite being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description covers the essential concept and rules format but omits prerequisites, error conditions, and return behavior. It is complete enough to understand the tool's core function but leaves gaps for a full invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description must compensate for undocumented parameters. It adds significant meaning for 'rules' by providing a concrete JSON example and clarifies 'valueMeasure' as the measure tested against bands. However, it leaves 'name', 'table', and 'sessionId' without explanation, relying on the agent's general knowledge of similar tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Author' plus the resource 'SVG THRESHOLD ICON measure' and explains the exact behavior: rendering a unicode glyph colored by value bands. This clearly distinguishes it from sibling SVG tools like add_svg_chip or add_svg_sparkline by emphasizing the threshold/banding logic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a threshold icon measure) but does not explicitly state alternatives or exclusions. While the threshold banding concept is clear, there is no direct comparison to similar SVG tools or guidance on 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.
add_svg_progress_barA
Author an SVG PROGRESS BAR / BULLET measure (DataCategory=ImageUrl): a track + a fill scaled to value/target, rendered in-cell. kind=bar|bullet (bullet adds a target tick). trackColor is the rail; fillColor the achieved portion.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | bar | bullet | bar |
| name | Yes | ||
| table | Yes | ||
| width | No | svg width in px | |
| height | No | svg height in px | |
| fillColor | No | fill colour hex | #2E7D32 |
| sessionId | Yes | ||
| trackColor | No | track colour hex | #E6E9EF |
| valueMeasure | Yes | the value measure (achieved) | |
| targetMeasure | Yes | the target measure (100%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose key behavioral details: how the SVG is composed ('track + fill scaled to value/target'), the effect of kind ('bullet adds a target tick'), and the role of color parameters. However, it does not mention whether the measure is created or updated, what happens if the measure already exists, required permissions, or any side effects. This is a moderate level of transparency for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary purpose. Every phrase adds information: the measure type, DataCategory, visual composition, and color semantics. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the core functionality (creation of an SVG progress/bullet measure) but omits practical details that would help an agent complete the task correctly: what the return value is (if any), whether the tool overwrites an existing measure, required model/session context, and any constraints. With no annotations and no output schema, the description alone does not fully cover the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 70%, so the description adds value for several parameters: it explains kind semantics ('bar|bullet (bullet adds a target tick)') and clarifies trackColor/fillColor roles ('trackColor is the rail; fillColor the achieved portion'). It also explains the relationship between valueMeasure and targetMeasure. This goes beyond the schema's terse descriptions and compensates for the coverage gap well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Author') and resource ('SVG PROGRESS BAR / BULLET measure') and details the visual composition ('track + a fill scaled to value/target, rendered in-cell'). It clearly distinguishes this from sibling SVG tools like add_svg_sparkline or add_svg_gauge by naming the exact chart type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool (when an SVG progress bar or bullet measure is needed) but does not explicitly mention alternatives or exclusions. There is no guidance on when not to use it or how it compares to similar tools like add_svg_databar. Usage is implied by the resource type, but no explicit alternatives or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_svg_sparklineA
Author an SVG SPARKLINE measure (DataCategory=ImageUrl): a min-max scaled line/area over a category column, rendered in-cell. kind=line|area|gradient-area. showLastPoint adds a terminal marker; intercept draws a zero baseline. categoryColumn = Table[Column].
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | line | area | gradient-area | line |
| name | Yes | ||
| table | Yes | ||
| width | No | svg width in px | |
| height | No | svg height in px | |
| intercept | No | draw a dashed zero baseline | |
| lineColor | No | line colour hex | #2E86AB |
| sessionId | Yes | ||
| valueMeasure | Yes | the value measure plotted per category | |
| showLastPoint | No | draw a marker on the final point | |
| categoryColumn | Yes | the category column, e.g. Calendar[Month] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses min-max scaling, in-cell rendering, and the effects of showLastPoint and intercept. However, it does not mention side effects like overwriting existing measures, required data types, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently front-load the purpose and then summarize key option behaviors. No filler; every clause contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality and key parameter semantics, but with 11 parameters and no output schema, it omits context like naming behavior, size implications, and whether existing measures are overwritten. Sufficient for basic usage but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining min-max scaling for the value measure, the Table[Column] format for categoryColumn, and the visual effects of kind, showLastPoint, and intercept. Schema coverage is 73%, and the description clarifies key parameters without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool authors an SVG sparkline measure with DataCategory=ImageUrl, using min-max scaled line/area over a category column. This specific verb+resource+description distinguishes it from siblings like add_sparkline or add_svg_chip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by explaining the kind options and inline rendering, but it does not explicitly discuss when to use this tool versus alternatives or provide exclusion criteria. Guidance is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_table_from_mA
Create a new import table from a Power Query (M) expression. Run refresh_table afterwards to populate columns.
| Name | Required | Description | Default |
|---|---|---|---|
| m | Yes | the full M let-expression | |
| name | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the table won't populate until refresh_table is run, which is valuable behavioral context. However, it omits details like whether the table overwrites an existing one, permissions required, validation behavior, or side effects on the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose and immediately followed by a necessary post-condition. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and only 33% parameter coverage, the description is too thin. It doesn't explain what happens on success, how the new table relates to the model, whether the name must be unique, or what sessionId refers to. The refresh tip is helpful but insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'm' is described). The description clarifies that the 'm' parameter is a Power Query expression, but it adds nothing about 'name' or 'sessionId'. Since coverage is low, the description needed to compensate but only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Create a new import table') and specifies the method ('from a Power Query (M) expression'), clearly distinguishing it from siblings like add_calculated_table (calculated table) and add_table_visual (visual).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool (creating an import table from M) and provides an explicit follow-up step ('Run refresh_table afterwards to populate columns'). It doesn't explicitly mention alternatives or exclusions, but the import-table scope is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_table_view_foldingA
ADVANCED: scaffold a Table.View that implements custom query folding over a non-foldable source. Emits Table.View(null, [handlers]). handlers is comma-separated from GetType, GetRows, OnTake, OnSkip, OnSelectColumns, OnSelectRows, GetRowCount. GetType+GetRows are the mandatory baseline (added automatically); OnTake is the cheapest win (bounded preview). FLAG: the handler bodies are TEMPLATES that defer to the table and must be specialised to actually fold into the native source.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| handlers | Yes | handlers, comma-separated, e.g. OnTake,OnSkip,GetRowCount | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the output format ('Emits Table.View(null, [handlers])'), the automatic addition of mandatory baseline handlers, and flags that handler bodies are templates requiring specialization. This goes beyond a simple operation description, though it omits potential side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise given the complexity, using short sentences and labeled cues like 'ADVANCED' and 'FLAG.' Each sentence adds value: stating the purpose, the output, the handler list, the baseline, and the template warning. It is not overly verbose but uses dense jargon appropriate for the audience.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with no output schema, so the description must explain return values and caveats. It does explain the emitted Table.View and the template nature, but it stops short of detailing the specialization process or what happens after scaffolding. For an expert, this is mostly sufficient, but some aspects remain undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 50%, the description adds significant meaning for the 'handlers' parameter by enumerating the full list of accepted values and explaining the mandatory baseline. It does not elaborate on 'table' or 'sessionId', but those are likely self-evident. For an advanced tool, this level of parameter detail is helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'scaffold a Table.View that implements custom query folding over a non-foldable source.' This is a specific verb + resource (scaffold a Table.View) and clearly distinguishes it from related tools like 'set_stop_folding' by focusing on adding folding rather than stopping it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this for 'non-foldable source' where you want to implement custom folding. It does not explicitly mention alternative tools or when-not-to-use, but the condition 'non-foldable source' is an explicit usage scenario. Sibling tools like 'set_stop_folding' imply the opposite action, giving subtle differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_table_visualB
Add a table visual. fields = JSON array of {table,field,kind} (kind=column|measure), shown left-to-right.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| title | No | ||
| width | No | ||
| fields | Yes | JSON array of {table,field,kind} | |
| height | No | ||
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It only discloses that fields are shown left-to-right and that kind can be column or measure, but does not explain side effects, prerequisites, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences with no redundancy. It leads with the core action and then clarifies a key parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not compensate for the tool's complexity (8 params, no output schema, many siblings). It lacks context about when to use a table versus other visual types, and doesn't mention how it integrates with reportSessionId and pageName.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers only 13% of parameters with descriptions. The description adds useful detail for 'fields', specifying the JSON array format and allowed kinds, but provides no additional meaning for the other seven parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a table visual, which is a specific visual type distinct from sibling tools like add_matrix and add_chart. The 'fields' clarification reinforces the table's data structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives such as add_matrix, add_chart, or add_visual. There are no explicit exclusions or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_template_measureA
Add a measure to a table in a closed .pbit template's model, editing the DataModelSchema JSON on disk with no Power BI Desktop. Collision-checked: fails if a measure of that name already exists on the table. The .pbit is written back in place (the original is copied to a .bak beside it first).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | measure name | |
| table | Yes | home table for the measure | |
| pbitPath | Yes | path to the closed .pbit template | |
| expression | Yes | DAX expression, e.g. SUM(Sales[Amount]) | |
| formatString | No | format string, e.g. "#,0" or "0.0%" (optional) | |
| displayFolder | No | display folder (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes full responsibility for behavioral disclosure. It goes beyond the basic action by revealing critical details: it edits the DataModelSchema JSON on disk, performs collision checking (fails if measure already exists), writes the .pbit back in place, and creates a .bak backup. This provides substantial transparency about side effects and failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, perfectly sized for the tool's complexity. It front-loads the core purpose in the first sentence, then adds key behavioral details (collision checking and backup) in the next two. Every sentence adds value, with no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the main workflow (adding a measure to a closed template) and important safety details (backup, collision check). However, it does not specify success/return values or error handling beyond the collision case. Since there is no output schema, a note about what happens on success (e.g., returns the updated model info) would improve completeness. Still, the description is quite thorough for the operation described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so per the baseline rule, a score of 3 is appropriate. The tool description adds no additional parameter semantics beyond what the schema already provides. The schema descriptions are short but sufficient for basic understanding, and the description does not clarify optional parameters like formatString or displayFolder beyond their schema entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (adding a measure) and the resource (a table in a closed .pbit template's model), and explicitly distinguishes itself from similar tools by noting it edits DataModelSchema JSON on disk without Power BI Desktop. This differentiates it from sibling tools like add_measure (presumably for open models) and update/delete_template_measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when working with a closed .pbit template and no Power BI Desktop. It implies offline/automated editing scenarios. However, it does not explicitly name alternative tools or state when not to use this tool versus add_measure or open/edit workflows, so it misses the 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_template_relationshipA
Add a relationship to a closed .pbit template's model, editing the DataModelSchema JSON on disk with no Power BI Desktop. Both endpoints must exist (the tables and columns are validated). A fresh GUID name is generated. Collision-checked: fails if an identical from/to relationship already exists. Written back in place (with a .bak guard).
| Name | Required | Description | Default |
|---|---|---|---|
| toTable | Yes | the 'one' side table | |
| isActive | No | whether the relationship is active (default true) | |
| pbitPath | Yes | path to the closed .pbit template | |
| toColumn | Yes | the 'one' side column | |
| fromTable | Yes | the 'many' side table | |
| fromColumn | Yes | the 'many' side column | |
| crossFilteringBehavior | No | cross-filtering: oneDirection (default) or bothDirections (or automatic) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels. It discloses that it edits the DataModelSchema JSON in place, validates both endpoints, generates a fresh GUID name, collision-checks against existing identical relationships, and writes back with a .bak guard. This is rich behavioral context far beyond a simple 'add'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each providing essential behavioral information: the core action, validation, naming, collision handling, and backup. No fluff or redundancy. The most important details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 7 parameters and no output schema or annotations, the description covers validation, GUID generation, collision checking, and backup safety. Minor gaps include no mention of the return value or prerequisites beyond 'closed .pbit', but overall it is highly informative and adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — every parameter has a description. The tool description adds general context about validation and naming but does not add meaning for specific parameters beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add a relationship to a closed .pbit template's model'. It further distinguishes this from the sibling add_relationship by explicitly noting 'editing the DataModelSchema JSON on disk with no Power BI Desktop', which is a clear differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context: this operates on a 'closed .pbit template' and requires 'no Power BI Desktop', implying it is the offline alternative to tools like add_relationship. However, it does not explicitly state when NOT to use it or name alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_textboxB
Add a formatted text box - use for page headers, section titles and captions.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| bold | No | ||
| text | Yes | ||
| align | No | left|center|right | |
| color | No | hex colour e.g. #1A4480 | |
| width | No | ||
| height | No | ||
| fontSize | No | font size in pt | |
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Add a formatted text box' without explaining side effects, prerequisites (e.g., reportSessionId), or interactions with existing content. This is minimal and leaves the agent guessing about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and use cases. Every word earns its place, with no filler or redundancy. It is optimally concise while still conveying the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters, no output schema, and no annotations, this one-line description is insufficient for full understanding. It gives use cases but lacks details on parameter relationships, return values, or behavioral constraints. The tool is more complex than the description suggests, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 11 parameters with only 27% description coverage, and the tool description adds no parameter-specific meaning. It hints at 'formatted' but does not explain x, y, width, height, text, bold, or pageName. The parameter names are somewhat self-explanatory, but the description does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a formatted text box and specifies concrete use cases (page headers, section titles, captions). This distinguishes it from sibling tools like add_shape or add_image, though it does not explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool ('use for page headers, section titles and captions'), giving the agent actionable guidance. However, it does not state when not to use it or mention alternative tools, so it stops short of a full when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_theme_visual_style_presetA
Add a NAMED visual-style PRESET to the theme so a visual can opt into a look (theme.visualStyles[visualType][presetName]). cardProperties = JSON object of cardName -> property map or array, e.g. {"title":{"fontSize":14,"bold":true},"background":{"show":true,"color":{"solid":{"color":"#FFFFFF"}}}}. Run generate_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| presetName | Yes | the preset name shown in the style gallery | |
| visualType | Yes | canonical visualType key, e.g. lineChart, tableEx | |
| cardProperties | Yes | JSON object of cardName -> property map/array | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the structure of cardProperties and the prerequisite, but does not disclose side effects such as whether an existing preset is overwritten, what happens on duplicate presetName, or any permissions required. This is a mutation tool, and the lack of such details leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a parenthetical and an inline JSON example. It is information-dense but not overly verbose. The example is essential for understanding cardProperties and earns its place. Slightly sprawling due to the long example, but generally well-structured and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the essential aspects: what it does, the parameter structure with an example, and the prerequisite. No output schema exists, so return value details are not expected. Minor gaps include behavior on conflicts and any constraints on presetName, but the description is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (3 of 4 params described). The description adds significant value beyond the schema by providing a concrete JSON example for cardProperties and explaining the mapping (cardName -> property map/array). It also clarifies the role of presetName and visualType in the theme structure. The only param lacking any schema description (reportSessionId) is not addressed, but overall the description enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Add a NAMED visual-style PRESET to the theme', clearly distinguishing it from related tools like generate_theme or set_theme_* tools. It also explains the mechanism ('so a visual can opt into a look') and the underlying data structure (theme.visualStyles[visualType][presetName]), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a prerequisite: 'Run generate_theme first.' This provides clear context on when this tool should be used relative to theme creation. However, it does not explicitly name alternatives or state when NOT to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_intelligenceB
Generate the standard time-intelligence measure set for a base measure: YTD, QTD, MTD, PY (prior year), and YoY %. Needs a date table column (e.g. Calendar[Date]).
| Name | Required | Description | Default |
|---|---|---|---|
| homeTable | No | home table for the new measures (optional; defaults to the base measure's table) | |
| sessionId | Yes | ||
| dateColumn | Yes | date column, e.g. Calendar[Date] | |
| baseMeasure | Yes | existing base measure, e.g. Total Sales |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It adds useful context about the created measures and the need for a date table column, but it does not explicitly state that this is a mutation (creating measures) nor mention potential side effects like overwriting existing measures or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concisely written in two sentences, front-loads the primary action, and includes only necessary detail without filler. It efficiently communicates the core purpose and a key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a high-level purpose but fails to address the existence of several closely related time-intelligence tools, making selection difficult. It also does not describe the return value, idempotency, or what happens if the preconditions are not met, leaving important gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, and the description largely repeats examples already present in the schema (e.g., 'Calendar[Date]'). The description does not add new meaning beyond the schema's parameter descriptions, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Generate') and resource ('standard time-intelligence measure set') and enumerates the specific measures produced (YTD, QTD, MTD, PY, YoY). However, it does not distinguish this tool from the similarly named sibling 'add_time_intelligence_measures', which could cause selection ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying the standard measure set and the prerequisite of a date table column. But it offers no explicit guidance on when to use this tool versus closely related alternatives like 'add_calendar_based_time_intelligence' or 'add_time_intelligence_measures', and no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_intelligence_calc_groupA
Create a time-intelligence calculation group on a table: Current/MTD/QTD/YTD/PY/PYTD/YoY/YoY% items with ordinals, a format-string on YoY%, and DiscourageImplicitMeasures set at model level.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the (single-column) table that becomes the calc group | |
| dateTable | Yes | date table | |
| sessionId | Yes | ||
| dateColumn | Yes | date column | |
| precedence | No | precedence (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It discloses several behaviors: creation of specific calc group items, ordinals, a format-string on YoY%, and setting DiscourageImplicitMeasures at model level. However, it does not disclose potential side effects such as overwriting an existing group, permissions required, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler. It front-loads the main action ('Create a time-intelligence calculation group') and then lists specific behaviors. It could be slightly more structured with clearer separation of items, but every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has moderate complexity with 5 parameters and no output schema. The description covers the main behavior and side-effect (DiscourageImplicitMeasures) but omits prerequisites like the table needing to be single-column (though schema mentions it) or how dateTable/dateColumn are used. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3. The description adds context about what the tool creates (items, format string, model-level flag) but does not elaborate on parameter-specific meaning beyond the schema. The 'table' parameter is clarified by the schema as 'the (single-column) table that becomes the calc group', and the description's 'on a table' aligns with that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a time-intelligence calculation group with a specific set of items (Current/MTD/QTD/YTD/PY/PYTD/YoY/YoY%). It distinguishes itself from sibling tools like add_calculation_group (generic) and add_time_intelligence_measures (measures, not calc groups) by listing the exact outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a standard time-intelligence calc group with these predefined items) but does not explicitly provide alternatives or exclusion criteria. Context is provided by the item list, but no direct comparison with related tools like add_calendar_based_time_intelligence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_intelligence_measuresA
Generate the full time-intelligence measure set off a base measure: YTD/QTD/MTD, PY/PM, MoM/YoY (+%), PYTD/YOYTD (+%). fiscalYearEnd (MM-DD, e.g. 06-30) drives fiscal *TD. target=pbip: pass pbipFolder instead of sessionId to write the SAME measures OFFLINE into a PBIP semantic model's TMDL (no engine; collision-checked appends).
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | home table for the new measures | |
| dateTable | No | date table name | |
| sessionId | No | sessionId from connect_model (live engine; pass exactly one of sessionId / pbipFolder) | |
| dateColumn | No | date column name on the date table | |
| pbipFolder | No | target=pbip: a PBIP <name>.SemanticModel / TMDL definition folder to edit OFFLINE (engine-free) | |
| baseMeasure | No | base measure name, e.g. Total Sales | |
| fiscalYearEnd | No | fiscal year-end MM-DD (optional, e.g. 06-30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and adds meaningful behavioral context: fiscalYearEnd drives fiscal *TD, pbipFolder enables offline TMDL writes with collision-checked appends, and no engine is needed. It does not cover error cases or prerequisites, but it is transparent about core behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not overly long; it front-loads the tool's purpose and packs essential details (measure types, fiscal year logic, offline mode) into two sentences. Every phrase earns its place, though it runs on with multiple clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description explains key workflow options (live vs. offline), fiscal year input, and collision handling. It could mention return values or prerequisites, but it covers the most critical contextual aspects well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a baseline of 3. The description adds extra meaning beyond the schema by explaining how fiscalYearEnd drives fiscal *TD and that pbipFolder vs sessionId are mutually exclusive for offline vs live execution. This enhances the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a full time-intelligence measure set off a base measure, listing specific measure types (YTD/QTD/MTD, PY/PM, MoM/YoY, etc.). This distinguishes it from siblings like add_time_intelligence (likely single measure) and add_time_intelligence_calc_group (calc group variant), and includes the offline PBIP mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates when to use the tool: to generate a comprehensive set of time-intelligence measures. It also explains the target=pbip alternative (offline vs. engine) via the pbipFolder vs sessionId note, but it does not explicitly mention scenarios where a sibling tool would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tooltip_fieldsA
Add EXTRA FIELDS to a visual's DEFAULT (data) tooltip (the Tooltips field-well), so they show on hover. fields = JSON array of {table,field,kind} (kind=measure|column). Adds the projections + query Select entries. Distinct from set_visual_tooltip_page (which swaps the whole tooltip for a report page).
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| fields | Yes | JSON array of {table,field,kind} | |
| visual | Yes | visual name (from list_visuals) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the tool adds projections and query Select entries, which gives insight into internal operations. However, it does not clarify whether existing tooltip fields are appended or replaced (the word 'extra' suggests append), nor does it mention side effects, permissions, or failure modes. Some transparency is provided, but significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with no redundant words. Each sentence adds distinct value: the core action, the fields parameter format, the internal projection behavior, and the sibling distinction. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations or output schema, the description gives a clear understanding of the operation, input format, and a key distinction from a sibling. It does not discuss return values or error handling, but these are not critical for a mutation tool of this scope. It is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters with descriptions. The description adds specific semantics for the 'fields' parameter, explaining the JSON structure and that 'kind' can be 'measure' or 'column', which goes beyond the schema's generic 'JSON array of {table,field,kind}'. It does not add detail for other parameters, but the fields clarification is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds extra fields to a visual's default tooltip using a specific verb and resource. It also explicitly distinguishes itself from set_visual_tooltip_page, which swaps the whole tooltip for a report page, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (adding extra fields to the Tooltips field-well) and explicitly identifies one alternative (set_visual_tooltip_page) with a when-not condition. However, it does not mention other related tools like set_tooltip_field_binding or set_visual_fields, so guidance is not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_perspectiveA
Add a table - or a specific column / measure / hierarchy on it - to a perspective. Omit childObject to include the whole table. Run add_perspective first.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table to include | |
| sessionId | Yes | ||
| childObject | No | a column, measure or hierarchy on the table; omit to include the whole table | |
| perspective | Yes | perspective name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the prerequisite and the optional childObject behavior, but does not mention side effects, failure modes, or return values. For a straightforward mutation, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero waste. The action and key behaviors are stated efficiently without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, the description covers the core behavior and prerequisite adequately. It lacks detail on sessionId and failure scenarios (e.g., perspective not existing), but these are minor gaps given the low complexity and presence of sibling tools that clarify context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (table, perspective, childObject are described), and the description adds no new parameter semantics—it restates what the schema already says about childObject. The undocumented sessionId remains unexplained, but that is a schema gap, not the description's responsibility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Add') and resource ('table / column / measure / hierarchy to a perspective'), using a specific verb and object that distinguishes it from sibling tools like add_perspective (create perspective) and remove_from_perspective (remove from perspective). The scope 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite ('Run add_perspective first') and explains the choice of whole table vs. child object via 'Omit childObject to include the whole table.' It does not explicitly name alternatives or when not to use, but the context is sufficient for a simple operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_topn_filterA
Add a TOP-N (or bottom-N) filter at a scope=visual|page|report: keep the top/bottom n of table[field] ranked by byTable[byMeasure]. direction=top|bottom. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | how many to keep | |
| page | No | page (scope=visual|page) | |
| field | Yes | the column being ranked/limited | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the field to rank | |
| visual | No | visual (scope=visual) | |
| byTable | Yes | table that owns the ranking measure | |
| byMeasure | Yes | the measure that ranks | |
| direction | No | top | bottom | top |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the core behavior (keep top/bottom n of a field ranked by a measure) and mentions the direction parameter. However, it does not disclose whether the filter replaces or appends to existing filters, whether it is idempotent, or any side effects. The behavior of the filter after creation is not explained beyond the ranking logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It packs the essential information: the operation, the scope options, the ranking logic, the direction, and scope-specific parameter hints. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters and no output schema, so the description must cover the main logic and parameter relationships. It does this well by explaining the ranking mechanism and scope handling. However, it omits edge cases like what happens when no page/visual is provided for scope=report, or how multiple TOP-N filters interact. Given the moderate complexity, this is reasonably complete but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90%, so the baseline is 3. The description adds value by explaining the relationship between parameters (table[field] ranked by byTable[byMeasure]) and the conditional requirements for page/visual based on scope. This goes beyond the individual schema descriptions, clarifying how the parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: adding a TOP-N or bottom-N filter with a specific scope (visual/page/report). It explicitly describes the ranking logic (keep top/bottom n of table[field] ranked by byTable[byMeasure]), which distinguishes it from generic filter tools. The verb 'Add' and the resource (filter) are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage guidance for the scope parameter: for scope=visual, pass page+visual; for scope=page, pass page. This tells the agent how to set parameters correctly for each scope. It does not mention alternative tools or when not to use this tool, but the context is clear enough for most scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_variationA
Add a date-navigation Variation to a column: when the column is used in a visual, the model navigates through the named relationship to a default hierarchy on the related (date) table. isDefault makes it the column's default variation.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table the column is on | |
| column | Yes | the column to add the variation to | |
| isDefault | No | make this the column's default variation (default true) | |
| sessionId | Yes | ||
| relationship | Yes | the relationship name to navigate through | |
| defaultHierarchy | Yes | the default hierarchy on the related table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It explains the runtime behavior (column navigates through relationship to default hierarchy) and the role of isDefault, but does not mention side effects, permissions, reversibility, or failure scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence contributes meaning. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core concept and parameter roles, but without annotations or an output schema it leaves gaps such as expected return values, prerequisites (e.g., date table requirement), and error conditions. It's adequate but not exhaustive for a tool with 6 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for most parameters (83% coverage), and the description adds context by explaining how relationship and defaultHierarchy work together in the navigation behavior. It also reinforces the meaning of isDefault. This goes beyond the schema's individual parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a date-navigation Variation to a column, explaining the functional effect (navigating through a named relationship to a default hierarchy on a related date table). This specific verb+resource phrasing distinguishes it from siblings like delete_variation and list_variations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and implies it should be used when adding a variation to a column, but does not explicitly state when to use it versus alternatives or provide exclusions. It lacks guidance on prerequisites 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.
add_view_switcherA
THE premium pattern from pro reports: one page, a button bar that swaps between VIEWS - each view shows its own visuals and hides the rest. Builds the Display-only bookmarks + the buttons + sets the initial state to the first view. views = JSON array of {name, visuals:[visualName,...]} (visual names from list_visuals/add_* results). Ground-truthed from a real report.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| gap | No | ||
| views | Yes | JSON array of {name, visuals:[visualName,...]} | |
| pageName | Yes | ||
| fillColor | No | inactive button fill | #5B7494 |
| textColor | No | button text colour | #FFFFFF |
| buttonWidth | No | ||
| buttonHeight | No | ||
| activeFillColor | No | active (first) button fill | #16365C |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the responsibility of disclosing behavior. It does mention building Display-only bookmarks, buttons, and setting the initial state, which covers the main actions. However, it does not mention potential side effects like bookmark list clutter, name collisions, or what happens if the page or visuals don't exist, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description contains useful information but includes subjective fluff like 'THE premium pattern from pro reports' and 'Ground-truthed from a real report,' which do not aid understanding. The core content is front-loaded, but it is slightly verbose and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the core functionality and the main parameter well, but for a complex tool with 11 parameters, no annotations, and no output schema, it leaves out important details about behavior with missing visuals, page handling, and potential conflicts. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 36%, so the description must compensate. It does provide extra context for the critical 'views' parameter by clarifying that visual names should come from list_visuals/add_* results and that the first view defines the initial state. Other parameters like x, y, gap, and button sizes have defaults in the schema, so the lack of explanation is less critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool builds a view switcher: a button bar that swaps between views, creating Display-only bookmarks, buttons, and setting the initial state to the first view. This is a specific verb+resource combination that distinguishes it from sibling tools like add_bookmark or add_button, which only handle individual components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when implementing the premium view-switcher pattern) and provides a hint that visual names come from list_visuals or add_* results. However, it does not explicitly contrast it with alternatives like creating bookmarks and buttons separately, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_visualA
Add any visual type with explicit role bindings. bindings = JSON array of {role,table,field,kind}. Roles depend on visualType (e.g. Category/Y for charts, Rows/Columns/Values for pivotTable, Values for card/slicer/tableEx).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| title | No | ||
| width | No | ||
| height | No | ||
| bindings | Yes | JSON array of {role,table,field,kind} | |
| pageName | Yes | ||
| visualType | Yes | visual type id, e.g. card, tableEx, pivotTable, slicer, clusteredColumnChart, lineChart | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses important behavior about bindings format and dependency on visualType. However, it does not mention side effects (e.g., requires active report session), error conditions, or return value. It adds some meaningful context but omits other behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the verb and purpose, followed by a precise clarification of the bindings parameter. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generic nature and 9 parameters with no output schema or annotations, the description covers the core binding complexity but leaves gaps around positional parameters, session/page context, and return/error behavior. It is adequate for the main use case but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (22%), so the description compensates by explaining the most complex parameter (bindings) with its JSON structure and providing examples of role names per visualType. It also repeats and enhances visualType examples. However, it does not describe positional parameters (x, y, width, height, title), though those are fairly self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Add') and resource ('any visual type') and adds the key qualifier 'with explicit role bindings'. This distinguishes it from specific sibling tools like add_chart or add_table_visual by emphasizing its generic nature and role-binding mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for any visual type and highlights role bindings, but it does not explicitly mention when to choose this tool over dedicated visual-specific tools (e.g., add_matrix, add_slicer) or provide exclusions. Usage context is implied rather than clearly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_visual_calculationA
Author a VISUAL CALCULATION on a visual: an in-visual DAX expression over the visual's own result matrix (e.g. RUNNINGSUM([Sales]), MOVINGAVERAGE([Sales],3), PERCENTOFTOTAL([Sales])) - distinct from a model measure. Written to singleVisual.visualCalculations[] and projected as a Values column so it renders. Re-adding the same name updates it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the calculation name (becomes a column) | |
| page | Yes | page name or displayName | |
| visual | Yes | visual name (from list_visuals) | |
| daxExpression | Yes | the visual-calculation DAX expression | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the write target (singleVisual.visualCalculations[]), the rendering side effect (projected as a Values column), and the upsert behavior (re-adding same name updates it). This is substantive behavioral context, though it omits error handling or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each earning its place. Key information is front-loaded, examples are illustrative yet terse, and the behavioral note about updating is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema and no annotations, the description covers the core behavior, storage, and update semantics. It could mention prerequisites like the visual needing an existing data matrix, but it is strong overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so baseline is 3. The description adds value by providing DAX expression examples and explaining that the name becomes a column and updates on re-add, enriching the parameter semantics beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Author a VISUAL CALCULATION on a visual', a specific verb-resource pair, and clearly distinguishes it from a model measure. Examples like RUNNINGSUM, MOVINGAVERAGE, and PERCENTOFTOTAL make the scope unmistakable, differentiating it from sibling tools such as add_measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states this is for in-visual DAX expressions over the visual's own result matrix and explicitly says it is 'distinct from a model measure', providing an exclusion. It does not name alternative tools, but the context and examples imply the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_visual_filterA
Add a VISUAL-LEVEL filter to an existing visual. op = gt|gte|lt|lte|eq|ne|isblank|isnotblank. kind=column|measure. The classic use: exclude discontinued/zero rows from a ranking table, e.g. op=isnotblank on 'Sales 52W TY' (or op=gt value=0), so -100%/blank-rank SKUs stop cluttering the top. valueType=int|decimal|string (default decimal) for comparison values.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | gt|gte|lt|lte|eq|ne|isblank|isnotblank | isnotblank |
| kind | No | column|measure | measure |
| field | Yes | field (column or measure) to filter on | |
| table | Yes | table that owns the filter field | |
| value | No | comparison value (ignored for isblank/isnotblank) | |
| pageName | Yes | ||
| valueType | No | int|decimal|string | decimal |
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing side effects. It clearly implies mutation ('Add') and describes the filter semantics in detail, but it does not explain whether the filter replaces or appends to existing filters, or any permission requirements. Thus it provides some value but lacks deep behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet information-dense, using two sentences to convey the core purpose, parameter formats, and a practical example. It is front-loaded with the main action and avoids fluff, every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and lack of output schema, the description covers the essential usage with an example and parameter guidance. It does not mention response/return behavior or how to clear filters, but for a simple additive operation this is acceptable and the example anchors the practical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description enriches the schema by explaining the meaning of 'op', 'kind', and 'valueType' with explicit allowed values and a realistic example. It also clarifies the role of 'field' and 'table' in context. Since schema coverage is 67%, the description compensates substantially for less-documented parameters, though a few parameters like reportSessionId remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a visual-level filter to an existing visual, using specific verbs and resource context. It distinguishes from sibling tools like add_page_filter or add_report_filter by emphasizing 'VISUAL-LEVEL'. The enumeration of operators and kinds further clarifies exact functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete classic use case (excluding discontinued/zero rows from a ranking table), which gives clear context on when to apply this tool. However, it does not explicitly mention when not to use it or point to alternative filter tools (e.g., add_between_filter for range filters), so it stops short of full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_visual_topnA
Add a VISUAL-LEVEL Top N: rank rankTable[rankField] by byTable[byMeasure], keep the top/bottom n, with the ranking applied in the visual's own query (a Top node in prototypeQuery.Where). direction=Top|Bottom. Distinct from add_topn_filter (which writes a filter card).
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | how many to keep | |
| page | Yes | page name or displayName | |
| visual | Yes | visual name (from list_visuals) | |
| byTable | Yes | table that owns the ranking measure | |
| byMeasure | Yes | the measure that ranks | |
| direction | No | Top | Bottom | Top |
| rankField | Yes | the column being ranked/limited | |
| rankTable | Yes | table that owns the ranked field | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the ranking is applied in the visual's own query (Top node in prototypeQuery.Where), which is valuable. However, it doesn't disclose whether an existing Top N is replaced or stacked, nor any permissions, reversibility, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences deliver a clear purpose, an implementation detail, and a sibling distinction. No word is wasted, and the most important information (what it does and how it differs) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema and no annotations, the description covers the core operation, implementation, and a sibling contrast. It lacks explicit guidance on conflicts with existing Top N or edge cases, but overall it is sufficiently complete for an 'add' operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so baseline is 3. The description adds relational meaning by showing how rankTable/rankField and byTable/byMeasure pair together, and clarifies the role of 'direction' and 'n'. This goes beyond individual schema descriptions to explain the parameter structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a visual-level Top N, with a specific verb 'Add' and a concrete resource ('VISUAL-LEVEL Top N'). It also provides the ranking syntax and explicitly distinguishes itself from add_topn_filter, so the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly distinguishes itself from add_topn_filter, which is a key alternative, and implies the intended context of visual-level ranking. However, it doesn't mention other related tools like add_dynamic_topn or when NOT to use this tool beyond the one contrast, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_whatif_parameterA
Create a WHAT-IF parameter: a disconnected GENERATESERIES calculated table plus a SELECTEDVALUE measure ([ Value]) that picks up the slider selection. Drop the table's column on a slider slicer and reference the value measure in your DAX. The standard Modeling > New parameter pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| max | Yes | maximum value | |
| min | Yes | minimum value | |
| name | Yes | ||
| increment | Yes | step / increment between values | |
| sessionId | Yes | ||
| defaultValue | No | default value the measure returns when nothing is selected (optional; defaults to min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and largely succeeds: it discloses that the tool creates a disconnected calculated table and a measure that picks up slider selections via SELECTEDVALUE. It does not mention potential side effects like overwriting existing objects, but the core behavior is clearly explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and every clause earns its place. It packs relevant technical details and usage guidance without wasted words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for a moderate-complexity tool: it explains what gets created, how to use it, and references the standard pattern. It lacks explicit return-value information, but no output schema is expected for a creation tool, and the usage context compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the baseline is 3. The description adds meaning beyond the schema by explaining how 'name' becomes the measure name ('[<name> Value]') and that min/max/increment are used to generate the series. This helps the agent connect parameters to the tool's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to create a WHAT-IF parameter with a disconnected GENERATESERIES table and a SELECTEDVALUE measure. It uses a specific verb ('Create') and identifies the resource, distinguishing it from siblings like add_measure or add_calculated_column.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage steps: drop the table's column on a slider slicer and reference the value measure in DAX. It gives clear context for when to use the tool, but it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
align_visualsA
Align, distribute or match-size a set of visuals: mode = left|right|top|bottom|centerx|centery|samewidth|sameheight|distributeh|distributev. visualNames = comma-separated visual names (from list_visuals). Precise tidy-up on top of auto_arrange.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | left|right|top|bottom|centerx|centery|samewidth|sameheight|distributeh|distributev | |
| pageName | Yes | ||
| visualNames | Yes | comma-separated visual names | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It explains the modes and tells users to get visualNames from list_visuals, but it does not mention whether the operation is reversible, what session/page requirements exist, or how it affects existing positions beyond the vague 'tidy-up' metaphor. This is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the action and enumerates modes, the second clarifies the visualNames source and differentiates from auto_arrange. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a relatively simple layout tool with no output schema and four parameters. The description covers the core operation, modes, and source of visual names, which is enough to invoke it in most contexts. Minor gaps remain around the meaning of reportSessionId/pageName and any side effects, but they are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes mode and visualNames, and the description adds the useful note that visualNames come from list_visuals. However, reportSessionId and pageName are left completely undescribed in both schema and free-text, leaving 50% of parameters without semantic guidance. This partial compensation warrants a middle score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action with specific verbs ('Align, distribute or match-size') and the resource ('set of visuals'). It also distinguishes itself from the sibling tool auto_arrange by describing itself as 'Precise tidy-up on top of auto_arrange', making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Precise tidy-up on top of auto_arrange' provides clear context for when to use this tool (after auto_arrange for finer control). It also hints at the prerequisite of listing visuals first via list_visuals. However, it does not explicitly exclude or compare with other layout tools like match_slicer_layout or group_visuals, so it's slightly shy of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_dependenciesA
Analyse measure/column dependencies and impact. Returns the live INFO.CALCDEPENDENCY lineage plus, when an object is named ([Measure] or Table[Column]), the direct dependants (which measures reference it) from the model tree. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| object | No | the object to assess impact for: [Measure] or Table[Column] (optional) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states 'Read-only' and explains that it returns 'live INFO.CALCDEPENDENCY lineage' plus direct dependants when an object is named. This goes beyond the schema by revealing the tool's non-mutating nature and the conditional output, though it does not address potential performance or permission aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the action verb, and packs in the purpose, data source, conditional behavior, and read-only nature without redundancy. Every phrase earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explicitly states what is returned (INFO.CALCDEPENDENCY lineage and, optionally, direct dependants). It also clarifies the conditional behavior based on the object parameter. The only gap is sessionId's role, but that is likely a common convention across sibling tools, so the description is complete enough for a 2-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The 'object' parameter has a schema description, and the tool description adds behavioral context (when object is named, direct dependants are returned). However, 'sessionId' is required but lacks any description in both the schema and the tool description. With 50% schema coverage, the description only partially compensates, leaving sessionId's purpose implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Analyse') and resource ('measure/column dependencies and impact'), immediately clarifying the tool's function. It further distinguishes itself from siblings by naming the exact data source (INFO.CALCDEPENDENCY) and the additional direct-dependants output, making it uniquely identifiable among many analysis-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for impact analysis by stating it returns lineage and dependants, but it does not explicitly specify when to choose this over alternatives like 'impact_analysis' or 'analyze_model'. No exclusions or alternative tools are mentioned, leaving the decision to the agent based on inferred context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_modelB
Read-only best-practices scan: measures/columns missing format strings, tables in no relationship, etc. Returns a list of findings to fix.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description states 'read-only' and 'returns a list of findings', covering safety and output, but doesn't discuss prerequisites, limitations, or side effects beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter, but the missing parameter explanation and lack of usage guidance leave gaps despite clear purpose and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and description never mentions sessionId, leaving the only required parameter completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies a 'read-only best-practices scan' with concrete examples (format strings, relationships), but doesn't explicitly differentiate from sibling tools like run_bpa or audit_star_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use case via 'best-practices scan' and 'findings to fix' but provides no explicit when-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_queriesA
Power Query Append: stack the rows of one or more other queries onto this table (union). Appends Table.Combine to the table's M query. otherTables is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| otherTables | Yes | queries/tables to append, comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose that the tool appends Table.Combine to the table's M query, revealing a side effect on the query definition. However, it does not mention whether the operation is reversible, requires specific permissions, or how it affects existing data, which is a gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core action ('Power Query Append: stack the rows...'). Every sentence provides useful information without redundancy, achieving high information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and no output schema, the description covers the main behavior, the implementation detail (Table.Combine), and a critical parameter format (comma-separated). It is fairly complete for a table mutation operation, though it omits details about return values and prerequisites, which are not critical for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description adds clarity by noting that otherTables is comma-separated, which directly aids invocation. However, it does not explain the 'table' parameter beyond referring to 'this table', and sessionId remains undocumented. While the description partially compensates, it does not fully clarify all parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool appends rows from one or more other queries onto the target table via a union operation, explicitly mentioning 'stack the rows' and 'union'. This is a specific verb+resource pairing that distinguishes it from sibling tools like merge_queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (appending/stacking rows) but does not explicitly state when to use this tool versus alternatives or provide exclusions. It lacks guidance on prerequisites or scenarios where append is inappropriate, making it only implicitly informative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_rename_planA
APPLY an audit_naming rename plan through the propagating rename machinery: planJson = audit_naming's renamePlan ({renames:[{objectType, table, oldName, newName}]}, a bare array also accepted). Rows that cannot apply (missing object, collision, malformed) are skipped WITH the reason; the survivors run as ONE atomic batch - TOM renames plus every DAX/M reference rewrite in a single SaveChanges, report bindings rewritten too when reportSource is given. One result row per rename.
| Name | Required | Description | Default |
|---|---|---|---|
| planJson | Yes | the rename plan json: audit_naming's renamePlan, {renames:[...]}, or a bare array of {objectType, table, oldName, newName} | |
| sessionId | Yes | ||
| reportSource | No | optional report to rewrite: a reportSessionId (open_report), a pbirSessionId (read_pbir), or a PBIR .pbix/PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure, and it excels: it details skip-with-reason behavior, atomic batch execution, single SaveChanges, DAX/M reference rewriting, conditional report binding rewriting, and the result row format. This gives the agent a thorough understanding of side effects and guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it starts with the core action, then details the input format, error handling, atomicity, optional reportSource behavior, and output. Every sentence contributes meaningful information without redundancy, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers most critical aspects: input format, validation behavior, atomic execution, optional report rewriting, and result row count. It lacks explicit mention of prerequisites (e.g., open session) or permission requirements, but given the complexity and presence of sessionId, the description is sufficiently complete for tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (planJson and reportSource described, sessionId not). The description adds significant value by specifying the exact accepted formats for planJson (audit_naming's renamePlan object or bare array) and the possible types for reportSource (reportSessionId, pbirSessionId, PBIR path). This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'APPLY' with a clear resource ('audit_naming rename plan') and differentiates itself from sibling rename tools by focusing on a pre-generated plan and propagating rename machinery. It clearly identifies the tool's purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly ties the tool to audit_naming's renamePlan, indicating when it should be used (to apply a batch rename plan). It does not explicitly mention alternatives or exclusions, but the context strongly implies it is for complex, multi-object renames that need atomic execution and reference rewriting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_report_templateA
Apply a reusable REPORT TEMPLATE in one call: a bundle of theme + wallpaper + canvas-preset + nav settings. template = JSON { theme?:{...}, wallpaper?:{color,transparency}, canvas?:{preset,width,height}, nav?:{} }. page targets the wallpaper + canvas (defaults to the first page). Round-trips with save_report_template.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page to apply wallpaper/canvas to (optional; default first page) | |
| template | Yes | the template JSON bundle | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool applies theme, wallpaper, canvas-preset, and nav settings, and explains that the page parameter targets wallpaper and canvas (defaulting to the first page). It does not mention whether existing settings are overwritten or how errors are handled, but the core behavior is clearly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately front-loaded with the primary purpose. Every phrase earns its place, providing the template structure and page behavior without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and absence of an output schema, the description is complete: it defines the bundle, explains the template JSON, specifies page behavior, and notes the round-trip with save_report_template. No important context seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides brief descriptions for template and page, but the tool description elaborates the template structure thoroughly (theme, wallpaper, canvas, nav with optional fields) and clarifies page affects only wallpaper and canvas. This adds significant meaning beyond the schema and compensates for the gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies a reusable REPORT TEMPLATE, a bundle of theme, wallpaper, canvas-preset, and nav settings. It distinguishes itself from sibling tools like apply_report_theme (theme only) and save_report_template (saving) by emphasizing the one-call bundle and round-trip behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in the context of applying a complete pre-defined template rather than individual settings, and mentions round-tripping with save_report_template. However, it does not explicitly state when to avoid the tool or compare to setting individual properties, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_report_themeA
Apply a report theme (palette + fonts + structural colours) - the single biggest lever for a professional look. preset = executive|vibrant|slate|sunset|forest, OR pass a full Power BI theme JSON in themeJson to override.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | executive|vibrant|slate|sunset|forest | executive |
| themeJson | No | optional full Power BI theme JSON (overrides preset) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It mentions the theme components and that themeJson overrides preset, but it does not disclose whether the theme is entirely replaced, reversibility, permissions required, or any side effects. This is a gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and immediately followed by parameter usage. No extraneous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description gives the necessary invocation details but lacks behavioral specifics like return value, side effects, and differentiation from theme-related siblings. It is adequate but minimal, earning the baseline viability score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers preset and themeJson descriptions, but the tool description adds meaning by explaining the role of preset ('executive|vibrant|slate|sunset|forest') and the override relationship. It also clarifies what the theme encompasses (palette, fonts, structural colors), enhancing beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply a report theme (palette + fonts + structural colours)' with a specific verb and resource. It distinguishes this from sibling theme tools by covering the entire theme (palette, fonts, colors) rather than individual aspects like data colors or structural colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when wanting a quick professional look ('single biggest lever') and explains how to use presets or themeJson, but it does not explicitly contrast with alternatives like set_theme_data_colors or modify_theme. Guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assert_measureA
Evaluate a scalar DAX expression (EVALUATE ROW) and compare the result to an expected value: numeric-vs-numeric within tolerance, otherwise ordinal string compare of the invariant-culture rendering. A mismatch returns pass:false (not an error) - the single-assert form of run_golden_set.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | scalar DAX expression, e.g. [Total Sales] or CALCULATE([Sales], Dim[Year]=2025) | |
| expected | Yes | expected value, invariant-culture (e.g. 12345.67) | |
| sessionId | Yes | ||
| tolerance | No | absolute numeric tolerance (default 1e-6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels. It discloses that mismatches return pass:false (not an error) and explains the exact comparison logic (numeric tolerance vs ordinal string compare). This is valuable behavioral insight beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and packed with important details: evaluation method, comparison rules, return behavior, and relationship to run_golden_set. No redundancy or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core behavior, comparison semantics, and error handling well. It lacks explicit return structure (e.g., what pass:true looks like) and does not explain sessionId, but the tool is simple and no output schema exists. Overall, it is highly functional for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 75% of parameters with descriptions. The description adds meaning by clarifying dax as a scalar expression evaluated via EVALUATE ROW and expected as invariant-culture rendering for ordinal comparison. However, the required sessionId parameter remains undocumented in both schema and description, which limits the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates a scalar DAX expression and compares it to an expected value, with detailed comparison semantics. It distinguishes itself from siblings by noting it is the single-assert form of run_golden_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use this tool: for single assertions and as an alternative to run_golden_set. It does not explicitly list when not to use it or compare with other sibling tools like run_dax, but the 'single-assert form' phrasing gives practical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_datamashup_credentialsA
READ-ONLY credential audit of a .pbix's DataMashup: reports whether the embedded M carries credential material (connection strings with Password=/pwd=/AccountKey=/SAS tokens/etc) and whether a PermissionBindings blob is present. Reports PRESENCE and LOCATION only (indicator, query, line number) - secret values are NEVER echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | absolute path to the .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the read-only nature, that secret values are never echoed, and that it reports only presence and location. This goes beyond a simple statement of function and manages user expectations appropriately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key purpose, and every phrase adds value. The format is compact and easily skimmable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only audit tool with one parameter and no output schema, the description adequately covers what it does, what it reports (presence/location), and what it deliberately avoids (echoing secrets). No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter pbixPath is already fully described in the schema as 'absolute path to the .pbix'. The description does not add additional parameter-level details, so the baseline of 3 applies due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'credential audit of a .pbix's DataMashup'. It clearly distinguishes from siblings by focusing on credential material detection and presence/location reporting, not general info retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only audit purpose is implicit, and the scope is clear, but there is no explicit statement of when to use it versus alternatives like get_datamashup_info or rewrite_connection_string. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_namingA
READ-ONLY naming audit over table/column/measure names (technical DIM_/FACT_/TBL_ prefixes, snake_case, camelCase, leading/trailing/doubled spaces, lowercase initials) returning an applyable RENAME PLAN json {renames:[{objectType, table, oldName, newName, reason}]}. PLAN ONLY - nothing is renamed by this tool; a propagating apply (rewriting DAX/M references to renamed objects) lands in a later wave. Collisions are skipped and reported.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it declares 'READ-ONLY', 'PLAN ONLY', 'nothing is renamed by this tool', and discloses collision handling ('Collisions are skipped and reported'). This fully addresses safety and side-effect expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences, front-loaded with the critical 'READ-ONLY' and 'naming audit' context, followed by specific checks, output format, and the plan-only caveat. Every phrase adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, specific audit checks, output JSON structure, collision handling, and the eventual apply step. Minor gaps remain: no mention of how sessionId is used, any prerequisites (e.g., an open model), or error conditions. Since there is no output schema, the description does provide a clear return shape, but could be slightly more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, sessionId, has no description and the description never mentions it. Schema coverage is 0%, so the description must compensate, but it doesn't explain what sessionId refers to, its format, or how it determines the target model. This is a significant gap for a tool with a single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'READ-ONLY naming audit over table/column/measure names'. It distinguishes itself from rename tools by explicitly saying 'PLAN ONLY - nothing is renamed by this tool', making it unmistakable from siblings like apply_rename_plan or rename_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates when to use this tool: for planning a rename, not executing one, with 'PLAN ONLY' and 'a propagating apply ... lands in a later wave'. It does not explicitly name the alternative tool for applying (e.g., apply_rename_plan), but the intent is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_robustnessA
The complete 'select a value and the visuals fall over' detector - the pre-delivery reliability gate. For every low-cardinality slicer-style column it catches BOTH failure modes: (1) ERROR-on-select - a measure throws in that filter context, breaking the canvas (e.g. 'Brand=a given brand breaks [Margin %]'); and (2) BLANK-on-select - a value that empties every visual because it has no underlying data (the empty-brand class - a member with no rows). Pinpoints the offending values. Run before shipping. Tune with maxColumns/maxValuesPerColumn/maxMeasures; set anchorMeasure to choose the measure used for the blank test (defaults to the first model measure).
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| maxColumns | No | max slicer-style columns to test (default 20) | |
| maxMeasures | No | max measures to test (default 40) | |
| anchorMeasure | No | measure name used for the blank-on-select test (default: first model measure, e.g. a primary sales measure) | |
| maxValuesPerColumn | No | only test columns with at most this many distinct values (default 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It thoroughly explains the two detection modes and that it pinpoints offending values, implying a read-only analysis. It doesn't explicitly state that it doesn't modify the model, but the language strongly suggests it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but not excessively long; each sentence serves a purpose. It could be tightened, but it remains well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex audit tool with no output schema, the description covers its purpose, failure modes, parameter usage, and when to run it. It lacks only explicit side-effect disclosure, but this is an audit tool so it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers most parameters (80%), and the description adds guidance on tuning and the purpose of anchorMeasure. It reinforces the schema descriptions but doesn't introduce entirely new semantics, warranting a 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a detector for two specific failure modes when selecting slicer values, with concrete examples. It distinguishes itself from sibling audit tools by framing it as a pre-delivery reliability gate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Run before shipping' and instructs tuning parameters, giving clear usage context. It doesn't mention when not to use or alternatives, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_star_schemaA
READ-ONLY star-schema audit: classify every table (fact / dimension / date / bridge / disconnected) from the relationship topology + column types, then flag the schema smells - snowflaking, bidirectional filters, many-to-many, fact-to-fact relationships, a missing/unmarked date table, and descriptive text columns on fact tables. Returns a scored report (0-100) with a per-issue recommendation naming the fixing tool.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description explicitly states READ-ONLY, lists the classification logic and schema smells checked, and describes the return value (scored report 0-100 with per-issue recommendations). This is highly transparent about behavior and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences, front-loaded with READ-ONLY star-schema audit, and enumerates specific behaviors and output. Every sentence provides meaningful detail with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description fully explains what the tool does, what it detects, and what it returns (scored report with recommendations). This is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, sessionId, is not explained in the description and schema coverage is 0%. Since it is a standard session context parameter common to many tools, the lack of explanation is a minor gap, but the description does not compensate for the schema omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a READ-ONLY star-schema audit, specifies what it does (classify tables into fact/dimension/date/bridge/disconnected) and what it flags (schema smells like snowflaking, M:M, etc.). It is easily distinguished from sibling audit tools like audit_theme_compliance or audit_naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used for star-schema model auditing, with clear context of its scope, but it does not explicitly mention alternatives or when not to use it. There are no exclusions or comparisons to other audit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_theme_complianceA
READ-ONLY theme lint: walk every visual's objects/vcObjects formatting trees against the report's custom theme (read_theme's defaults) and report hard-coded overrides that fight it - off-palette colour literals, on-palette colours that FREEZE the palette so a theme swap will not restyle them, title font family/size overrides of the theme text classes, and per-visual card-style overrides where the theme's visualStyles already set the look.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly declares 'READ-ONLY' and details what it checks, giving useful context about its non-destructive nature. However, it does not explain the output format or potential side effects such as performance impact, though the read-only claim covers the main safety concern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the key purpose ('READ-ONLY theme lint') and then lists specific checks. Every clause adds value without redundancy, making it efficient and well-structured for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description provides solid coverage of its function, the checks performed, and its read-only nature. It does not specify the return format, but since there is no output schema, mentioning that it 'reports' overrides is somewhat vague. Still, the listed categories give agents a strong understanding of the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter, reportSessionId, but the description does not mention this parameter or explain its role in the operation. With schema description coverage at 0%, the description fails to compensate for the parameter semantics, leaving the agent to infer that the tool operates on the currently open report session from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'READ-ONLY theme lint' that walks visual formatting trees and reports hard-coded overrides conflicting with the theme. It enumerates specific issue categories (off-palette colors, frozen palette colors, title font overrides, card-style overrides), distinguishing it from sibling audit tools like audit_star_schema and audit_naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—auditing theme compliance before a theme swap—and references read_theme as the source of defaults. However, it does not explicitly state when to use this versus alternatives or when not to use it, lacking the explicit exclusions that would merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_arrangeA
Auto-arrange a page into a clean professional grid in ONE call: header textboxes full-width at top, then a slicer filter-bar, then a KPI-card row, then the data visuals (charts/tables) in a balanced grid that fills the page - consistent margins, gutters and alignment. Add visuals roughly, then call this to snap them into a designed layout. Decorative shapes/images stay put.
| Name | Required | Description | Default |
|---|---|---|---|
| gutter | No | gap between visuals px | |
| margin | No | outer margin px | |
| pageName | Yes | ||
| kpiHeight | No | KPI card height px | |
| maxPerRow | No | max data visuals per row (1-4) | |
| canvasWidth | No | canvas width (default = page width) | |
| canvasHeight | No | canvas height (default = page height) | |
| headerHeight | No | header textbox height px | |
| slicerHeight | No | slicer height px | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the rearrangement algorithm (header full-width, slicer bar, KPI row, balanced grid) and the safety guarantee that 'Decorative shapes/images stay put.' It does not mention potential side effects like resizing or overwriting manual formatting, but provides substantial behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the core purpose, and every sentence earns its place: the first explains the layout, the second gives the workflow, and the third provides an important exception. It is concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex layout tool with 10 parameters and no output schema, the description covers the main usage context, workflow, and a key behavioral caveat. It does not explain how the tool identifies KPI cards vs data visuals, which is a minor gap, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (80%), so the baseline is 3. The description adds contextual meaning by mapping 'header textboxes' to headerHeight, 'slicer filter-bar' to slicerHeight, and 'KPI-card row' to kpiHeight, but does not detail parameter syntax or further clarify semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource with a detailed outcome: 'Auto-arrange a page into a clean professional grid in ONE call' and describes the exact layout pattern (header, slicer, KPI row, data visuals). This clearly distinguishes it from sibling tools like align_visuals or tidy_slicer_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear when-to-use instruction: 'Add visuals roughly, then call this to snap them into a designed layout.' However, it does not explicitly name alternatives or state when NOT to use it, so it stops short of a full usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_mobile_layoutA
Auto-generate a phone (mobile) layout for a page: stacks the significant visuals (slicers, KPI value cards, tables, main charts) vertically on the 320-wide phone canvas; skips decorative shapes, tiny deltas and sparklines. A sensible mobile view in one call. Ground-truthed (layouts id 1).
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosure. It explains what gets included (slicers, KPI cards, tables, charts) and what gets skipped (decorative shapes, tiny deltas, sparklines), and specifies the canvas width (320-wide). This reveals selective behavior beyond a simple 'generate' statement, providing useful context about its operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding value: the action, the behavior details, and a reassurance ('sensible', 'one call', 'ground-truthed'). There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema/annotations, the description is fairly complete. It explains the layout behavior and visual selection criteria. It doesn't mention return values or error conditions, but for a layout generation tool this is acceptable given its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (reportSessionId and pageName) with 0% coverage in the description. The description mentions 'for a page' which clarifies pageName's role, but does not explain reportSessionId. Since the parameter names are self-explanatory and the description provides some page context, it partially compensates; however, it doesn't fully clarify the session ID parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Auto-generate' and clearly identifies the resource: 'a phone (mobile) layout for a page'. It further details the action by describing what it does with visuals (stacks them vertically, skips certain types), making it distinct from sibling tools like 'set_mobile_position' or 'auto_arrange'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a one-call solution for creating a mobile layout, saying 'A sensible mobile view in one call', which suggests using this tool when you want a quick automated layout. However, it doesn't explicitly mention alternatives or when not to use it, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_model_transactionA
Open a write-transaction on the session's model: subsequent model tools accumulate TOM changes WITHOUT SaveChanges until commit_model_transaction applies them all in one SaveChanges (rollback_model_transaction discards them). Refreshes requested inside the transaction run at commit. One transaction per session; queries against the engine see the pre-transaction state until commit.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does exceptionally well. It discloses that changes accumulate without SaveChanges, refreshes run at commit, only one transaction is allowed per session, and reads see the pre-transaction state until commit. These are exactly the non-obvious operational details an agent needs to use the tool safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the primary action and then efficiently delivers lifecycle semantics. Every clause adds value—no redundancy, no filler—and the semicolon-separated structure keeps related facts together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a transaction-control tool, the description covers essential context: save timing, rollback, refresh behavior, and concurrency constraint. It does not specify the return value or error handling if a transaction is already open, but given the simplicity of the operation and absence of an output schema, these are minor gaps rather than critical omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero descriptions, and the tool description does not explicitly mention the sessionId parameter. However, the parameter name is self-explanatory, and the description references 'the session's model,' which clarifies the parameter's role. The description adds some context about the session but omits format or source details for sessionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool opens a write-transaction on the session's model, and it distinguishes itself from sibling tools like commit_model_transaction and rollback_model_transaction by explaining the accumulation and deferred save behavior. The verb 'open' and resource 'write-transaction' make the function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly positions this tool as the start of a transaction and names the commit and rollback counterparts, giving the agent a clear sense of the intended workflow. It also notes the one-transaction-per-session constraint. However, it does not explicitly state when to avoid using it (e.g., for a single change) or compare it to non-transactional model-editing workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_dynamic_titleA
Bind a visual's TITLE to a text MEASURE (expression-based title): the measure (e.g. a SELECTEDVALUE narrative with an All/multiple fallback) becomes the title text and title show is forced on. Author the text measure first with add_dynamic_title_measure (model side). titleMeasure = "Table[Measure]" (or pass titleMeasureTable). page/visual resolve by name or displayName.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name or displayName | |
| titleMeasure | Yes | the title measure, "Table[Measure]" or just the measure with titleMeasureTable | |
| reportSessionId | Yes | ||
| titleMeasureTable | No | the measure's table (if not embedded in titleMeasure) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It reveals a key side effect ('title show is forced on') and a prerequisite, but does not address reversibility, existing title formatting, or error conditions. This provides some transparency but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, consisting of three focused sentences. Every sentence adds crucial information: the binding action, the prerequisite, and parameter syntax. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is reasonably complete for a binding operation with a clear purpose and prerequisite. It omits details about return values or error handling, but given the tool's simplicity and the absence of an output schema, the provided context is sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by explaining the titleMeasure syntax ('Table[Measure]') and the alternative with titleMeasureTable. It reinforces how page and visual resolve, which is already in the schema but the description clarifies the intended usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: binding a visual's title to a text measure. It specifies the effect ('becomes the title text and title show is forced on') and distinguishes from siblings like set_visual_title by focusing on expression-based titles and referencing add_dynamic_title_measure as a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it should be used after authoring a text measure with add_dynamic_title_measure, and it clarifies page/visual resolution. While it does not explicitly name alternatives or exclusions, the prerequisite and focus on dynamic measures imply 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.
bind_field_parameterA
Bind a FIELD PARAMETER to a visual so it actually swaps fields when opened in Desktop - the visual-side piece the model-side add_field_parameter cannot write. The chosen role's projection becomes the parameter COLUMN with active=true (the dynamic-projection marker) and the prototypeQuery Select swaps to the parameter column; the four model-side pieces (the NAMEOF calculated table, ParameterMetadata, SortByColumn, GroupByColumns) come from add_field_parameter - run it first. role defaults to the visual's measure well (Y, else Values).
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| role | No | the projection role to swap (Y | Values | Category | ...); defaults to Y, else Values | |
| visual | Yes | visual name | |
| parameterTable | Yes | the field-parameter table name (from add_field_parameter) | |
| parameterColumn | No | the parameter's display column; defaults to the table name (add_field_parameter's convention) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does a strong job: it discloses the active=true dynamic-projection marker, the prototypeQuery Select swap, and the dependency on add_field_parameter. It does not cover reversibility, permissions, or return values, but for this technical tool the core mechanics are well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and distinguishes the tool early. It is dense and jargon-heavy, but every sentence earns its place by explaining the mechanism, dependency, and defaults. Slightly long, but appropriate for this complex operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity, no annotations, and no output schema, the description provides substantial context: side effects, ordering, defaults, and relationship to add_field_parameter. It is largely complete for an agent to select and invoke correctly, with minor omissions around session-id semantics and failure scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 83% of parameters with descriptions, and the tool description adds extra meaning for role (default Y/Values), parameterColumn (defaults to table name), and parameterTable (comes from add_field_parameter). This goes beyond the raw schema, though reportSessionId remains without any explanatory context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Bind') and resource ('FIELD PARAMETER to a visual'), states the outcome ('actually swaps fields when opened in Desktop'), and explicitly distinguishes itself from the model-side add_field_parameter. This makes the tool's purpose immediately clear and differentiates it from its sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative add_field_parameter, explains the division of labor ('model-side pieces... come from add_field_parameter'), and instructs to run that tool first. It also provides the role default ('Y, else Values'), giving clear when and how 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.
bridge_reloadA
UNSAFE-FOR-PIPELINE (interactive attach only): hot-reload the on-disk PBIP/PBIR definition into the open Power BI Desktop (file.reload/v1) without close/reopen - the composition step after save_pbir edits the tree on disk. Refuses while the Desktop reports unsaved changes (or cannot report at all) unless force=true, because a reload discards the in-memory state.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Desktop process id from bridge_status / open_desktop | |
| force | No | reload even when the Desktop reports (or cannot rule out) unsaved changes, discarding them | |
| timeoutSec | No | per-call timeout in seconds (default 60) | |
| reloadModelDefinition | No | also reload the semantic model definition, not just the report (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the destructive nature: it is 'UNSAFE-FOR-PIPELINE', discards in-memory state, and refuses unless force=true when unsaved changes exist. It also explains the underlying reason (reload discards in-memory state), which is critical behavioral context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with a critical safety warning ('UNSAFE-FOR-PIPELINE'), and provides essential details without fluff. Every clause contributes to understanding the tool's purpose, risks, and conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers the tool's purpose, safety profile, workflow position, and refusal/force behavior. It is sufficient for an agent to decide when and how to invoke bridge_reload, given that the input schema fully documents parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by explaining that force=true is required to discard unsaved changes and that the reload discards in-memory state, which maps directly to the force parameter's semantics. It does not detail pid or timeoutSec, but the schema already documents these adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool hot-reloads the on-disk PBIP/PBIR definition into an open Power BI Desktop via file.reload/v1. It identifies the specific action, resource, and workflow position ('composition step after save_pbir'), distinguishing it from sibling tools like save_pbir or read_pbir.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong contextual guidance: it is 'UNSAFE-FOR-PIPELINE' and 'interactive attach only', which explicitly indicates when not to use it. It also notes the appropriate sequence ('after save_pbir') and the condition for using force=true. It does not name alternative tools explicitly, but the exclusion and sequence are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_screenshotA
UNSAFE-FOR-PIPELINE (interactive attach only): capture pixel-accurate PNG renders of report pages from a RUNNING Power BI Desktop (report.snapshot.capture/v1) and write them to outDir - the render-verification half of the edit/see loop. Pass pageName (page GUID or displayName) for one page, or allPages=true for the whole report (needs an on-disk PBIR definition to enumerate). Returns per-page paths + status.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Desktop process id from bridge_status / open_desktop | |
| scale | No | render scale 1..3 (default 2) | |
| outDir | Yes | directory the PNGs are written to (created if missing) | |
| allPages | No | capture every page of the report (needs the on-disk PBIR page list) | |
| pageName | No | page GUID name or displayName; omit when allPages=true | |
| timeoutSec | No | per-call timeout in seconds (default 60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the unsafe-for-pipeline nature, the need for a running desktop, the file-writing side effect, and the condition that allPages requires an on-disk PBIR definition. It also mentions return values. This goes beyond basic schema info, though it does not cover all potential edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the critical safety warning, then proceeds to action and usage details. Every clause provides value; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no output schema, the description adequately covers prerequisites (running desktop, interactive attach), input selection logic, and output (per-page paths + status). It does not document error cases or side effects beyond writing PNGs, but it is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description. The tool description adds extra meaning by explaining the relationship between pageName and allPages (e.g., page GUID vs displayName, allPages requires PBIR definition), which enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures pixel-accurate PNG renders of report pages from a running Power BI Desktop and writes them to outDir. It uses specific verbs and resources, distinguishing it from sibling tools like bridge_status or bridge_reload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it is the render-verification half of the edit/see loop, and explicitly warns it is 'UNSAFE-FOR-PIPELINE (interactive attach only)'. It explains how to choose between pageName and allPages. However, it does not explicitly name alternative tools, just implies when this one is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_statusA
UNSAFE-FOR-PIPELINE (interactive attach only): report every Power BI Desktop instance on this machine through the Desktop Bridge named pipe: bridge availability + manifest methods, the open file path, the unsaved-changes flag, the on-disk PBIR pages and the AS engine ports list_open_models discovers. A Desktop without the bridge (older build, or the 'external tool access through secure local APIs' preview switch off) degrades to a clear entry, never an error.
| Name | Required | Description | Default |
|---|---|---|---|
| connectTimeoutSec | No | per-instance pipe connect/probe timeout in seconds (default 3) |
TDQS
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 discloses that it is unsafe for pipelines and interactive-only, that it enumerates every instance, and that a missing bridge 'degrades to a clear entry, never an error'—important fallback behavior. It also names the named-pipe transport. These traits go well beyond a simple statement of purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense, with a front-loaded safety warning, a clear list of report contents, and a concise fallback behavior explanation. Every clause adds useful context; no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description effectively describes the return content by listing the report fields. It also covers edge cases (missing bridge), usage constraints (interactive-only), and the single parameter. For a tool with one optional parameter and no output schema, this description is thoroughly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, with a clear schema description: 'per-instance pipe connect/probe timeout in seconds (default 3)'. The tool description does not add extra semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'report[s] every Power BI Desktop instance on this machine through the Desktop Bridge named pipe' and enumerates the specific data reported (bridge availability, manifest methods, file path, unsaved-changes flag, PBIR pages, AS engine ports). It distinguishes itself from siblings by referencing list_open_models and framing its scope as all instances, not just models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly warns 'UNSAFE-FOR-PIPELINE (interactive attach only)', giving clear context that it is not for automated pipelines and should be used only during interactive attachment. It also mentions the sibling list_open_models as a source for AS engine ports, providing a connection to alternatives, though it does not explicitly state when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bring_to_frontA
Bring a visual to the FRONT of the page (z = current max + 1) so it renders on top of everything else.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the exact z-order computation ('current max + 1') and the rendering effect ('on top of everything else'). This goes beyond a simple 'bring to front' and gives the agent a precise model of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action and provides a precise technical detail. Every word contributes to understanding the tool's purpose and effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has no output schema. The description fully explains what happens (z-order set to max+1, visual on top) and implicitly covers the result. It does not describe error conditions or side effects, but these are likely minimal. Overall, adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: 'page' and 'visual' have descriptions, while 'reportSessionId' does not. The tool description adds no parameter-specific meaning beyond the schema. The parameters are simple and self-explanatory, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Bring a visual to the FRONT of the page') and the resource ('visual'), with a specific implementation detail (z = current max + 1). It distinguishes this tool from siblings like 'send_to_back' by explicitly targeting the front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when a visual should be rendered on top of all others. It does not explicitly mention alternatives or exclusions, but the targeted behavior is unambiguous given siblings like 'send_to_back' and 'set_visual_z_order'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_category_reportA
RECIPE 2: a beautified multi-page CATEGORY REVIEW (the standard FMCG scan template) in ONE call - Performance, Price & Volume, Share and Distribution pages, branded + themed + nav-linked. Conditionally-formatted Brand matrices, a volume/price combo chart and a segment share breakdown. config = JSON with: title, subtitle, headline, headlineLabel, brandColor, accentColor, logoPath, canvasWidth/canvasHeight, factTable, brandTable, brandColumn, segmentTable, segmentColumn, dateTable, dateColumn, slicers:[{table,column,title}], measures:{sales,volume,price,distribution,growth,usw,salesTrend}.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON config mapping the recipe to the client model | |
| reportSessionId | Yes |
TDQS
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 mentions 'in ONE call' and lists report contents, but fails to clarify side effects (e.g., whether it creates a new report or modifies the existing one), required permissions, or impact on the current session. This is a significant transparency gap for a complex build operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense run-on sentence that packs in many details but is hard to scan. It front-loads the core purpose ('RECIPE 2: a beautified multi-page CATEGORY REVIEW') but then becomes a wall of comma-separated fields, lacking structural breaks. Every sentence does earn its place, but formatting hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers a wide range of context: page types, visual components, and a detailed config schema. However, it omits key context like what happens with the generated report (creation vs. update), return behavior, or prerequisites, and the unexamined reportSessionId parameter. This is partially compensated by the rich description, but gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (config described, reportSessionId not). The description compensates by enumerating config fields (title, subtitle, page-specific tables, measures, slicers) in a structured list, adding meaningful detail beyond the schema's generic 'JSON config' description. However, reportSessionId remains unexplained, preventing a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'builds a beautified multi-page CATEGORY REVIEW' with specific pages (Performance, Price & Volume, Share, Distribution) and visual components, making it distinct from sibling build tools like build_executive_report. The verb 'build' and resource 'category report' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for FMCG category scan templates but provides no explicit guidance on when to choose this tool over alternatives like build_crossretailer_compare or build_executive_report. There are no exclusions or alternative suggestions, leaving the 'when vs. what' distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_crossretailer_compareA
RECIPE: a Total-Market compare page across two retailers/panels (pairs with conform_dimension). Config: compareTable/compareColumn (the conformed dimension), retailerA/retailerB ({label,table,measure}), optional totalMeasure, slicers, and the additive options clearPages/pagePrefix. Builds banner + slicer bar + a KPI row (Total Market / Retailer A / Retailer B) + a by-entity table + an A-vs-B grouped bar. The pbix must be CLOSED. Verify the render in Desktop after.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and provides substantial context: it lists what gets built, mentions optional 'clearPages/pagePrefix' additive behavior, and requires the pbix to be closed. It does not fully define the side effects of clearPages or error/failure behavior, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently front-loaded: purpose, config, outputs, then constraints. Every sentence adds meaningful information. The 'RECIPE:' label and the absence of visual formatting for nested config details slightly reduce scannability, preventing a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema or annotations, the description covers purpose, config structure, produced visuals, and operational prerequisites. It even includes a post-condition ('Verify the render in Desktop after'), making it sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the two input parameters are opaque strings, so the description must compensate. It does so thoroughly by specifying the config structure: compareTable/compareColumn, retailerA/retailerB with label/table/measure, optional totalMeasure, slicers, and clearPages/pagePrefix. This gives the agent a working understanding of the main parameter's content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a unique recipe: 'a Total-Market compare page across two retailers/panels' and pairs it with conform_dimension, distinguishing it from generic report builders. It also enumerates the specific output components (banner, slicer bar, KPI row, by-entity table, A-vs-B grouped bar), so an agent knows exactly what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: for total-market compare pages across two retailers, and notes it 'pairs with conform_dimension' as a prerequisite. It provides operational guidance ('The pbix must be CLOSED. Verify the render in Desktop after.') but does not explicitly list alternatives or when-not-to-use cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_executive_reportA
RECIPE: build a complete premium 'Executive' dashboard page in ONE call from a JSON config. Composes a brand theme, a navy banner + gold seam, a slicer filter-bar, a row of premium KPI cards (value + delta + sparkline), a hero trend line, and a 'by segment' bar chart whose colour encodes growth. Point it at any client model by mapping the config fields. config = JSON with: title, subtitle, headline, headlineLabel, brandColor, accentColor, logoPath (brand kit - palette + logo in banner), canvasWidth/canvasHeight (default 1280x720; use 1920x1080 for a Full-HD pro report), factTable, dateTable, dateColumn, trendMeasure, segmentTable, segmentColumn, segmentValueMeasure, growthMeasure, slicers:[{table,column,title}], kpis:[{measure,label,delta,trend}].
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON config mapping the recipe to the client model | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context about output components, config defaults (e.g., canvas size), and brand kit mapping. However, with no annotations provided, it fails to disclose whether the tool creates a new page or overwrites existing content, and it omits any permissions or side-effect information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-organized, starting with a clear directive and front-loading the purpose. The configuration list is dense but efficient, providing necessary details without excessive fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description explains the expected config in depth, but it does not explain the reportSessionId parameter, return values, or the effect on the target report. This leaves important context missing for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only vaguely describes config as a JSON string, but the description thoroughly details the config structure, fields, and defaults, adding significant meaning. However, the reportSessionId parameter is not described in either the schema or the description, leaving a gap for one of the two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a complete premium 'Executive' dashboard page from a JSON config, listing specific components (theme, banner, KPI cards, charts). This distinguishes it from sibling build tools by targeting a specific dashboard type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when wanting a complete executive dashboard page in one call, but it does not explicitly contrast with alternatives like build_grid_report or build_category_report. It also lacks any exclusions or 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_grid_reportA
RECIPE: a flexible GRID dashboard - compose ANY visuals in one call. config.visuals is an array of {type, title, span(1-12), rows, category:{table,column}, series:{table,column}, values:[{table,measure}]}; they flow into a 12-column grid that fills the canvas. Supports the full palette: column/bar/line/area/pie/donut/funnel/ribbon/combo + scatter/treemap + tables/cards. The open-ended composer behind the template library. clearPages/pagePrefix to append.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose some behavior: visuals flow into a 12-column grid, fill the canvas, and there are clearPages/pagePrefix append options. However, it does not mention whether existing page content is replaced, permissions required, or any side effects beyond appending, which leaves important behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, packing a lot of information about the config structure, supported visual types, and append behavior into a single paragraph. It front-loads the core purpose ('flexible GRID dashboard') and avoids redundancy, though some abbreviations (e.g., 'RECIPE') are unnecessary and slightly cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 2 parameters and no output schema, the description covers the main config structure but leaves gaps: reportSessionId is not described, the page target is not specified, and default clearing behavior is ambiguous. The mention of clearPages/pagePrefix hints at but does not fully explain the append mode, so the description is not fully complete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and lists config as a string, but the description explains the intended structure of config with a visuals array, including type, title, span, etc. This adds substantial meaning. However, it does not explain reportSessionId or clarify that config is a JSON-encoded string, which could confuse the agent about how to construct the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'build a flexible GRID dashboard' and describes the tool's specific role as an open-ended composer that supports any combination of visuals in one call. It distinguishes itself from sibling tools like build_executive_report and build_category_report by emphasizing its flexibility and the 'template library' context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool: for custom, flexible grid dashboards via 'open-ended composer behind the template library', and mentions clearPages/pagePrefix for appending. It doesn't explicitly name alternatives or say when not to use, but the context is clear enough for an agent to infer typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_bind_visualsA
BATCH set_visual_fields: rebind MANY visuals in one call instead of one round-trip each. items = JSON array of {page, visual, bindings:[{role,table,field,kind}, ...]}. One result row per target; a failing item never aborts the rest (partial failure is reported per item, never silently all-or-nothing).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of {page, visual, bindings:[{role,table,field,kind}]} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and delivers key behavioral details: it is a batch operation, partial failures are reported per item, and a failing item never aborts the rest. It also discloses the output shape ('one result row per target'). It could add more about mutation safety (rebinding overwrites) or permissions, but the disclosed behavior is solid and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first explains the batch purpose, the second defines the input format, and the third clarifies failure behavior. Front-loaded with 'BATCH set_visual_fields' for immediate clarity. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch binding tool with no output schema, the description covers the essential context: what it does, input structure, and failure semantics. The mention of per-item result rows gives a sense of the return format. Given the tool's moderate complexity, this is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description expands on the schema by defining the exact JSON array structure for 'items' ({page, visual, bindings:[{role,table,field,kind}]}), which is more detailed than the schema's brief description. The 'reportSessionId' remains undocumented in both, but it's a standard session identifier. Overall, the added structure meaningfully improves param understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'BATCH set_visual_fields: rebind MANY visuals in one call' which clearly states the verb (rebind), resource (visuals), and batch scope. It explicitly distinguishes itself from the single-binding sibling tool by noting 'instead of one round-trip each'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use this tool: when rebinding many visuals to avoid multiple round-trips. It references the alternative 'set_visual_fields' by name. However, it doesn't explicitly state when not to use it (e.g., for a single visual) or mention other batch tools, so it stops short of a full when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_visualsA
BATCH delete_visual: delete MANY visuals in one call. items = JSON array of {page, visual}. One result row per target; a missing visual fails its own row only, the rest still delete.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of {page, visual} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: per-row failure isolation ('a missing visual fails its own row only') and result structure ('One result row per target'). This is genuinely informative and goes beyond a simple statement of deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The 'BATCH delete_visual:' prefix is mildly redundant with the tool name, but it effectively front-loads the distinction. Every other word contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and failure behavior, which is essential. However, it omits any explanation of the reportSessionId parameter, the exact return format, or potential irreversible consequences, leaving notable gaps for a destructive batch operation without annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes items as 'JSON array of {page, visual}', and the description repeats this without adding new detail. The required reportSessionId is completely unexplained in both the schema and description, and the 50% schema coverage gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'delete MANY visuals in one call', which is a specific verb+resource combination. It explicitly distinguishes itself from the singular delete_visual sibling by emphasizing the batch aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for deleting multiple visuals at once, which is clear context. However, it does not explicitly name delete_visual as the alternative for single deletions or include when-not-to-use guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_set_visual_formatA
BATCH set_visual_format: apply formatting to MANY visuals in one call. items = JSON array of {page, visual, format:{vcObjects:{card:{prop:value}}, objects:{card:{prop:value}}}} (format takes the exact set_visual_format formatJson shape). One result row per target; per-item failures reported, the rest still apply.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of {page, visual, format:{...}} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key behavioral trait of partial failure: 'per-item failures reported, the rest still apply' and mentions the result shape ('One result row per target'). It doesn't cover permissions or rate limits, but the essential behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: it front-loads the purpose, then elaborates on input format and error-handling behavior. Three sentences cover all necessary information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description provides sufficient context: purpose, input format, partial-failure semantics, and result row behavior. It doesn't mention limits or prerequisites beyond reportSessionId, but the essentials are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for items (50% coverage), and the description adds deeper structure for items (JSON array with page/visual/format and vcObjects/objects sub-fields). reportSessionId is left to schema, but it's self-explanatory. The added detail for items compensates for the schema's brevity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately specifies 'BATCH set_visual_format' with the clear action 'apply formatting to MANY visuals in one call', naming both the resource (visuals) and the scope (many). It distinguishes itself from sibling set_visual_format by emphasizing batch operation and per-item failure handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly references set_visual_format by stating the format takes its exact formatJson shape, which implies set_visual_format as the single-item alternative. The phrase 'in one call' and 'MANY visuals' provides clear context for when to use this tool, though it doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_column_typeA
Power Query Change Type: set the data type of one or more columns. Appends Table.TransformColumnTypes to the table's M query. types is comma-separated as column:type, e.g. "Amount:number,OrderDate:date,Qty:int". type = text | int | number | date | datetime | bool | currency. Pass culture (e.g. "en-US", "en-NZ") to parse text against that locale's date/number conventions - the fix for silent type-conversion corruption on mixed-locale sources.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| types | Yes | column:type pairs, comma-separated | |
| culture | No | locale/culture for parsing, e.g. en-US (optional) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description tells the agent that the tool appends Table.TransformColumnTypes to the M query, disclosing the side effect on the query. It also warns about silent type-conversion corruption on mixed-locale sources and recommends culture as a fix, going beyond simple schema info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-structured: it gives the purpose first, then the syntax, then the culture caveat. Every sentence adds value—there is no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex due to the culture handling, and the description covers the core operation, the M query side effect, syntax, and valid types. It doesn't detail return values, but with no output schema, that's acceptable. A mention of handling multiple columns via comma-separation is included, making it largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description adds meaningful semantics for the key parameters: it defines the exact 'column:type' syntax, lists valid type values, and explains the purpose of culture. It does not add descriptions for sessionId, table, or partitionName, but those are likely standard across tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Power Query Change Type: set the data type of one or more columns', using a specific verb and resource. It further clarifies the exact M function (Table.TransformColumnTypes) and gives concrete examples, clearly distinguishing it from similar siblings like 'set_column_data_type'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (changing column types in Power Query) and even explains when the culture parameter is needed (mixed-locale sources). However, it does not explicitly state when not to use it or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_visual_typeA
Change a visual's TYPE preserving its data bindings, position and applicable formatting. A deprecated target is modernised automatically (card -> cardVisual, table -> tableEx, matrix -> pivotTable). Projection roles are remapped through the curated data-role registry (list_visual_data_roles): same-named roles carry straight over, the rest fall to the first compatible role by kind, and per-role caps drop overflow (reported, never silent). Data-formatting cards the new type does not declare are dropped and reported; chrome (title/background/border) always survives. Sort is cleared - re-apply with set_visual_sort.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name | |
| newType | Yes | the new visualType, e.g. lineChart | clusteredBarChart | tableEx (or a deprecated alias: card/table/matrix) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains side effects: deprecated aliases are modernised, role remapping rules are specified (same-named roles carry over, others fall to first compatible role, overflow is reported), data-formatting cards not declared are dropped and reported, chrome always survives, and sort is cleared. This is exceptional transparency for a complex mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is multi-sentence but every sentence contributes meaningful detail for a complex operation. It is front-loaded with the core purpose and then layers important details. There is no fluff or redundancy, and the length is justified by the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with many side effects, and the description covers them comprehensively: what is preserved, what is dropped and reported, what is cleared, and how to re-apply sort. Since no output schema is expected, return values are not needed. The description is complete for an agent to understand the full scope of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides good descriptions for newType including deprecated aliases, so the description does not need to add much there. It adds behavioral context around how parameters are interpreted (e.g., type modernisation, role remapping), but does not significantly elaborate individual parameter meanings beyond what the schema provides. With 75% schema description coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Change' and resource 'visual's TYPE', clearly stating the core function. It distinguishes itself from siblings like set_visual_format and set_visual_property by explicitly mentioning preservation of data bindings, position, and applicable formatting, and by detailing deprecated mapping behavior. This makes the purpose unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for retyping visuals while preserving certain attributes, and it even directs users to re-apply sort with set_visual_sort after use. It also references list_visual_data_roles for role remapping, giving auxiliary guidance. It does not explicitly name alternatives or state when-not to use it, but the context is sufficient to infer proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_directlake_fallbackA
Diagnose Direct Lake DirectQuery fallbacks: read the fallback-reason DMV and list model objects (calculated columns / calculated tables) that are unsupported in Direct Lake and force a fallback. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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 explicitly states 'Read-only,' which is a key safety trait, and describes the actions (reading DMV, listing objects). It does not cover prerequisites or exact return format, but the read-only nature is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action. Every word adds value, and it avoids redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, no annotations, and no output schema, so the description must do heavy lifting. It covers the purpose, method, and read-only trait, but it omits explanation of sessionId and does not describe the output structure beyond 'list model objects.' This leaves gaps for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (sessionId) with no description, and the tool description does not mention it at all. With 0% schema description coverage, the description fails to explain what sessionId refers to or how it should be used, providing no semantic value for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Diagnose') and resource ('Direct Lake DirectQuery fallbacks'), and details the exact actions: reading the fallback-reason DMV and listing unsupported model objects. This distinguishes it from sibling tools like 'warm_directlake_cache' or 'bridge_status' by focusing on diagnosis of fallbacks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when there is a Direct Lake DirectQuery fallback to diagnose, and states it is read-only. It does not explicitly mention exclusions or alternatives, but the purpose context is clear enough for an agent to differentiate from other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_relationshipsA
Diagnose 'the visual is blank' issues: for every Fact->Dim relationship, count dimension members that have NO matching fact rows (these render BLANK when a user selects them in a slicer - the #1 cause of an apparently-broken visual) and fact keys with no dimension match. Run this whenever a visual is empty but the model 'looks fine'.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the exact computation logic (count dimension members with no matching fact rows and fact keys with no dimension match) and explains why this causes blank visuals. It doesn't explicitly state that it is read-only, but 'Diagnose' strongly implies it, so this is not a major gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and provides necessary context without any filler. Every sentence earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal schema, no output schema, and no annotations, the description explains the core diagnostic logic and when to run it. It lacks only a brief note about the return format or non-mutating nature, but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the description does not mention 'sessionId' at all. While sessionId is likely a common session identifier, the description adds no semantic meaning beyond the name. The tool would benefit from at least stating that it operates on the model associated with the session.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: diagnosing 'the visual is blank' issues by checking Fact->Dim relationships. It uses a specific verb ('Diagnose') and resource, and distinguishes itself from sibling tools like fix_broken_visuals by focusing on counts of orphaned members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit trigger condition: 'Run this whenever a visual is empty but the model looks fine.' This gives clear guidance on when to use the tool. It doesn't mention alternatives or exclusions, but the context is straightforward enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_pagesA
Remove ALL pages from the report (e.g. to replace a stale report with a fresh one).
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the destructive action 'Remove ALL pages' but offers no additional behavioral details such as irreversibility, effect on the report session, or prerequisites. This is a significant transparency gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with a useful parenthetical example. It is front-loaded with the action, and every word contributes meaning—no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description conveys the core purpose and a common scenario. However, it leaves important gaps: no parameter semantics, no mention of side effects or reversibility, and no reference to related tools. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the required 'reportSessionId' parameter, and the schema provides no descriptions (coverage 0%). With low schema coverage, the description must compensate, but it fails to explain the parameter or how to obtain/use the session ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove ALL pages from the report') with a specific verb and resource, and the 'ALL' scope distinguishes it from more selective page removal. The example ('e.g. to replace a stale report with a fresh one') adds concrete context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example use case suggests when to use the tool (replacing a stale report), which gives clear context. However, it does not explicitly mention alternative tools (e.g., delete_page for specific pages) or provide exclusion criteria, so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_visual_stylingA
FLATTEN visuals to a plain 'non-premium' look the SAFE way. Removes the decorative chrome (border, dropShadow, stylePreset, visualHeader/visualHeaderTooltip and plain opaque backgrounds) from each visual's vcObjects. PRESERVES deliberate formatting by default: a custom-text or explicit-show title (e.g. a custom heading, or a title hidden on an overlay chart) and a transparent (overlay) background are kept. NEVER touches a button's navigation action (visualLink), bookmark/page-navigation actions, or the data + conditional formatting (singleVisual.objects). actionButton visuals are skipped entirely. This replaces the buggy 'delete the whole vcObjects bucket' flatten that destroyed meaningful titles/overlays and broke nav buttons. pageName omitted = all pages; visualName omitted = all visuals on the page. Set removeTitles=true to also strip deliberate titles (the old aggressive behaviour). Returns visuals touched, decorative keys removed, and a count of action/visualLink keys PRESERVED.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | No | page name or displayName (omit = all pages) | |
| visualName | No | visual name (omit = all visuals on the page) | |
| removeTitles | No | also remove deliberate custom/explicit titles (default false = keep them) | |
| reportSessionId | Yes | ||
| whiteBackground | No | also set the page background to solid #FFFFFF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: lists exactly which decorative keys are removed, which are preserved (titles, overlays, navigation actions, data/conditional formatting), and that actionButton visuals are skipped entirely. It also discloses safety improvements and return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although dense, every sentence adds distinct value: what is removed, what is preserved, what is never touched, the replacement of a buggy behavior, scope defaults, and the opt-in aggressive flag. No filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is fully complete for this tool's complexity: it explains scope, safety, destructive actions, preservation guarantees, and return values. No output schema exists, but the description states exactly what is returned. This is exceptional coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema: it explains omit behavior for pageName/visualName, the default and effect of removeTitles, and the whiteBackground effect. This complements the schema's 80% coverage with contextual usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('FLATTEN'), names the exact resource ('each visual's vcObjects'), and clearly scopes the operation (decorative chrome removed, deliberate formatting preserved). It also distinguishes itself from a prior buggy implementation, which helps differentiate it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool and how to control behavior: it explains the safe default (preserve titles/overlays), how to opt into aggressive behavior (removeTitles=true), and the scope semantics for pageName/visualName. It also contrasts with the old buggy flatten, giving clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_pageA
Deep-clone a report page: copies the whole section, assigns a fresh unique section name and a new ordinal at the end, sets newDisplayName, and regenerates EVERY visual's id so ids stay globally unique across the report. Returns the new page name.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePage | Yes | source page name or displayName to clone | |
| newDisplayName | Yes | tab title for the new page | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: deep copy, unique section name generation, ordinal placement, display name setting, visual ID regeneration, and return value. It does not mention permissions or whether the original page is affected, but the provided details are solid for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, perfectly front-loaded with the core action, followed by specific details and the return value. Every clause earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no annotations, the description covers the essential behavior, unique ID handling, and return value. It lacks explicit error/prerequisite information, but the tool appears self-contained and the description is sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with reportSessionId undocumented. The description adds meaning by clarifying that newDisplayName is the tab title while a fresh section name is auto-generated, which helps explain how that parameter is used. However, it does not fully compensate for the unexplained session ID parameter, bringing it to baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Deep-clone') with a clear resource ('a report page') and details the exact operations performed (copies section, assigns unique section name and ordinal, sets display name, regenerates visual IDs). This distinguishes it from sibling tools like clone_visual and rename_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies its use case: duplicating a page with unique IDs and a new display name. It does not explicitly mention alternatives or when not to use it, but the context is unambiguous given the sibling tools. A brief exclusion note would push it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_visualA
Deep-clone one visual (with a fresh unique id) onto its page or onto targetPage. On the same page the copy is nudged so it is visible. Returns the new visual id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName the visual is on | |
| visual | Yes | visual name to clone | |
| targetPage | No | destination page (omit = same page) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It discloses that the clone gets a fresh unique id, that the copy on the same page is nudged for visibility, and that it returns the new visual id. However, it does not explicitly state that the original visual remains unchanged or describe any failure modes, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no redundant words. Every sentence adds useful information (copy destination, nudging behavior, return value).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core operation, destination behavior, and return value, which is sufficient for a simple clone tool without an output schema. It doesn't detail what 'deep' includes, nor error conditions, but the essential usage information is present. Given the tool's low complexity, this is nearly complete, earning a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for page, visual, and targetPage, so the description adds minimal parameter-level detail. The term 'targetPage' is reiterated rather than expanded, and reportSessionId remains undocumented. With 75% schema coverage, the description doesn't significantly enrich parameter semantics, so a 3 is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('Deep-clone one visual') and resource (a specific visual), with scope ('onto its page or onto targetPage'). It distinguishes it from siblings like move_visual (which moves rather than clones) and add_visual (which creates new visuals from scratch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating a copy of an existing visual, either on the same page or another page. It gives clear context for the main use case, but it does not explicitly state when not to use it or mention alternatives (e.g., move_visual). Therefore it earns a 4 for clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
column_statisticsB
Run EVALUATE COLUMNSTATISTICS() - per-column Min / Max / Cardinality / MaxLength profiling for the whole model in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| maxRows | No | max rows to return (default 2000) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose side effects or behavioral traits. It states it runs a DAX query but does not explicitly say it's read-only, whether it requires special permissions, or that it may be expensive on large models. This is a significant gap for a tool with zero annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one succinct sentence (~14 words) that packs the tool's function, specific DAX call, output fields, and scope. Every word adds value; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does explain the return concept (per-column metrics), which is useful. However, it fails to mention the required sessionId or the maxRows parameter, and with no annotations it leaves out important context like read-only behavior and potential resource impact. It is adequate but incomplete for a smooth invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information. The schema covers only maxRows (50% coverage), and the required sessionId is left unexplained both in schema and description. The description should at least mention that a sessionId is required and what maxRows controls, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb 'Run' with the exact DAX function EVALUATE COLUMNSTATISTICS() and clearly defines the output scope (per-column Min/Max/Cardinality/MaxLength for the whole model). It distinguishes from sibling tools by emphasizing 'whole model in one call', making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when whole-model column profiling is needed ('for the whole model in one call'), but it does not explicitly state when to choose this tool over alternatives, nor does it mention exclusion criteria or when not to use it. This is implied usage rather than clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
combine_folder_filesA
Generate a robust combine-files-from-folder query as a new query: Folder.Files -> filter by extension -> per-file parse -> Table.Combine. Schema-drift safe: it does NOT use Power Query's default 'expand with a sample file' (which silently drops columns only present in later files). fileType = csv | excel. keepFilename adds Source.Name and Source.Folder Path columns; skipErrors wraps each file in try..otherwise so one bad file does not break the refresh. Refresh afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| fileType | No | csv | excel | csv |
| skipRows | No | rows to skip before headers (default 0) | |
| delimiter | No | CSV delimiter (default ,) | |
| sessionId | Yes | ||
| folderPath | Yes | the folder path | |
| skipErrors | No | wrap each file in try..otherwise to skip parse errors (default false) | |
| keepFilename | No | add Source.Name and Source.Folder Path columns (default false) | |
| promoteHeaders | No | promote the first row to headers (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does so thoroughly: it states the new query is non-destructive, avoids sample-file expansion to prevent column loss, explains the effect of fileType, keepFilename, and skipErrors, and even notes that a refresh should follow. There is no contradiction with structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four dense sentences that front-load the core verb and resource, then each sentence earns its place by explaining a key behavior: schema-drift safety, fileType semantics, keepFilename output columns, skipErrors behavior, and the refresh expectation. There is no filler or repetition of schema basics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema and no annotations, this description is remarkably complete. It covers what query is generated, how it differs from the naive approach, the parameters that affect output columns and error handling, and the refresh follow-up. Remaining details like delimiter and promoteHeaders are already covered by the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema already documents most parameters. The description adds valuable meaning beyond the schema: fileType is tied to the extension filter, keepFilename adds specific Source.Name and Source.Folder Path columns, and skipErrors is explained as per-file try/otherwise protection. It doesn't discuss name/sessionId, but those are standard identifiers and the schema handles the rest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Generate a robust combine-files-from-folder query as a new query' and outlines the query pipeline (Folder.Files -> filter by extension -> per-file parse -> Table.Combine). It clearly distinguishes the tool from siblings by naming its schema-drift-safe behavior and the problem it solves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the intended scenario (combining files from a folder) and explicitly contrasts the tool with Power Query's default 'expand with a sample file', signaling when this alternative is preferable. It doesn't name a direct sibling tool or provide hard exclusions, but the 'schema-drift safe' framing effectively implies the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_model_transactionA
Commit the open model transaction: one real SaveChanges applies every accumulated change (and any deferred refresh requests). If SaveChanges fails the transaction stays open so you can fix the model or roll back - nothing is half-committed.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose important behavior: SaveChanges applies everything atomically, and on failure the transaction remains open with no partial commit. It could additionally state what happens on success (e.g., transaction closed) but covers the key safety behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the core purpose. Every sentence adds meaningful detail about commit behavior and failure handling, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the primary commit semantics and failure behavior adequately. However, it omits how to obtain/use the required sessionId and what happens after a successful commit (does the transaction close?), leaving moderate gaps for an API with related transaction tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the required sessionId parameter at all. The description should compensate by explaining how to identify which open transaction to commit, but it offers no parameter-related guidance beyond the schema's bare field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Commit' and the resource 'open model transaction', explaining that it applies every accumulated change via a single SaveChanges. It distinguishes itself from rollback-related tools by describing the commit action and failure keeps transaction open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: to finalize an open transaction with accumulated changes. It also contrasts with rollback ('so you can fix the model or roll back'), but does not explicitly say 'use instead of rollback when you want to finalize' or mention prerequisites like having an open transaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concatenate_with_group_byA
Concatenate text within groups: Table.Group + Text.Combine (the inverse of split-to-rows). Collapses each group's textColumn values into one delimited string. keys is comma-separated; delimiter defaults to ", ". Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | the grouping key columns, comma-separated | |
| table | Yes | ||
| delimiter | No | delimiter between values (default ", ") | |
| sessionId | Yes | ||
| textColumn | Yes | the text column to concatenate within each group | |
| outputColumn | No | output column name (default "<textColumn> Concatenated") | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It states that the tool 'Appends one step to the table's M query' and 'Collapses each group's textColumn values into one delimited string', which provides some insight. However, it omits details about reversibility, error conditions, or permissions, making it moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, front-loading the main purpose and including only relevant details. Each sentence earns its place, covering functionality, parameter guidance, and side effects without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a transformation tool with no output schema, the description is fairly complete. It explains what the tool does, how it operates (grouping, delimiter), and the side effect on the M query. Optional parameters like partitionName are not mentioned but are covered in the schema, so the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the description restates what is already in the schema: 'keys is comma-separated' and delimiter defaults. It does not add meaningful new semantics for parameters beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Concatenate text within groups' with a specific action and resource. It also distinguishes itself by referencing 'the inverse of split-to-rows' and naming the underlying operations (Table.Group + Text.Combine), making its role clear among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context by noting it is the inverse of split-to-rows, implying when this tool should be used. However, it does not explicitly mention situations to avoid or name alternative tools, so it lacks exclusions but is not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conform_dimensionA
Cross-retailer / total-market builder. Two separate fact islands (e.g. a grocery-retailer fact and a second-retailer fact) can't be filtered by one slicer because they share no dimension. This creates a CONFORMED dimension (a calculated table of the distinct union of a column from each side) and relates it to both, so one slicer filters both retailers and combined measures ([Total Market] = [retailer A] + [retailer B]) compute correctly. Auto-materialises + recalcs. Turns two side-by-side islands into a true total-market view (the Phase-2 join).
| Name | Required | Description | Default |
|---|---|---|---|
| table1 | Yes | first source table (e.g. Dim_Products) | |
| table2 | Yes | second source table (e.g. Retailer2_Sales) | |
| column1 | Yes | column on the first table to union (e.g. Brand) | |
| column2 | Yes | column on the second table to union (e.g. Brand) | |
| keyName | Yes | the key/column name on the new table (e.g. 'Brand') | |
| newTable | Yes | name for the new conformed dimension table (e.g. 'Brand (All Retailers)') | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool 'auto-materialises + recalcs', which is useful. However, it does not mention potential side effects, such as whether existing relationships are modified, what happens if the new table already exists, or any permission requirements. The 'Phase-2 join' reference is vague. Overall, it adds some behavioral context but leaves safety and side-effect details undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized but every sentence provides value. It front-loads the purpose, then explains the problem, the mechanism, and the outcome. It could be slightly tightened (e.g., removing 'Turns two side-by-side islands into a true total-market view' as somewhat redundant with the first sentence), but overall it is well-structured and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 required parameters, no output schema, and no annotations, the description does a good job explaining the use case and behavior. However, it leaves gaps: it does not mention what the tool returns (if anything), whether it modifies existing relationships or just adds new ones, or any prerequisites like the tables must already exist. Given the complexity, the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (86%) with clear per-parameter descriptions. The description adds relational meaning by explaining that column1 and column2 are 'a column from each side' that form a 'distinct union', which helps the agent understand they must be compatible types and represent the same logical business key. It also clarifies keyName as the key column on the new table and newTable as the dimension name. This enriches the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a conformed dimension for cross-retailer analysis, with specific details like 'a calculated table of the distinct union of a column from each side' and 'relates it to both'. It distinguishes itself from siblings by describing the exact use case (two separate fact islands sharing no dimension) and the expected outcome (one slicer filters both retailers). The verb 'creates' is implicit and the resource is explicitly the conformed dimension, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear scenario for when to use the tool: when two fact tables from different retailers cannot be filtered together because they share no dimension. It explains the problem and the solution. However, it does not explicitly name alternatives or say when not to use it, though the sibling 'build_crossretailer_compare' might serve a similar purpose. This is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_modelA
UNSAFE-FOR-PIPELINE (interactive attach only): connects to a Power BI Desktop model a human already has open and returns a sessionId used by all model tools. Omitting port attaches to the most recently written workspace port, which is a guess, not a guarantee. Unattended jobs must launch their own Desktop instead of attaching.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Loopback port from list_open_models. Omit to attach to the newest live workspace port. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses the risk of omitting the port ('a guess, not a guarantee') and clearly states the tool's interactive-only nature. It does not explicitly mention failure behavior if no model is open, but the interactive attach context is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the critical safety warning front-loaded. Every clause earns its place: purpose, scope, return value, and a key caveat. No redundant or fluff content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is complete. It explains the interaction model, the return value (sessionId), the port behavior, and the constraint regarding unattended pipelines. No essential context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a solid baseline. The description adds value by elaborating on the consequence of omitting the port ('which is a guess, not a guarantee'), which goes beyond the schema's neutral description. This extra context aids correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('connects to') and a specific resource ('Power BI Desktop model'), and clearly distinguishes this tool from its siblings by noting it is 'interactive attach only' and returns a sessionId. It explicitly defines the scope (human-open model) and differentiates it from unattended alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly warns 'UNSAFE-FOR-PIPELINE (interactive attach only)' and states that unattended jobs must launch their own Desktop instead. This provides clear when-not-to-use guidance and an alternative approach, which is central to proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_xmlaA
Connect to a Fabric/Premium XMLA endpoint (powerbi://...) instead of local Power BI Desktop. Returns a sessionId that every session-based tool (run_dax, validate_dax, export_tmdl, run_bpa...) accepts unchanged - DAX runs against the Service, no Desktop needed. Endpoint/catalog/token default from DAXOPS_XMLA_ENDPOINT / DAXOPS_XMLA_CATALOG / DAXOPS_PBI_TOKEN; the token is held in memory only and never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| catalog | No | dataset name in the workspace - required with an endpoint (default: env DAXOPS_XMLA_CATALOG) | |
| endpoint | No | XMLA endpoint, e.g. powerbi://api.powerbi.com/v1.0/myorg/WorkspaceName (default: env DAXOPS_XMLA_ENDPOINT) | |
| accessToken | No | AAD access token (default: env DAXOPS_PBI_TOKEN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses important behavioral traits: it returns a sessionId accepted by downstream tools, defaults come from environment variables, and the token is held in memory only and never echoed. It does not cover session lifecycle or failure modes, but the disclosed security and integration behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-load the core action and immediately follow with return-value integration, then defaults and security. Every sentence adds unique value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a connection tool with 3 fully documented parameters, no annotations, and no output schema, the description is complete: it explains the return value (sessionId), downstream compatibility, service-versus-local context, environment defaults, and security handling. Nothing critical is missing for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents catalog, endpoint, and accessToken. The description adds no true parameter-level meaning beyond the schema except reinforcing the environment-variable defaults and the token-in-memory behavior, which is only tangential to parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Connect') and resource ('Fabric/Premium XMLA endpoint') and clearly distinguishes itself from local Power BI Desktop usage. The powerbi:// example and the explicit contrast with 'instead of local Power BI Desktop' leave no ambiguity about 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use it (before session-based tools such as run_dax, validate_dax, export_tmdl, run_bpa) and that it targets service endpoints instead of local Desktop. It does not explicitly name alternative tools like connect_model in a when-not-to-use sense, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_legacy_to_pbirA
BEST-EFFORT explode a legacy Report/Layout (.pbix or a raw Layout JSON file) into a PBIR definition tree written to a target folder (default .Report next to the source): pages -> page.json, visualContainers -> visual.json, generating GUID names. Returns a pbirSessionId over the new tree. FLAG: best-effort - open in Power BI Desktop to validate/upgrade. pbir->legacy is not implemented.
| Name | Required | Description | Default |
|---|---|---|---|
| legacyPath | Yes | absolute path to the legacy .pbix (or a raw Report/Layout JSON file) | |
| targetFolder | No | target folder for the PBIR tree (optional; defaults to <name>.Report beside the source) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by explaining the 'BEST-EFFORT' nature, the file mapping (pages -> page.json, visualContainers -> visual.json), GUID name generation, default output folder, and the returned pbirSessionId. It lacks details on error handling or side effects, but the core behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense yet efficient, front-loading the key action and resource. Every sentence adds value: the first covers inputs/outputs/defaults, the second explains the return value, and the final two provide critical caution and reverse-direction status. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a conversion tool and the absence of annotations and output schema, the description is remarkably complete. It specifies input formats, output tree structure, default location, return value, and best-effort flag with validation advice. It could mention overwrite behavior or read-only nature, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds meaning by clarifying that legacyPath can be a .pbix or raw Layout JSON file and that targetFolder defaults to '<name>.Report' next to the source. This goes beyond the schema by explaining the file type variations and default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'BEST-EFFORT explode a legacy Report/Layout (.pbix or a raw Layout JSON file) into a PBIR definition tree', using a specific verb ('explode') and resource, clearly distinguishing this from sibling tools that generate PBIP or work in PBIR. It also specifies the output structure and return value, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (converting legacy .pbix/Layout JSON to PBIR) and when not to use it ('pbir->legacy is not implemented'). It also flags that the output is best-effort and advises opening in Power BI Desktop for validation/upgrade. It does not explicitly name alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_csv_tableA
Create a fully-typed import table from a (staged) CSV in ONE call: reads the header + samples rows to infer each column's type (Int64/Double/String), builds the Csv.Document M, declares EVERY column automatically, and refreshes. Removes the add_data_column-per-column grind. Pairs with stage_excel_to_csv / unpivot_weekly_csv. Pass pathExpression to control how the M references the file (e.g. 'DataFolder & "file.csv"'); omit to embed the absolute path.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | new table name | |
| csvPath | Yes | absolute path to the CSV (read for header + type inference) | |
| sessionId | Yes | ||
| sampleRows | No | rows to sample for type inference (default 200) | |
| pathExpression | No | M File.Contents expression, e.g. DataFolder & "file.csv" (omit to embed the absolute path) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses the internal steps: reads header, samples rows, infers types (Int64/Double/String), builds Csv.Document M, declares every column, and refreshes. It also explains pathExpression behavior and the default of embedding the absolute path, giving a clear mental model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action. The first sentence packs the core workflow and benefits; the second addresses the key parameter nuance. No redundant or filler content, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create/mutation tool with no annotations and no output schema, the description is remarkably complete. It explains the full process, parameter control, and associated workflow. It doesn't need to describe return values (none specified) and sufficiently covers error-sensitivity by noting the CSV must be staged. The relationship to siblings rounds out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (4/5 params documented), with sessionId lacking description. The description adds valuable semantics beyond schema: clarifies csvPath as a 'staged' CSV, explains sampleRows role in inference, and provides a concrete pathExpression example with default behavior. This goes beyond the baseline and compensates for the missing sessionId context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a fully-typed import table from a (staged) CSV in ONE call' with a specific verb and resource. It distinguishes from siblings by mentioning 'Removes the add_data_column-per-column grind' and explicitly pairs with stage_excel_to_csv / unpivot_weekly_csv, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use context: when you need to import a staged CSV with type inference in one call, and contrasts with the alternative add_data_column approach. It also names companion tools (stage_excel_to_csv / unpivot_weekly_csv), guiding the agent on workflow integration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_date_tableA
Create a fully-formed date table in ONE call: Date, Year, Quarter, Month, MonthYear + sort-by columns + a Year>Quarter>Month hierarchy. Then relate your fact's date column to [Date]. Pass dateColumnRef (e.g. "Fact[Date]") to size the range to your data, else CALENDARAUTO() is used. target=pbip: pass pbipFolder instead of sessionId to write the SAME table as Desktop-faithful TMDL into a PBIP semantic model with NO engine (columns authored explicitly; data materialises on the first Desktop refresh).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | table name, e.g. Calendar | Calendar |
| hierarchy | No | also build a Year>Quarter>Month hierarchy | |
| sessionId | No | sessionId from connect_model (live engine; pass exactly one of sessionId / pbipFolder) | |
| pbipFolder | No | target=pbip: a PBIP <name>.SemanticModel / TMDL definition folder to edit OFFLINE (engine-free) | |
| dateColumnRef | No | date column to size the range, e.g. Fact_Sales[Week Ending] (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers key behavioral traits: creating the complete table in one call, using CALENDARAUTO when no dateColumnRef is given, and the offline PBIP mode with no engine and first-refresh materialization. It lacks details on overwrite/error behavior, but is still substantially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the core purpose. Each sentence covers a distinct aspect: creation output, relationship step, range sizing, and PBIP mode. It is dense but efficient, with no filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, the description covers the main functionality, two deployment modes, parameter interactions, and a necessary follow-up action (relating the date column). It omits sort-by column names and overwrite behavior, but these are not critical for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all parameters, but the description adds valuable meaning: mutual exclusivity of sessionId and pbipFolder, how dateColumnRef sizes the range with an example, and the 'SAME table' guarantee for pbipFolder. This decision logic goes beyond the schema's individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a full date table with specified columns (Date, Year, Quarter, Month, MonthYear), sort-by columns, and a hierarchy. It distinguishes itself from siblings by emphasizing 'in ONE call' and the specific PBIP offline mode, making the tool's unique value explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use dateColumnRef vs CALENDARAUTO, and the choice between sessionId and pbipFolder for different target scenarios. It does not compare directly with alternative tools, but offers strong within-tool usage context and a post-creation relationship step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pbir_pageA
Add a new page to a PBIR report: a fresh GUID folder definition/pages//page.json plus an update to pages.json (append to pageOrder). Returns the new page GUID name (use it for adding visuals).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| displayName | Yes | page title shown on the tab | |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the side effects (creating a GUID folder and appending to pageOrder in pages.json) and specifies the return value (the new page GUID). This goes beyond minimal mutation disclosure, though it omits potential auth requirements or error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence front-loads the primary purpose and then provides essential implementation details (GUID folder, pages.json update, return value). Every clause adds value, and there is no wasted text or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with 4 parameters and no output schema, but the description compensates by clearly describing the side effects, return value, and file-level operations. It does not cover error scenarios or prerequisites like session validity, but given the tool's moderate complexity and the sparse schema, the description is largely complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only displayName is described). The description does not explain the meaning or usage of width, height, or pbirSessionId, nor does it indicate defaults or units. With such low schema coverage, the description needed to compensate but did not, leaving the agent to infer parameter semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('a new page to a PBIR report'), clearly distinguishing from sibling tools like add_pbir_visual by detailing the exact file structure created (a GUID folder and pages.json update). It provides concrete implementation details that uniquely identify this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to create a new page) and notes that the returned GUID is useful for adding visuals, but it does not explicitly contrast with alternatives like clone_page or rename_page, nor does it state when not to use it. Usage context is clear but exclusions and direct alternative guidance are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dax_benchmarkA
Benchmark a DAX query: optionally clear the engine cache (XMLA ClearCache on the session database), then run the query N times returning {coldMs, warmMs[], rowCount}. Timings are client wall-clock per run (execution + full row drain) - honest about what is measured; pair with start_dax_trace/stop_dax_trace for the FE/SE split and cache hits.
| Name | Required | Description | Default |
|---|---|---|---|
| runs | No | number of timed runs (default 2, max 20) | |
| query | Yes | the DAX query (bare table expressions get EVALUATE prefixed) | |
| sessionId | Yes | ||
| clearCache | No | issue ClearCache first so run 1 is a true cold run (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It honestly discloses the optional engine cache clearing, the number of runs, the return values (coldMs, warmMs[], rowCount), and that timings are client wall-clock per run including full row drain. It also explicitly states what is measured, making the tool's behavior highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently front-loaded with the purpose, and every sentence carries useful information. It is slightly longer than strictly necessary, but the additional details about measurement methodology and tool pairing justify the length without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and absence of an output schema, the description is remarkably complete. It covers the workflow, return values, side effects (cache clearing), and provides guidance on complementary tools. No critical aspects are missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (3 of 4 parameters documented). The description adds meaning by explaining the number of runs ('run the query N times') and the optional cache clearing, and it also describes the return structure which indirectly clarifies parameter effects. Although sessionId is not elaborated in the description, the schema plus the overall workflow provide adequate context, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool benchmarks a DAX query, a specific verb+resource, and clearly distinguishes it from siblings like start_dax_trace/stop_dax_trace and run_dax. It also specifies the output format and optional cache clearing, leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining the benchmarking workflow and explicitly recommends pairing with start_dax_trace/stop_dax_trace for deeper FE/SE split analysis. It does not explicitly state when not to use this tool or exclude alternatives, but the complementary usage is clearly indicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dax_lintA
PURE OFFLINE DAX static linter - no live session needed for a raw expression (the gap run_bpa cannot cover: linting a CANDIDATE expression before it is applied). Pass expression for offline lint; or sessionId to lint live measures (all, one table's, or one measure via table+measure). Rules with line numbers, severity and a rewrite hint: FILTER(wholeTable) inside CALCULATE, nested CALCULATE, '/' where DIVIDE belongs, IFERROR wrapping, '+ 0' blank suppression, EARLIER usage, SUMMARIZE used for aggregation, and UNKNOWN_FUNCTION - the AI-hallucinated-function catcher, checked against a maintained static catalogue (model UDFs auto-admitted in session mode; admit new engine functions via extraFunctions, comma-separated).
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | with sessionId: restrict to one table | |
| measure | No | with sessionId: restrict to one measure | |
| sessionId | No | live model sessionId - lints measures instead of a raw expression | |
| expression | No | a raw DAX expression to lint offline (mutually exclusive with sessionId) | |
| extraFunctions | No | comma-separated extra function names to accept as known |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, and it delivers: it discloses offline vs. session behavior, lists specific lint rules, mentions the UNKNOWN_FUNCTION catcher with a maintained static catalogue, and explains how extraFunctions can extend the catalogue. This goes far beyond a basic 'linter' label.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the key phrase 'PURE OFFLINE DAX static linter' and packs in modes, rules, and extensibility without fluff. It could be split into multiple sentences for readability, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description specifies that results include 'line numbers, severity and a rewrite hint.' It fully covers all parameters, both usage modes, the rule list, and the extension mechanism, making it complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage for all five parameters, so the baseline is 3. The description adds meaningful context by clarifying the mutual exclusivity of expression and sessionId, the use of table+measure for restricting to one measure, and the comma-separated format for extraFunctions. This elevates it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool is a 'PURE OFFLINE DAX static linter' and immediately distinguishes it from the sibling tool run_bpa by calling out the gap it fills ('linting a CANDIDATE expression before it is applied'). This makes the purpose and scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: use offline mode for raw expressions without a live session, or use sessionId to lint live measures. It also names the alternative (run_bpa) and explains the gap the tool covers, making the choice clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dax_suggest_rewriteA
Concrete BEFORE/AFTER rewrites for a DAX expression's lint findings - pure offline, no session. Mechanical fixes are applied: 'a / b' -> DIVIDE(a, b), IFERROR(x / y, alt) -> DIVIDE(x, y, alt), a trailing '+ 0' removed, and FILTER(Table, single-column predicate) inside CALCULATE collapsed to the bare predicate. Findings with no safe mechanical fix (EARLIER, SUMMARIZE aggregations, nested CALCULATE, ...) come back as hint-only notes. Also returns the full suggested expression with every non-overlapping rewrite applied.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | the DAX expression to rewrite | |
| extraFunctions | No | comma-separated extra function names to accept as known |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden, and it excels: states it is offline with no session, lists specific mechanical fixes, explains that unsafe findings become hint-only notes, and notes the return of the full suggested expression. This provides rich behavioral detail beyond the structured schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the main purpose, and each sentence adds value by listing transformations and fallback behavior. It is slightly longer than the calibration high example but remains focused and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, it describes the key return value (full suggested expression) and the hint-only notes for non-mechanical findings. It does not detail the exact response structure, but given the complexity, the description is sufficiently complete for an agent to understand the tool's input and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with descriptions for both 'expression' and 'extraFunctions'. The tool description does not add any additional parameter semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides concrete BEFORE/AFTER rewrites for DAX lint findings, which distinguishes it from sibling tools like dax_lint or validate_dax. It specifies the action (rewrite) and resource (DAX expression's lint findings) with concrete examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a DAX expression's lint findings' implies when to use it, and 'pure offline, no session' gives a clear context. However, it does not explicitly name alternative tools or state when not to use it, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declare_changed_propertyA
Mark a property as locally CHANGED so a schema sync does not wipe your override on a composite / Direct Lake object (name, isHidden, formatString, summarizeBy etc. are otherwise treated as source-owned and reset on refresh). objectType = model | table | column | measure | hierarchy | partition | relationship; pass the object's table where needed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the object's name | |
| table | No | the object's table (for column/measure/hierarchy/partition) | |
| property | Yes | the property to protect, e.g. Name, IsHidden, FormatString, SummarizeBy | |
| sessionId | Yes | ||
| objectType | Yes | model | table | column | measure | hierarchy | partition | relationship |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the transparency burden. It discloses that the tool marks a property as locally changed, explains the effect (prevents refresh from resetting source-owned properties), and specifies applicable object types. It does not mention reversibility or permissions, but the core behavioral trait is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and carries substantial information without fluff. The first sentence front-loads the purpose; the second adds necessary detail about objectType and table. The punctuation is slightly heavy but the content is dense and relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, no output schema, no annotations), the description covers the key aspects: what it does, why it's needed, when to use it, and how parameters relate. It lacks an explicit example call or mention of sessionId, but the provided context is largely sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3. The description adds value by explaining the objectType enum values, clarifying that table is needed only for certain object types, and giving concrete property examples (Name, IsHidden, FormatString, SummarizeBy). This supplements the schema descriptions effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a precise verb-resource pair ('Mark a property as locally CHANGED') and clearly states the tool's purpose: preventing schema sync from wiping overrides on composite/Direct Lake objects. It also distinguishes itself from sibling tools by explaining the unique scenario (name, isHidden, formatString, etc. being source-owned and reset on refresh).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need to protect a property override on a composite/Direct Lake object from being reset by schema sync. It also gives usage guidance for objectType and table ('pass the object's table where needed'), but it does not explicitly mention alternatives or negative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_udfA
Define a DAX User-Defined Function (a net-new model object). The body carries its own typed parameters and return type. params is a comma-separated name:type list (type = Scalar | Table | ColumnRef | MeasureRef | AnyRef | Numeric | String; omit a type for an untyped param). UDFs need compatibility level 1702+, which is auto-bumped if lower. Inspect existing UDFs with list_udfs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | function name, e.g. AddMargin | |
| params | No | comma-separated name:type params, e.g. amount:Scalar, cost:Scalar (optional) | |
| bodyDax | Yes | the function BODY DAX (the expression after =>), e.g. amount * (1 - cost) | |
| sessionId | Yes | ||
| returnType | No | return type: Scalar | Table (optional) | |
| description | No | description (becomes the /// doc comment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses an important side effect (compatibility level auto-bump to 1702+) and clarifies that the object is net-new. However, it does not mention permissions, reversibility, return values, or error conditions, leaving significant behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, all relevant and information-dense. It front-loads the purpose and immediately provides the key parameter format and compatibility detail, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects of a complex creation tool: purpose, parameter syntax, compatibility side effect, and how to inspect existing UDFs. It omits details about return values or session handling, but given the complexity, it is largely complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the baseline is 3. The description adds meaningful semantics beyond the schema by detailing the params format (comma-separated name:type list with enumerated types and optional type) and clarifying that bodyDax is the expression after =>, which helps correctly construct the UDF.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Define' and the resource 'DAX User-Defined Function', noting it is a net-new model object. This distinguishes it from sibling tools like add_measure or set_shared_expression, which target different object types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool (defining a UDF) and explicitly mentions inspecting existing UDFs with list_udfs as an alternative for inspection. It also notes compatibility level auto-bump, but doesn't explicitly exclude other creation tools like add_measure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bookmarkB
Delete a report-level bookmark by name or displayName.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | bookmark name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and target, but fails to disclose any side effects, reversibility, permission requirements, or error behavior (e.g., what happens if the bookmark does not exist). This is a significant gap for a delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero fluff. Every word earns its place, and it directly conveys the essential purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too sparse. It clarifies that the bookmark is 'report-level' but fails to explain the required session parameter, the permanence of deletion, or any error handling expectations. Given the simplicity of the operation, the description could still be considered adequate, but the lack of behavioral context lowers the score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'name' parameter by clarifying it can be either the bookmark name or displayName, which goes beyond the schema's terse string description. However, it does not explain 'reportSessionId' at all, and schema coverage is only 50%. The description partially compensates but leaves one parameter semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (Delete), the resource (report-level bookmark), and the key selection criteria (by name or displayName). It distinguishes itself from sibling tools like add_bookmark, update_bookmark, and list_bookmarks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting report-level bookmarks, but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites beyond the obvious. No guidance is provided on when not to use it or how it relates to other bookmark-manipulation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calculation_itemB
Delete a calculation item from a calculation group.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the calculation item to delete | |
| table | Yes | the calculation group table | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only restates the basic delete action without clarifying whether deletion is permanent, what happens to dependent objects, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no redundant content, appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple, the description omits important context such as the purpose of sessionId, any side effects, and whether the deletion is cascading or reversible. No output schema or annotations help fill the gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents 2 of 3 parameters (table and name), but the tool description adds no new information about them. sessionId remains entirely unexplained, and the description merely repeats the concept of deleting a calculation item.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (Delete), the resource (calculation item), and the container (calculation group), clearly distinguishing it from sibling tools like add_calculation_item and update_calculation_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not state when to use this tool over alternatives like delete_measure or update_calculation_item, nor any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendarB
Delete a table's calendar definition (removes the PBI_Calendar annotation - the Wave R convention while the native calendar TOM objects are absent from this build).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the calendar table | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool removes an annotation, which is a specific side effect, and explains the background. However, it does not state whether the operation is reversible, what happens if the annotation does not exist, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a parenthetical qualification, which is efficient and front-loads the primary action. The technical jargon about Wave R and TOM objects adds context but could be seen as slightly dense; still, no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It does not explain what happens on success or failure, whether the table must exist or already have a calendar definition, or any prerequisites. It also leaves the sessionId parameter unexplained, which is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: the table parameter has a description, but sessionId is undocumented. The description says 'a table's calendar definition' but does not add detail about how the table parameter is used or what sessionId represents. Thus it fails to compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Delete' with a clear resource 'a table's calendar definition' and explains the exact mechanism (removes the PBI_Calendar annotation). This distinguishes it from sibling tools like update_calendar or list_calendars, and the Wave R convention note adds meaningful context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context about when this tool is relevant (remember the Wave R convention while native TOM objects are absent), which implies when to use it, but it does not explicitly compare with alternatives like update_calendar or create_date_table. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cultureA
Delete a culture (locale) and all its translations and linguistic metadata from the model.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | the culture locale to delete, e.g. fr-FR | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the operation cascades to translations and linguistic metadata, which is valuable. However, it omits other behavioral traits such as reversibility, permissions required, or error behavior (e.g., if locale does not exist), leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is immediately understandable and front-loaded with the action and object. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters and no output schema, the description covers the core effect. However, the absence of any annotation means the description should also clarify operational context such as permanence, dependency checks, or session requirements. It provides partial completeness but not full.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (locale has a description, sessionId does not). The tool description does not compensate for this gap; it does not mention either parameter by name or provide additional meaning beyond what the schema already states. sessionId remains entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete'), a clear resource ('a culture (locale)'), and specifies the full scope ('all its translations and linguistic metadata from the model'). This clearly distinguishes it from siblings like delete_translation, which targets a single translation, and add_culture, which is an inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for removing an entire locale with all associated data, but it does not explicitly mention when to prefer this over alternatives (e.g., delete_translation for individual translations) or state any preconditions or exclusions. Usage context is implied but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_hierarchyC
Delete a hierarchy from a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| hierarchy | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. 'Delete' implies a destructive operation, but the description does not mention irreversibility, cascading effects, permissions required, or what happens if the hierarchy is referenced elsewhere. It lacks important behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is easy to read and front-loaded with the key verb. However, it is too sparse to fully cover the tool's behavior and parameters, so the conciseness comes at the cost of completeness. It is appropriate only for a very simple, obvious operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It does not explain the effect, return value, or prerequisites. While the operation concept is simple, the lack of any supplementary context makes the tool hard to invoke confidently for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 required parameters with no descriptions, and the description provides no additional meaning. It clarifies that the operation is 'from a table,' hinting at the 'table' parameter, but the 'hierarchy' and 'sessionId' parameters remain unexplained. With 0% schema description coverage, the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: 'Delete a hierarchy from a table.' It identifies the resource (hierarchy) and its scope (within a table). It is mostly specific but does not explicitly distinguish itself from sibling tools like remove_hierarchy_level, which could cause confusion about whether it deletes an entire hierarchy or a level within one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as remove_hierarchy_level or set_hierarchy_properties. The description provides no context about prerequisites, side effects, or situations where this tool is appropriate. It is a bare statement with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_measureC
Delete a measure from a table.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the deletion is permanent or reversible, whether dependent visuals or other measures are affected, what permissions are required, or what error conditions may arise. Only the intent to delete is communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff—every word serves the primary purpose. It is efficient, though it could carry additional useful detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 3-parameter tool with no annotations, no output schema, and a large sibling toolset, a one-line description is insufficient. The agent lacks information about return values, side effects, prerequisites, and distinctions from similar delete tools, making the description incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it maps 'name' to the measure and 'table' to the containing table, but this merely restates the parameter names without adding detail on identifier formats, scoping, or uniqueness. sessionId is left entirely unexplained, leaving a significant semantic gap for a required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete'), a clear resource ('measure'), and scope ('from a table'), which precisely states the tool's function. It distinguishes itself from sibling tools like add_measure, update_measure, move_measure, and delete_calculation_item by naming the operation and the target object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as delete_template_measure or delete_calculation_item, nor any prerequisites, exclusions, or context for choosing it. It is a bare operation statement with no usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageB
Delete a report page by name or displayName.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the full burden for disclosing behavioral traits. It only says 'Delete', which implies mutation, but does not disclose whether deletion is permanent, whether it cascades to page contents, whether there are constraints (e.g., cannot delete the last page), or what the response looks like. This is a significant transparency gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. It delivers the essential purpose and a key parameter nuance in an efficient manner. There is no waste, and the structure is optimal for its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though the tool is simple (2 required parameters, no output schema), the description does not provide enough context for an agent to confidently invoke it. It omits the meaning of reportSessionId, possible return/error responses, and any prerequisites or side effects. Given no annotations and no other documentation, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no property descriptions), so the description must compensate. It does clarify that the pageName parameter accepts either a name or displayName, which is useful. However, it completely omits the reportSessionId parameter, which is required but unexplained. The description only partially helps with parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Delete') on a specific resource ('a report page') and adds a distinguishing detail ('by name or displayName'), which differentiates this tool from other delete tools like delete_visual or delete_measure. The verb and object are unambiguous, making the purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to delete a report page. However, it does not explicitly state when not to use it or suggest alternative tools (e.g., clear_pages for clearing content, or delete_visual for removing specific visuals). The absence of alternatives is acceptable for a simple tool, but the guidance is only implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_partitionA
Delete a partition from a table (and its data on the next save). Refuses to delete the table's ONLY partition - use delete_table for that.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the partition to delete | |
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden of disclosing behavioral traits. It reveals that the deletion is not immediate but occurs 'on the next save', and that the tool refuses to delete the only partition, which is safety-critical behavior. This is meaningful, though it does not mention permissions, error cases, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action. Every clause serves a purpose: the first defines the action, the second adds a critical safety exception and directs to an alternative. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description captures the essential purpose and a key safeguard, but leaves gaps: it does not explain what 'on the next save' means precisely, does not describe the expected outcome or error behaviors, and does not clarify the role of sessionId in the operation. Given that this is a destructive operation with no annotations or output schema, the description is somewhat incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions cover only the 'name' parameter (33% coverage). The description does not add meaningful details for 'sessionId' or 'table'; it only implicitly identifies 'partition' and 'table'. The unmentioned sessionId is left completely opaque, so the description fails to compensate for the schema's low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function as 'Delete a partition from a table', specifying the verb and the resource. It also distinguishes itself from the sibling tool delete_table by explicitly noting that it refuses to delete the table's only partition and directs the user to delete_table instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'when not to use' scenario and names the alternative tool: 'Refuses to delete the table's ONLY partition - use delete_table for that.' It also hints at the delayed effect of deletion ('on the next save'), giving context on the tool's behavior. However, it does not discuss other potential alternative tools or general conditions for when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_perspectiveC
Delete a perspective from the model.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| perspective | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action 'delete' but does not reveal side effects such as permanence, permission requirements, or impact on related model objects. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and object. Every word earns its place with no filler or redundancy, achieving high efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and lack of output schema, this one-liner is insufficient. It omits important context such as session identification, error handling, or reversibility, making the description incomplete for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for explaining parameters. It mentions 'perspective' but does not clarify 'sessionId', and it adds little beyond the schema's property names. The description fails to provide meaningful parameter semantics beyond what is already evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a perspective from the model' uses a specific verb and resource, clearly indicating the action. It distinguishes from siblings like 'add_perspective' and 'remove_from_perspective' by focusing on deleting the perspective itself, though it does not explicitly contrast these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention conditions, prerequisites, or exclusions, leaving the agent without context for tool selection among similar perspective-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_relationshipA
Delete a relationship. Identify it by name, or by all four of fromTable/fromColumn/toTable/toColumn (order-insensitive).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | relationship name (omit to identify by the column pair) | |
| toTable | No | to-side table | |
| toColumn | No | to-side column | |
| fromTable | No | from-side table | |
| sessionId | Yes | ||
| fromColumn | No | from-side column |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a relationship is deleted and how to identify it, but it does not mention permanence, error behavior (e.g., if the relationship doesn't exist), or any side effects. For a destructive tool, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and immediately followed by necessary identification criteria. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the two identification modes but leaves ambiguities: it does not clarify what happens if both name and the four columns are provided, or if neither is provided. It also omits expected return values or error behavior. Given the tool's simplicity, it is moderately complete but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining that identification can be done either by name OR by all four column parameters, and that the quartet is order-insensitive. This clarifies parameter usage in a way the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a relationship') with a specific verb and resource. It distinguishes from related sibling tools like add_relationship, update_relationship, and delete_template_relationship by focusing on deletion and providing identification methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool to delete a relationship. It provides two identification methods but does not explicitly state when to use this tool over alternatives (e.g., delete_template_relationship for template relationships) or any prerequisites/exclusions. This is minimal but acceptable guidance, so it earns a 3 rather than a 2 or 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_roleB
Delete a security role (and its row-level/object-level rules and members) from the model.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important side effect: deleting the role also deletes its row-level/object-level rules and members. However, with no annotations provided, it does not mention whether the operation is irreversible, what permissions are required, or how it behaves if the role 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the main verb 'Delete', and includes critical scope information about cascading deletion without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and a key side effect, making it adequate for a simple delete tool. However, it lacks usage guidance, parameter semantics, and any mention of error conditions or prerequisites, leaving notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are required but the description offers no details about them. 'name' is somewhat self-explanatory as the role name, but 'sessionId' is unclear. With 0% schema description coverage, the description should compensate, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a security role and explicitly notes it also removes associated row-level/object-level rules and members. This specific verb+resource+scope distinguishes it from sibling tools like remove_role_member or delete_measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as remove_role_member or set_role_permission. The description implies use when deleting a role but does not specify exclusions, prerequisites, or cases where another 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.
delete_tableA
Delete a table from the model (and any relationships that touch it). Use to remove stale/broken tables before a clean rebuild.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: that relationships touching the table are also deleted. However, it does not mention permanence, permissions, or other side effects, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes a practical use case without any waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and barren schema, the description is incomplete. It lacks parameter semantics, preconditions (e.g., open model), and reversibility information, making it insufficient for agents to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no information about the parameters 'name' or 'sessionId'. The agent is left without any clue about what these fields mean or how to use them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a table from the model') and the specific resource, and differentiates from sibling tools like delete_measure or delete_relationship by specifying the target is a table and that relationships touching it are also removed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use case: 'Use to remove stale/broken tables before a clean rebuild.' This gives context on when to use the tool, though it does not explicitly mention when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_template_measureA
Delete a measure from a table in a closed .pbit template's model, editing the DataModelSchema JSON on disk with no Power BI Desktop. Fails if the measure does not exist. Written back in place (with a .bak guard).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | measure name | |
| table | Yes | home table of the measure | |
| pbitPath | Yes | path to the closed .pbit template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It fully discloses key behaviors: editing DataModelSchema JSON on disk, the requirement of no Power BI Desktop, the fail condition if the measure is missing, and the .bak guard for safety. This is exceptionally transparent for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, all packed with essential information (action, target, mode, failure condition, backup guard). No filler words, well-structured for quick parsing by an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation with no output schema, the description covers all critical aspects: what it does, how it does it (on disk), the no-Desktop constraint, the failure condition, and the backup guard. The agent has enough context to use it safely and effectively. No significant information gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: it clarifies that pbitPath refers to a closed .pbit template, and the overall operation modifies the on-disk JSON model, which enriches the interpretation of all three parameters. But it doesn't add detailed per-parameter syntax or format beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete a measure), the target (a table in a closed .pbit template's model), and the underlying mechanism (editing DataModelSchema JSON on disk). It also distinguishes from sibling tools like delete_measure by specifying the .pbit template context and lack of Power BI Desktop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when working with a closed .pbit template without Power BI Desktop. It also warns that the operation fails if the measure does not exist, which guides the user to verify existence first. However, it doesn't explicitly mention alternative tools or say 'use this instead of delete_measure', so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_template_relationshipA
Delete the relationship whose endpoints match from/to from a closed .pbit template's model, editing the DataModelSchema JSON on disk with no Power BI Desktop. Fails if no such relationship exists. Written back in place (with a .bak guard).
| Name | Required | Description | Default |
|---|---|---|---|
| toTable | Yes | the 'one' side table | |
| pbitPath | Yes | path to the closed .pbit template | |
| toColumn | Yes | the 'one' side column | |
| fromTable | Yes | the 'many' side table | |
| fromColumn | Yes | the 'many' side column |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses key behavioral traits: it edits DataModelSchema JSON on disk, writes back in place with a .bak guard, and fails if the relationship does not exist. This gives the agent a clear safety and failure profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no unnecessary words. It front-loads the action, then provides failure and persistence details, earning its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the schema's full parameter coverage, the description is complete. It covers the operation, failure mode, and side effects (file write with backup), which is more than sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter descriptions, so the baseline is 3. The description adds minimal parameter context beyond 'from/to' mapping to the fromTable/fromColumn and toTable/toColumn fields, but does not add extra syntax or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a relationship from a closed .pbit template's model, specifying exact endpoint matching (from/to) and the file-based context. It distinguishes itself from siblings like delete_relationship by emphasizing 'closed .pbit template' and editing DataModelSchema JSON on disk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use this tool: when working with a closed .pbit template and no Power BI Desktop. It does not explicitly name alternatives but the context implies it is for offline/template scenarios versus other relationship tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_translationA
Delete ONE object translation: the translated Caption / Description / DisplayFolder of a model object in a culture. objectType = table | column | measure | hierarchy | model (column/measure/hierarchy need the table).
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | host table for column/measure/hierarchy objects | |
| culture | Yes | the culture, e.g. fr-FR | |
| property | Yes | Caption | Description | DisplayFolder | |
| sessionId | Yes | ||
| objectName | Yes | the object's name | |
| objectType | Yes | table | column | measure | hierarchy | model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It provides useful constraints (objectType values, table requirement for column/measure/hierarchy) and clarifies scope ('ONE' translation). However, it does not disclose irreversibility, behavior when the translation does not exist, return values, or any side effects beyond deletion, leaving important context to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences, front-loaded with the core action and scope, followed by the necessary objectType clarifications. Every sentence contributes essential information with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple delete operation with no output schema and no annotations, the description covers the essential aspects: what is deleted, which properties, which object types, and a key prerequisite (table). It lacks explicit guidance on alternative tools and edge-case behavior (e.g., missing translation), but overall it provides sufficient context for the tool's intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), but the description adds meaningful context not present in the schema: it specifies the allowed objectType values and the rule that column/measure/hierarchy require the 'table' parameter. It also clarifies that 'property' refers to Caption, Description, or DisplayFolder, which is not enumerated in the schema. This adds value beyond the raw parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete), the resource (one object translation), and the specific properties affected (Caption / Description / DisplayFolder). It also enumerates the objectType values and notes the table dependency for certain types, which distinguishes it from sibling tools like set_translation and list_translations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's purpose clear but does not explicitly state when to use it versus alternatives such as set_translation or list_translations. It implies usage for deleting a single translation of a specific property, but lacks guidance on cases where one should use a different tool, such as when deleting an entire culture or bulk operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_variationB
Delete a date-navigation variation from a column (by variation name).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| sessionId | Yes | ||
| variation | Yes | the variation name to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action 'delete' without disclosing consequences, error behavior, idempotency, or any side effects. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the verb 'Delete'. Every word adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with 4 required parameters, no annotations, and no output schema, the description is too minimal. It lacks details on what happens to dependent visuals, whether the operation is reversible, and what errors might occur. This makes it insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers only 25% of parameters (variation has a description). The description adds 'from a column' and 'by variation name', helping to clarify that 'table' and 'column' identify the target and that 'variation' is the name. However, sessionId and table remain unexplained, and the description does not fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete', the resource 'date-navigation variation from a column', and the method 'by variation name'. This distinguishes it from sibling tools like add_variation and list_variations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to remove a specific variation from a column) but does not explicitly state alternatives or exclusions. Since there is no alternative delete_variation tool, the context is sufficient but lacks formal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_visualC
Delete a visual from a page by its visual name.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose destructive nature and side effects. It simply says 'Delete a visual' without mentioning permanence, irreversibility, or any required permissions. This is a significant gap for a deletion operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the action front-loaded. It is not verbose, but it is too terse, omitting valuable context that could be added without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is incomplete. It omits any note on session requirements, error handling for non-existent visuals, or reversibility. It also fails to differentiate from bulk_delete_visuals within the sibling-tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only clarifies visualName as the identifier of the visual to delete, leaving reportSessionId and pageName unexplained. It fails to compensate for the schema's lack of parameter details, especially with three required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a visual') and the identifier ('by its visual name'), distinguishing it from sibling tools like add_visual, move_visual, or bulk_delete_visuals. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as bulk_delete_visuals or clear_pages. The description lacks context, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demote_headersA
Power Query Use Headers as First Row: push the current column names back down into a data row. Appends Table.DemoteHeaders to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does state that it 'appends Table.DemoteHeaders to the table's M query', which clearly indicates a mutation of the Power Query. However, it lacks details about potential side effects, prerequisites, reversibility, or error conditions, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a leading phrase ('Power Query Use Headers as First Row'), a clear explanation of the action, and the specific technical operation. Three sentences with no wasted words, front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the description covers the core purpose and effect on the M query. However, given no output schema and no annotations, it lacks parameter details and usage context. It is adequate but not fully complete for an agent to invoke it confidently without additional schema inspection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only 33% coverage (only partitionName has a description). The description does not explain the 'table' or 'sessionId' parameters, their formats, or how they relate to the operation. It merely refers to 'the table's M query', providing minimal hint that 'table' is an identifier. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb ('push the current column names back down into a data row') and names the exact Power Query function (Table.DemoteHeaders). It also distinguishes from sibling tools like promote_headers by explicitly mentioning the direction ('back down'), making the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you want headers as first row) via the Power Query step name, but it does not provide explicit guidance on when not to use it or mention alternatives such as promote_headers or other transform tools. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_column_typesA
Power Query Detect Data Type: auto-detect and apply each column's type from its data. Appends a self-contained Table.TransformColumnTypes whose {column, type} pairs are inferred from the first non-null value of every column - no schema needs to be supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that detection is based on the first non-null value of each column, that the transformation is appended, and that the generated step is self-contained. It does not discuss side effects like overwriting existing types, but the core 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, then concise technical detail about the inference rule. Every word contributes; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity, lack of annotations, and no output schema, the description explains what happens, how the types are inferred, and that no external schema is needed. It doesn't mention return value or failure cases, but the transformation outcome is clear enough for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description does not clarify the roles of sessionId or table. The description adds meaning about the table's data being used for inference, but it fails to compensate for the undocumented parameters, leaving the agent to guess their format and purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('auto-detect and apply') and names the resource (each column's type), clearly distinguishing it from siblings like set_column_data_type by covering all columns automatically. It also names the exact M function (Table.TransformColumnTypes), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you want automatic type detection without supplying a schema. However, it does not explicitly compare to alternatives like set_column_data_type or change_column_type, nor does it state 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.
detect_report_formatA
Classify a report source as legacy | pbir | pbip. Robust on both a .pbix (a ZIP: Report/Layout = legacy, Report/definition/ = pbir) and a PBIP project folder (a *.pbir pointer or a definition/ folder). Returns the classification plus the evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | absolute path to a .pbix file or a PBIP project folder |
TDQS
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 explains what the tool returns ('classification plus the evidence') and reveals robust handling of both .pbix and PBIP structures. It could add error/edge-case behavior, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no redundant filler. The technical detail is compact and functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with no output schema, the description adequately covers input types, classification categories, and return value. It lacks edge-case behavior but otherwise fulfills the information needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 'path' at 100% coverage, so the baseline is 3. The tool description adds minimal extra meaning beyond the schema's description, though it reinforces the accepted input types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Classify') and resource ('a report source'), enumerating the three possible outputs (legacy | pbir | pbip). It also distinguishes this tool from siblings by noting its specific behavior on both .pbix and PBIP project folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use it: for classifying report sources as legacy, pbir, or pbip. It describes the relevant file/folder structures (Report/Layout vs Report/definition/), effectively scoping the tool's use. It doesn't explicitly name alternatives, but the domain is distinct from the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_auto_date_timeA
Turn OFF Auto date/time: sets the model's __PBI_TimeIntelligenceEnabled annotation to 0 (so Power BI Desktop stops auto-generating a hidden LocalDateTable per date column) and removes any auto date/time tables already in the model. Slims the model and stops auto-date bloat.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the action (sets annotation, removes tables) and the benefit (slims model), but does not disclose potential side effects such as impacts on existing date hierarchies, time intelligence measures, or reversibility. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main action in the first phrase. Every sentence adds value: the first explains the mechanism and effect, the second summarizes the benefit. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and only one parameter, so the description is relatively complete for a simple mutation. However, it omits important context such as prerequisites (e.g., an open model), reversibility, and potential downstream effects on existing visuals or measures that depend on auto date/time tables. This is a notable gap for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only one parameter (sessionId) with 0% description coverage. The description does not explain what sessionId refers to or how it relates to the operation, although it indirectly implies the model associated with the session. Given the low schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Turn OFF Auto date/time') and identifies the exact mechanism (sets __PBI_TimeIntelligenceEnabled to 0, removes auto date/time tables). This distinguishes it from sibling tools like 'set_annotation' or 'mark_as_date_table' by focusing on a specific, well-defined operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to slim the model and stop auto-date bloat) and explains the underlying problem (Power BI auto-generating hidden LocalDateTable). It doesn't explicitly mention alternatives or exclusions, but the use case is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
document_reportA
One-call Markdown documentation artifact for a report: pages, every visual (type, position, size, title, field bindings), page/report filter counts, bookmarks and the theme - rendered purely from the existing readers. When outPath is given the Markdown is also written to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| outPath | No | optional path to write the .md file to | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that rendering is 'purely from the existing readers' (indicating a read-only operation) and that disk output only happens when outPath is provided. It doesn't mention return format or permissions, but key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main function and then a conditional side effect. No redundant words; the structure is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers what it generates and the optional file-write behavior. It could be more explicit about the return value when outPath is absent, but the phrasing 'also written to disk' implies the Markdown is otherwise returned. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes outPath but not reportSessionId. The description echoes the outPath behavior ('When outPath is given... written to disk') but adds no meaning for the required reportSessionId parameter, leaving it unexplained. Partial compensation at best.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a Markdown documentation artifact for a report, listing specific contents (pages, visuals, filters, bookmarks, theme). This is a specific verb+resource and distinguishes it from sibling tools that perform narrower report operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a single comprehensive documentation action ('One-call') but does not explicitly state when to use it versus alternatives, nor any prerequisites or exclusions. It provides clear context but no direct guidance on when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_columnA
Power Query Duplicate Column: copy a column under a new name. Appends Table.DuplicateColumn to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column to duplicate | |
| newName | Yes | the new (duplicate) column name | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that the tool appends Table.DuplicateColumn to the M query, which implies a mutation of the table's query. However, it does not disclose whether this is reversible, what permissions are needed, or what effects occur on existing query steps, leaving some gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the tool's name and primary action, and contains no redundant information. Every word contributes to understanding the tool's purpose and mechanism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple transformation tool with no output schema and no annotations, the description adequately communicates the core behavior and the underlying M query change. It lacks explicit usage guidelines and parameter prerequisites, but the schema fills most structural gaps, and the tool is simple enough that this description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for column, newName, and partitionName (60% coverage), and the description reinforces the meaning of column and newName with 'copy a column under a new name'. It does not add clarity for table and sessionId, which remain undocumented in both schema and description. Overall, the description adds some value but does not fully compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool copies a column under a new name, using the specific verb 'copy' and the resource 'column'. It also mentions the implementation detail of appending Table.DuplicateColumn to the M query, which distinguishes it from similar column operations like rename_column or remove_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The 'Power Query Duplicate Column' label gives a general context, but it does not clarify situations where this tool is preferred over other column manipulation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dynamic_unpivot_other_columnsA
Dynamic Unpivot Other Columns: unpivot every column NOT in keepColumns, deriving the unpivot set from Table.ColumnNames at evaluation time so NEW attribute columns added later auto-unpivot. keepColumns is comma-separated. Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| keepColumns | Yes | the columns to keep (not unpivot), comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. It discloses a key behavioral trait: the unpivot set is derived at evaluation time, causing new columns to auto-unpivot. It also states that it appends one step to the table's M query, providing side-effect information. It does not mention reversibility or error conditions, but the disclosed behaviors are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence adds meaningful content. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a transformation tool with no output schema, the description covers the essential aspects: what it does, the dynamic behavior, the meaning of keepColumns, and the side effect on the M query. It misses potential details about partitionName behavior or error cases, but these are minor given the overall clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes keepColumns and partitionName, and the description adds little beyond that. It reiterates that keepColumns is comma-separated and explains its role, but this is already in the schema. With 50% schema coverage, the description could compensate, but it does not add new parameter-level details for the other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool unpivots every column not in keepColumns, which is a specific verb and resource. It also distinguishes from sibling tools by highlighting the dynamic derivation from Table.ColumnNames at evaluation time, setting it apart from static unpivot alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when new attribute columns may be added later and should auto-unpivot. However, it does not explicitly mention alternatives or provide when-not-to-use guidance. This gives clear context without exclusions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_measure_offlineA
Add or edit a measure on a CLOSED .pbix and save it back to disk. Briefly opens the file in the local Power BI Desktop (a Desktop window appears), adds/updates the measure via TOM, then drives Desktop's own File > Save (scripted Ctrl+S) so the change lands in the .pbix, and closes Desktop. An existing measure is updated (omit a field to keep it); a new one needs expression. Reports the before/after expression, format string and display folder, and whether the disk save was confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | measure name | |
| table | Yes | home table of the measure | |
| pbixPath | Yes | path to the closed .pbix | |
| expression | No | DAX expression (required to create a new measure; omit to keep an existing one) | |
| timeoutSec | No | seconds to wait for the model to load before giving up (default 180) | |
| saveRetries | No | scripted File > Save attempts before giving up (default 3) | |
| formatString | No | format string, e.g. "#,0" or "0.0%" (omit to keep) | |
| displayFolder | No | display folder (omit to keep) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers comprehensively. It discloses that the file is briefly opened in local Power BI Desktop, changes are made via TOM, saving is driven by scripted Ctrl+S, and Desktop is closed afterward. It also specifies the report output (before/after expression, format string, display folder, and disk-save confirmation). This is unusually transparent about side effects and behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place. The first sentence states the core purpose, the middle explains the mechanism and side effects, and the final sentence covers behavioral distinctions and reporting. It is front-loaded with the most important information and contains no filler or redundant restatements of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters and no output schema, the description provides enough context to use the tool effectively: it explains the offline workflow, the side effect of opening Desktop, the create-vs-update semantics, and what the tool returns. Combined with the 100% schema coverage, this is a fully self-contained description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds significant meaning beyond the schema: it explains the conditional semantics for expression ('a new one needs expression') and the update behavior for formatString/displayFolder ('omit a field to keep it'). This directly clarifies non-obvious parameter interactions that the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Add or edit a measure on a CLOSED .pbix and save it back to disk.' This clearly distinguishes it from sibling tools like add_measure or update_measure by emphasizing the closed file state and the save-back behavior. The mechanism (opens Power BI Desktop, uses TOM, saves scripted Ctrl+S) further clarifies the tool's unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use: 'on a CLOSED .pbix', and explains the resulting behavior (Desktop window appears, file is saved). It also covers the distinction between creating a new measure (needs expression) and updating an existing one (omit fields to keep). However, it does not explicitly name alternative tools or state when not to use it, so it stops short of full usage-versus-alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_model_offlineA
STRUCTURE-ONLY offline model edit (NO Power BI Desktop, NO live engine): deserialize a TMDL model (a definition/ folder or a PBIP .SemanticModel - the model half export_tmdl / generate_pbip / unpack_to_source produce), apply the edits to the object tree, and re-serialize edited TMDL to outputFolder. The model STRUCTURE (measures, relationships, calc columns, tables, partition definitions) round-trips exactly. DATA IS NOT PRESERVED: TMDL carries no compressed VertiPaq data, so import (M) tables come back empty until a refresh. Use this for template / thin-model edits and source-control workflows. For a DATA-preserving edit of a loaded report use persist_model_edit (offline, M-free) or persist_open_model (Desktop). NOTE: a cold data .pbix that imports via M cannot be read offline - first export its model with export_tmdl from a live session, then edit that folder here.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | JSON array of edit objects, each with an "op" | |
| tmdlFolder | Yes | a TMDL definition folder, a PBIP <name>.SemanticModel, or a project folder containing one | |
| outputFolder | Yes | output folder for the edited TMDL (created/overwritten) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses key behaviors: data is not preserved, M tables return empty until refresh, structure round-trips exactly, and offline cold .pbix cannot be read. It also clarifies that no Power BI Desktop or live engine is involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being lengthy, every sentence adds value. It is front-loaded with the core constraint ('STRUCTURE-ONLY... NO Power BI Desktop, NO live engine') and organized with clear warnings and usage guidance. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, behavior, limitations, and alternatives comprehensively. The only gap is not detailing the expected format of the 'edits' parameter, but the schema already provides a baseline and this is a minor omission given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all three parameters, so the baseline is 3. The description adds limited context about tmdlFolder being produced by export_tmdl/generate_pbip/unpack_to_source, but does not elaborate on the edits JSON structure beyond the schema's 'op' mention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'STRUCTURE-ONLY offline model edit' and outlines the full deserialize-edit-reserialize workflow. It explicitly contrasts with sibling tools persist_model_edit and persist_open_model, making the tool's unique niche clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States exactly when to use this tool ('Use this for template / thin-model edits and source-control workflows') and names alternatives for data-preserving edits. The NOTE about cold .pbix files provides a critical prerequisite, guiding correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_visual_aggregationA
Change the AGGREGATION applied to a field projected on a visual: wraps the Select node's Column/Measure in an Aggregation { Function }. aggregation=Sum|Avg|Min|Max|Count|CountNonNull|Median|StdDev|Var (index 0..8). field='Table.Field' (the queryRef). scopedEvalBaseline=true wraps it in a context-free ScopedEval/AllRolesRef baseline (FLAG: confirm shape in Desktop).
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| field | Yes | the field, 'Table.Field' | |
| visual | Yes | visual name (from list_visuals) | |
| aggregation | Yes | Sum|Avg|Min|Max|Count|CountNonNull|Median|StdDev|Var | |
| reportSessionId | Yes | ||
| scopedEvalBaseline | No | wrap in a ScopedEval/AllRolesRef context-free baseline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the internal behavior (wrapping Column/Measure in an Aggregation function), the allowed function values with indices, and the scopedEvalBaseline flag's effect, including a caution to confirm the shape. However, it does not mention side effects, reversibility, permissions, or output, leaving gaps in full behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, conveying the core purpose in the first clause and packing parameter guidance into parentheticals. It is front-loaded and avoids extraneous content, though the density of technical jargon slightly affects readability. It earns a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no output schema, the description covers the primary operation and key parameters, but leaves out details on return values, success/failure conditions, and prerequisites. The explicit 'FLAG: confirm shape in Desktop' signals uncertainty, indicating the description is not fully complete but adequate for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, giving a baseline of 3. The description adds meaningful semantics beyond the schema by explicitly listing the aggregation enum values and their index mapping, clarifying the field format as 'Table.Field' (queryRef), and explaining the nuanced scopedEvalBaseline flag. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Change the AGGREGATION applied to a field projected on a visual' – a specific verb and resource, distinguishing it from related tools like set_aggregation or set_summarize_by. It further explains the underlying operation (wrapping in an Aggregation function), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is clear: to modify the aggregation of a field already placed on a visual. While it does not explicitly name alternatives or exclusions, the context ('field projected on a visual') is sufficiently specific to guide the agent. The inclusion of parameter details also reinforces 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.
eval_dax_offlineA
Evaluate a DAX query against a CLOSED .pbix and return the result rows (columns + rows). Briefly opens the file in the local Power BI Desktop (a Desktop window appears), runs the query against its engine, then closes Desktop. Accepts a full 'EVALUATE ...' query or a bare table expression (EVALUATE is prepended). Same result shape as run_dax, but no session / no manually-open Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | DAX query (EVALUATE ...) or a table expression | |
| pbixPath | Yes | path to the closed .pbix | |
| timeoutSec | No | seconds to wait for the model to load before giving up (default 180) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It openly states that the tool briefly opens the file in Power BI Desktop (a window appears), runs the query, then closes Desktop, and explains how bare table expressions are handled. It does not explicitly state that the file remains unmodified, but the context implies a read-only evaluation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each contributing useful information: what it does, the side effect (Desktop window), and how input differs from an alternative. It is front-loaded with the core purpose and avoids any redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description tells the result shape (columns + rows). It also covers the execution lifecycle (open, run, close), the accepted input forms, and how it differs from `run_dax`. It could mention error behaviors or timeout details, but the essential information for correct invocation is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3. The description adds extra meaning by clarifying that `dax` may be a full EVALUATE query or a bare table expression (EVALUATE is prepended) and that `pbixPath` must point to a CLOSED .pbix. This goes beyond the plain parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Evaluate') and resource ('DAX query against a CLOSED .pbix'), and clearly states the output shape (columns + rows). It also distinguishes itself from the sibling tool `run_dax` by noting the same result shape but no session and no manually-open Desktop, which unambiguously differentiates it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly provides usage guidance by contrasting with `run_dax` ('Same result shape as run_dax, but no session / no manually-open Desktop'). This tells an agent when to choose this tool (closed file, no existing session) without explicitly stating 'use when X, use run_dax when Y'. It also warns that a Desktop window appears, which is a side-effect to consider.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_service_queryA
Run a DAX query against a PUBLISHED dataset over REST (POST .../executeQueries) - no Desktop, no live model session. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | the DAX query, e.g. EVALUATE TOPN(10, 'Sales') | |
| datasetId | Yes | dataset id | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | workspace (group) id |
TDQS
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 add valuable context: the HTTP method (POST), endpoint, authentication requirements (AAD token, env var fallback), and token non-echoing. However, it does not disclose return format, error behavior, or whether the query is read-only, which are relevant for a REST execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, starts with the action verb, and packs essential constraints (published dataset, REST, no Desktop, token handling) with no filler. Every phrase adds value, making it highly concise while preserving clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, execution environment, and authentication, which is substantial. However, it lacks any mention of what the query returns, pagination, or error handling, which would be expected given there is no output schema to clarify results. It is adequate for a simple execution tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so all parameters are already documented. The description adds meaning beyond the schema, especially for accessToken: it specifies the required AAD scopes, mentions the DAXOPS_PBI_TOKEN fallback, and notes the token is never echoed. This enriches the parameter semantics beyond the basic schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run a DAX query' with a specific resource: 'PUBLISHED dataset over REST'. It explicitly contrasts with local execution ('no Desktop, no live model session'), which distinguishes it from sibling tools like run_dax or eval_dax_offline. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by noting it runs against a PUBLISHED dataset over REST and is not for Desktop or live sessions. However, it does not explicitly name alternatives or state 'use this when you need X instead of Y'. This leaves the usage context inferred rather than explicitly excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_columnA
Power Query Expand Column: surface inner fields of a structured column. Appends Table.ExpandRecordColumn / Table.ExpandTableColumn / Table.ExpandListColumn to the table's M query. kind = record | table | list (default record). fields (comma-separated) selects which inner fields to surface for record/table; ignored for list.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | record | table | list (default record) | |
| table | Yes | ||
| column | Yes | the structured column to expand | |
| fields | No | inner fields to surface, comma-separated (required for record/table) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that it appends Table.ExpandRecordColumn/ExpandTableColumn/ExpandListColumn to the table's M query, which is an important behavioral trait. It also explains parameter interactions (fields ignored for list). It does not cover error handling or reversibility, but the core behavior is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states purpose, the second packs parameter behavior. No redundancy, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description successfully explains the operation and key parameters, but lacks details on return values, error conditions, or prerequisites. With no output schema or annotations, the agent may require additional inference about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 67% coverage and good descriptions for kind and fields. The description adds the 'ignored for list' behavior and clarifies the default kind, though the schema's null default slightly conflicts. It doesn't add semantics for sessionId, table, or partitionName, but these are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('surface inner fields of a structured column') and identifies the specific M functions appended. This distinguishes it from sibling tools that focus on other transformations like split_column or merge_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: the tool is for expanding structured columns in Power Query using record/table/list semantics. It does not explicitly list alternative tools or exclusions, but the usage scenario is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_data_dictionaryB
Export the model's data dictionary (tables, columns, measures with descriptions/types/format strings/DAX, plus relationships) rendered as Markdown or HTML, with a description COVERAGE score - the fraction of visible objects carrying a description (the missing-descriptions gap). Rendered from the TOM tree only; no queries are run.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | md | html | md |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It explicitly states 'Rendered from the TOM tree only; no queries are run,' which reveals important performance and safety traits. It also mentions a coverage score feature and the content included. However, it does not disclose whether any write operations occur, return value structure, or error conditions, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long sentence containing multiple clauses, parentheses, and a semicolon. It packs in a lot of detail but is not ideally front-loaded; the most critical information (export of data dictionary, formats) comes first, but the coverage score explanation and TOM-tree note feel appended. It is moderately concise but could be broken into clearer sentences or bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality, content, and a key behavioral trait (no queries run). However, with no output schema, it does not specify what the tool returns (e.g., a Markdown string, a file, a JSON object). It also leaves undefined terms like 'visible objects' and does not mention error handling or prerequisites. For a moderately complex export tool, it is adequate but has notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: format has a description ('md | html'), but sessionId has none. The description does not explain sessionId's role (presumably identifying the model), nor does it add any detail about format beyond what the schema provides. The phrase 'the model' implies but does not explicitly connect to sessionId. Thus, the description does not compensate for the missing sessionId semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Export the model's data dictionary'), identifies the resource (tables, columns, measures with descriptions/types/format strings/DAX, plus relationships), and specifies output formats (Markdown or HTML). It distinguishes this tool from siblings by focusing on the data dictionary plus a unique coverage score, which is not mentioned in sibling tools like document_report or export_tmdl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of scenarios where this export is preferred over document_report or get_model_summary, and no exclusions or prerequisites are stated. The only hint is that it uses the TOM tree and runs no queries, but this is not framed as a selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_dataflow_modeljsonA
Export a Power BI dataflow model.json to disk from a set of entity definitions. entities is a JSON array of {name, m, attributes:[{name,dataType}]} where m is the entity's full M query and dataType = string|int64|double|decimal|date|dateTime|time|boolean|guid. The query mashup is embedded at the root pbi:mashup.document. FLAG: the inner pbi:mashup layout is best-known, NOT verified against a real export.
| Name | Required | Description | Default |
|---|---|---|---|
| culture | No | culture (default en-US) | |
| entities | Yes | JSON array of {name, m, attributes:[{name,dataType}]} | |
| sessionId | Yes | ||
| outputPath | Yes | output file path for model.json | |
| dataflowName | Yes | the dataflow name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a significant limitation with the FLAG about the pbi:mashup layout not being verified, which adds useful transparency. However, it does not mention whether the output file is overwritten, whether directories need to exist, or what error/return behavior to expect, leaving gaps for a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using three sentences to cover purpose, input format, and a critical caveat. It is front-loaded with the main action and every sentence earns its place without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, no annotations), the description covers the most complex parameter (entities) thoroughly and flags the main uncertainty about the pbi:mashup layout. It does not describe return values or file-handling behavior, but for an export tool that writes to disk, the provided context is quite complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3. The description adds meaningful detail beyond the schema by enumerating the allowable dataType values (string|int64|double|...), clarifying that 'm' is the entity's full M query, and noting that the query mashup is embedded at the root. This helps agents construct valid 'entities' input, though other parameters like culture and sessionId are not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Export'), a specific resource ('Power BI dataflow model.json'), and a destination ('to disk'). It distinguishes itself from sibling tools like export_tmdl and export_data_dictionary by specifying the output format and input requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to generate a dataflow model.json from entity definitions, and it details the required 'entities' structure. However, it does not explicitly state when to use this tool over alternatives (e.g., export_tmdl) or provide exclusion criteria, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_tmdlA
Serialize the live model to TMDL text files (Microsoft's official serializer) - the model half of a PBIP project, fully text and source-control-friendly. The foundation for generating projects without a live Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| outputFolder | Yes | output folder for the .tmdl files (will be created/overwritten) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It mentions 'fully text and source-control-friendly' but fails to disclose that the output folder will be overwritten (only stated in the schema). It also does not clarify whether the operation is read-only or what side effects exist beyond writing files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences deliver the core purpose immediately with no redundancy. The front-loaded verb and resource make it easy to scan, and every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations and no output schema, so the description must provide essential context. It does explain the purpose and general use case, but leaves gaps around behavioral side effects, parameter semantics, and the expected return/output structure. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage, the description should compensate for the undocumented 'sessionId' parameter, but it does not mention it at all. The description also does not add meaning beyond the schema's note about 'outputFolder' being created/overwritten.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Serialize the live model to TMDL text files' with a specific verb, resource, and output format. It also differentiates itself as 'the model half of a PBIP project,' distinguishing it from sibling tools like import_tmdl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is 'the foundation for generating projects without a live Power BI Desktop.' This implies when to use it, but it does not explicitly mention alternatives or exclusions, so it falls 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.
extract_power_queryA
Extract the full Section1.m (the plain-text Power Query M for every query) from a .pbix's DataMashup part, plus the declared query names. READ-ONLY. If there is no DataMashup part, the M is in the DataModel/TMDL - use get_table_m.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | absolute path to the .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly declares the operation as READ-ONLY, which is a crucial behavioral trait given there are no annotations. It also states that the tool extracts from the DataMashup part and includes query names, giving a clear expectation of output. However, it does not detail what happens when the DataMashup part is absent (e.g., whether it errors or returns empty), though it points to an alternative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The primary action and target are front-loaded, followed by a useful conditional alternative. Every clause earns its place, making it highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains what will be extracted (full Section1.m, declared query names) and the format (plain-text Power Query M). It also covers the edge case of missing DataMashup by directing to another tool, making it complete for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single parameter pbixPath with a description ('absolute path to the .pbix'), achieving 100% coverage. The tool description does not add new parameter-level semantics beyond restating the .pbix context, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Extract'), a precise resource (the full Section1.m from the DataMashup part of a .pbix), and the additional output (declared query names). It also distinguishes itself from the sibling tool get_table_m by noting the alternative location for the M code when there is no DataMashup part.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit conditional usage guideline: if there is no DataMashup part, the M is in the DataModel/TMDL and the user should use get_table_m instead. This clearly tells the agent when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_report_colorsA
READ-ONLY report-wide colour inventory: every hardcoded colour literal across all visuals AND the theme, with the exact locations of each occurrence (theme.dataColors[2], page/visual objects paths). The scouting pass before recolor_report.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description proactively declares 'READ-ONLY', mitigating side-effect concerns. It also details the output scope (color literals, locations, theme paths), adding behavioral context beyond the schema. Missing session prerequisite or error behavior, but sufficient for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence that front-loads the critical 'READ-ONLY' flag and uses concise terminology. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool, the description covers the essential output details (color inventory, locations) and workflow context. It does not explain the parameter or error cases, but the simplicity of the tool reduces the need for extensive elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (reportSessionId) with 0% description coverage. The description does not explain this parameter or how it relates to the tool's function. With low schema coverage, the description should compensate, but it provides no parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it inventory all hardcoded colour literals across visuals and theme, with exact locations, making the verb and resource clear. It also distinguishes from siblings by positioning itself as the 'scouting pass before recolor_report'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly places the tool in a workflow ('The scouting pass before recolor_report'), implying when to use it. It does not explicitly name alternatives or exclusion scenarios, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_report_level_measuresA
Promote report-level measures into the model as real measures: read the report definition's config.modelExtensions[].entities[].measures[] from a .pbix on disk and add each to its host table (keeping format/folder), skipping any name that already exists. Returns the measures promoted.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | path to the .pbix whose report-level measures to promote | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It discloses that measures are added to their host table, format/folder is preserved, existing names are skipped (idempotency), and it returns the promoted measures. This is rich behavioral detail beyond what the schema or annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action, then details the process with a colon and clauses. Every part adds value without redundancy, and it is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the process, idempotency, and return value, but does not clarify the role of sessionId (e.g., whether the .pbix must be open or if the operation targets a session model). Given no output schema and no annotations, this is a minor but notable gap in an otherwise comprehensive description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (pbixPath is described, sessionId is not). The description adds no extra meaning to either parameter; it merely repeats the schema's pbixPath info and omits sessionId entirely. It does not compensate for the missing sessionId semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Promote' with a clear resource ('report-level measures into the model as real measures') and describes the exact source and behavior. It clearly distinguishes itself from sibling tools like add_measure or add_report_measure by focusing on extracting from report definition config.modelExtensions[].entities[].measures[].
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (promoting report-level measures from a .pbix file) but does not explicitly state when to choose this tool over alternatives, nor does it mention exclusions or scenarios where other tools would be more appropriate. It provides a clear 'when' context but lacks direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_downA
Power Query Fill Down: replace nulls in a column with the most recent non-null value above. Appends Table.FillDown to the table's M query. columns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to fill down, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses a key behavioral trait: 'Appends Table.FillDown to the table's M query,' which tells the agent the tool modifies the query. It also states the core behavior of filling nulls. However, it does not discuss edge cases such as nulls at the beginning of a column or potential side effects, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every sentence contributes meaningful information. It is efficient and avoids redundancy, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
At first glance, the description covers the main action and the columns parameter format, which is adequate for a simple fill operation. However, it lacks important context such as whether it works on all partitions, how it handles nulls at the top of a column, and what the expected outcome is for the table's M query. Given the tool has 4 parameters and no output schema, a bit more detail about the transformation behavior would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has descriptions for columns and partitionName (50% coverage). The description adds value by specifying that 'columns is comma-separated,' which reinforces and clarifies the schema. However, it does not explain 'table' or 'sessionId', and these parameters lack schema descriptions, so the description only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'replace nulls in a column with the most recent non-null value above' and mentions appending Table.FillDown. It is specific about the operation, but it does not explicitly distinguish itself from the sibling tool 'fill_up' (which likely does the opposite direction), so it misses the full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you want to forward-fill nulls in a Power Query column, and it mentions the comma-separated format for columns, giving some usage detail. However, it does not provide explicit guidance on when to use this tool versus alternatives like fill_up or replace_values, nor does it mention any exclusions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_upA
Power Query Fill Up: replace nulls in a column with the most recent non-null value below. Appends Table.FillUp to the table's M query. columns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to fill up, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 discloses that the tool 'Appends Table.FillUp to the table's M query' and that columns are comma-separated, which gives useful context about the underlying operation. However, it does not disclose side effects (e.g., whether the table is modified in place, if it requires a session, or what happens when no non-null value exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by a specific implementation detail (Appends Table.FillUp) and a parameter-format note. Every sentence earns its place with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must explain the operation and its effects. It adequately explains the fill-up mechanics and M query modification, but it does not describe return values, required session/table context, or potential edge cases. This makes it generally informative but not fully complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions cover 50% (columns and partitionName), but the description adds critical value by explicitly explaining 'columns is comma-separated' and connecting it to the fill-up operation. It does not explain 'table' or 'sessionId', though these may be common across tools. The description only partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Power Query Fill Up' and 'replace nulls in a column with the most recent non-null value below'. This clearly states what the tool does and distinguishes it from the sibling tool 'fill_down' by describing the upward direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage from the purpose (fill nulls upward) and references 'Power Query Fill Up', but it does not explicitly provide 'when to use' or 'when not to use' guidance, nor does it mention alternatives like fill_down. The context is clear but without exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_rowsA
Power Query Filter Rows: keep only the rows matching a condition. Appends Table.SelectRows(prev, each ) to the table's M query. Provide the condition referencing the row as _, e.g. "[Amount] > 0 and [Region] = "NZ"" (the 'each' is added if you omit it).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| mCondition | Yes | the row condition, e.g. [Amount] > 0 | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It explicitly states that the tool 'Appends Table.SelectRows(prev, each <condition>)' to the table's M query, which reveals the mutation behavior. It also notes the auto-handling of 'each', providing useful implementation detail beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an example. It front-loads the purpose and then adds concrete implementation guidance—every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description covers the core behavior and the most important parameter (mCondition) thoroughly. It doesn't mention prerequisites like an open model, but in the broader tool ecosystem this is likely inferable, so it's adequately complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description significantly expands the meaning of mCondition by showing syntax, the '_' placeholder, and the automatic 'each' keyword. It doesn't elaborate on table/sessionId/partitionName, but these are common context identifiers and partitionName already has a schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'keep only the rows matching a condition' for Power Query Filter Rows. It also specifies the exact M operation (Table.SelectRows), which distinguishes it from sibling row-manipulation tools like remove_alternate_rows or skip_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this when you need to filter rows with a custom M condition, and gives a concrete example. It doesn't explicitly mention alternatives or when not to use it, but the scope is clear enough for an agent to select it over visual-filtering siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_attribution_gapsA
The 'your report is silently incomplete' detector. A single dimension member with no fact rows can be normal; a WHOLE GROUP of members under one attribute value (an entire supplier, a whole category) with zero data almost never is - it signals a systematic exclusion (mis-attribution / over-scoped fact), the empty-brand / supplier-group class. Finds those clusters automatically - no brand list or domain knowledge needed - so a human can review them. Read-only. The high-value data-integrity guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| maxColumns | No | max grouping columns to scan (default 24) | |
| anchorMeasure | No | measure used to test data coverage (default: first model measure, e.g. a sales measure) | |
| maxValuesPerColumn | No | only scan columns with at most this many distinct values (default 400) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden; it explicitly labels the tool 'Read-only' and explains that it requires no brand list or domain knowledge. However, it does not describe the output format or scanning limitations (e.g., max columns/values), leaving some behavioral details undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with 'detector' and uses a compact explanatory example. The final sentence 'The high-value data-integrity guarantee' is promotional rather than informative, but overall the text is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description should explain what the agent can expect to receive for human review; 'so a human can review them' is vague. It adequately conveys the core concept but leaves out parameter interplay and result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes three of four parameters, and the description adds no details about sessionId, maxColumns, anchorMeasure, or maxValuesPerColumn. 'No brand list... needed' reassures about prerequisites, but it does not compensate for the undocumented sessionId or explain how parameters affect cluster detection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a detector for silently incomplete reports, specifically clusters of dimension members under one attribute value with zero fact rows. It states the verb 'Finds those clusters automatically' and distinguishes it from general find/quality tools by targeting mis-attribution and over-scoped fact exclusions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear heuristic: a single member with no data can be normal, but a whole group under an attribute value signals systematic exclusion, which tells an agent when to use this tool. It does not explicitly name alternatives or exclusions, but the context is strong enough to select it over siblings like find_unused or quality_gate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_unusedA
Find columns and measures never referenced inside the model - not by a relationship, sort-by, hierarchy level, RLS filter, or any measure / calculated-column / calculated-table DAX. (Visual usage lives in the report layer and is not scanned here.) Read-only - the cleanup shortlist.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral disclosure. It states read-only nature, defines the search scope precisely, and explicitly notes that visual usage is not scanned. This gives the agent a clear safety profile and accurate expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the verb 'Find', and every clause adds value. It is concise without being terse, providing essential scope details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description covers the core behavior, scope exclusions, and safety characteristic (read-only). However, it does not describe return format or result structure, leaving a minor gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (sessionId) with 0% description coverage, and the description does not mention this parameter at all. While sessionId is likely a standard session identifier, the description provides no compensation for the missing schema description, leaving the parameter underdefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: finding columns and measures never referenced in the model, with explicit enumeration of what counts as a reference (relationships, sort-by, hierarchy levels, RLS, DAX). It distinguishes itself from sibling analysis tools by specifying the exact scope and excluding visual usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'cleanup shortlist' and states it is read-only, but it does not explicitly contrast with alternatives like analyze_dependencies or impact_analysis. There is no direct '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.
fix_bpaA
Apply a BPA rule's autofix - it sets the precise TOM property the rule names (e.g. Column.IsHidden, Column.IsAvailableInMDX, Measure.FormatString, strip EVALUATEANDLOG). With no objectName every matching object is fixed; with objectName only that one. dryRun=true (the default) lists exactly what WOULD change without modifying anything - run again with dryRun=false to apply. Rules with no safe automatic fix (e.g. DAX_USE_DIVIDE, AVOID_FLOATING_POINT_DATA_TYPES) are refused with guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | preview only (default true); set false to apply | |
| ruleId | Yes | the rule ID to fix, e.g. HIDE_FOREIGN_KEYS | |
| sessionId | Yes | ||
| objectName | No | a single object to fix (e.g. Sales[CustomerKey]); omit to fix all matching objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses critical behavior: dryRun defaults to true and lists what would change without modifying anything; dryRun=false applies changes; rules without a safe automatic fix are refused with guidance. It also clarifies scope semantics (all vs one object). However, it does not mention side effects such as persistence, whether changes are reversible, or what outputs/returns are produced after applying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and appropriately structured: it front-loads the core purpose, then covers scoping semantics, dryRun behavior, and refusal cases in three subsequent sentences. Every sentence provides necessary information 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (scoping, dryRun, refusal cases) and the absence of both annotations and an output schema, the description covers the key decision points: what happens with no objectName vs objectName, how to preview vs apply, and which rules are not supported. It falls slightly short by not describing the expected output format or what happens when there are no matching objects or violations, but the described behavior is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents ruleId, sessionId, dryRun, and objectName with 75% coverage. The description adds meaningful semantics beyond the schema: it explains that the autofix sets the exact TOM property named by the rule (with examples), and clarifies the difference between omitting objectName (fix all matching objects) and providing it (fix only that one). This enriches the dryRun and objectName parameters but leaves sessionId entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Apply a BPA rule's autofix', and immediately clarifies what the tool actually does: sets the precise TOM property named by the rule, with concrete examples. It also clearly distinguishes from sibling tools like run_bpa, list_bpa_rules, and import_bpa_ruleset by focusing on the autofix application behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it explains the difference between fixing all matching objects (no objectName) versus a single object (with objectName), and provides the dryRun=true (preview) vs dryRun=false (apply) workflow. It also states explicit exclusions: rules with no safe automatic fix are refused with guidance. However, it does not name alternative sibling tools (e.g., run_bpa) for when a user only wants to detect issues rather than fix them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_broken_visualsA
Repair visual bindings that point at RENAMED or MOVED model fields (found by scan_broken_refs). repairMap = JSON {"Old Table[Old Field]":"New Table[New Field]", ...}. Rewrites the same binding paths set_visual_fields writes - prototypeQuery From/Select (aliases repointed when the table changed), projections queryRefs, sorts, visual filters, and the conditional-formatting / chrome bindings - plus page and report filters. Returns one row per changed target and lists any repair key that never matched.
| Name | Required | Description | Default |
|---|---|---|---|
| repairMap | Yes | JSON object mapping broken refs to replacements: {"T[F]":"T2[F2]", ...} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It thoroughly details what gets rewritten (prototypeQuery, projections, sorts, filters, conditional formatting/chrome bindings, page/report filters) and what it returns (one row per changed target, lists unmatched keys). This is strong disclosure, though it could add explicit side-effect or irreversibility warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but comprehensive. It is front-loaded with the main purpose, then the repairMap format, then the detailed list of what is rewritten, and finally the return behavior. No unnecessary words, every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many binding types) and the absence of an output schema, the description is quite complete. It lists all affected binding areas, explains the return value, and mentions unmatched key handling. It also references scan_broken_refs and set_visual_fields for context, making it sufficient for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only repairMap is documented). The description adds value by clearly explaining the repairMap format ('Old Table[Old Field]' to 'New Table[New Field]'), similar to the schema but with more context about its role. It does not explain reportSessionId, but that parameter is likely self-evident from its name, so the description adequately compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Repair visual bindings that point at RENAMED or MOVED model fields'. It specifies the resource (visual bindings), the action (repair), and the context (found by scan_broken_refs), which distinguishes it from siblings like scan_broken_refs and set_visual_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by referencing 'found by scan_broken_refs' and mentions it rewrites the same binding paths as set_visual_fields. This gives clear guidance on when to use it, but it does not explicitly state alternatives or exclusions beyond the implied workflow, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_case_sensitive_daxA
Rewrite every measure's table / column / measure references to the model's EXACT casing - the fix for DirectQuery / Direct Lake against case-sensitive sources where 'sales'[amount] and 'Sales'[Amount] are different objects. Returns the measures rewritten.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool rewrites references to exact casing, mentions the specific use case, and states the return value ('Returns the measures rewritten'). However, it does not explicitly warn about the mutating nature of the operation or any side effects (e.g., whether changes are reversible, what happens if references are not found). This is more informative than a bare mutation tool but still lacks comprehensive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and context. Every clause adds value: the rewrite scope, the use case, and the return value. No redundant wording or irrelevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one simple parameter, no output schema, and no annotations. The description explains what it does, when to use it, and what it returns, which covers most operational needs. It does not specify the exact format of the returned measures or any error handling, but these are minor gaps for a straightforward fix tool. Overall, it is sufficiently complete for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains only 'sessionId' (string, required) with no description, resulting in 0% schema description coverage. The tool description does not elaborate on this parameter. However, 'sessionId' is a common, self-explanatory identifier in the sibling tool list, and the low parameter count reduces the need for compensation. Baseline for low coverage is 2-3; given the trivial nature of the parameter, a 3 is reasonable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Rewrite every measure's table / column / measure references') and a specific resource (measures in a DirectQuery/Direct Lake model). It also differentiates from sibling tools by focusing on case-sensitivity fixes, making it distinct from vvalidation tools like 'validate_dax' or general 'dax_suggest_rewrite'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'the fix for DirectQuery / Direct Lake against case-sensitive sources'. It implies the tool is for correcting case-mismatch issues but does not explicitly list exclusions or alternatives. This is clear context without exclusions, matching the '4' descriptor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_slicer_single_selectA
ONE-CALL flat-line fix for a field-parameter-axis chart. Give ONLY the .pbix path and the page name (both are in a request like 'fix the flat line in Category vs Brand Share of ') - no slicer name, no boolean, no multi-step. Opens the CLOSED .pbix, finds the slicer bound to the page's FIELD PARAMETER (auto-detected: a slicer whose bound field is a field parameter - table==column, or the single-column-table field plotted on a chart axis), makes it SINGLE-SELECT (writes the ground-truth objects.selection[0].properties.strictSingleSelect=true), then writes the .pbix back (DataModel byte-preserved). THAT is the whole fix: a field-parameter-bound chart flat-lines because every option renders at once; single-select forces one option AND auto-picks the field parameter's first option (e.g. MonthYear) on open. If several field-parameter slicers exist, pass the optional 'chart' (its title/name/bound field) to disambiguate; if you already know a specific value, pass 'default_value' to pin the opening option (otherwise single-select auto-picks the first). Returns {ok, page, slicer, fieldParameter, strictSingleSelect, default_applied, before, after}. The .pbix must NOT be open in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | the page: its displayName or name - a partial/loose match is accepted | |
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) | |
| chart | No | optional: a chart on the page (title/name/bound field) to disambiguate WHICH field-parameter slicer to fix | |
| default_value | No | optional value to pin as the opening option; omit to let single-select auto-pick the field parameter's first option |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral details: it opens the .pbix, modifies strictSingleSelect, writes back while preserving the DataModel, and requires the file to be closed. It also explains the auto-detection logic and what the return object contains, leaving no significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized, front-loading the core fix and then explaining optional parameters and prerequisites. Some redundancy (e.g., repeating the flat-line cause and 'THAT is the whole fix') prevents a perfect score, but every sentence generally adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description explicitly lists the return fields and covers all relevant aspects: prerequisites (file closed), auto-detection rules, optional disambiguation, and the exact property written. It is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds practical context beyond the schema: it gives an example of how the pbix and page appear in a request, clarifies that no slicer name or boolean is needed, and explains when chart and default_value are necessary. This enriches the schema's brief parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a one-call fix for a field-parameter-axis chart, and details the exact workflow: open a closed .pbix, find the field-parameter slicer, set strictSingleSelect=true, and write back. This distinguishes it from related slicer tools like set_slicer_selection by targeting the specific flat-line symptom.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage instructions: 'Give ONLY the .pbix path and the page name' and explains when to use it (field-parameter-bound chart flat-lines). It also describes optional parameters for disambiguation. However, it does not explicitly name alternative tools or provide exclusions, so it stops short of full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_columnB
Set a column's format string (e.g. "#,0", "$#,0.00", "0.0%", "dd mmm yyyy") and/or data category (e.g. "City", "WebUrl", "ImageUrl").
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| sessionId | Yes | ||
| dataCategory | No | data category (omit to keep) | |
| formatString | No | format string (omit to keep) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only states the action and examples. It doesn't disclose that omitting a parameter keeps the existing value (though the schema hints this), nor any side effects or permissions. The description carries the burden but provides minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, directly stating the action and illustrating valid values. Every word earns its place, and the examples are useful for parameter syntax.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description captures the core functionality but leaves usage context and behavioral expectations unstated. Given the tool's simplicity and the many sibling tools, it's adequate but not fully helpful for an agent to decide when to choose this tool over alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds examples for formatString and dataCategory, but the required parameters (sessionId, table, column) are not explained. Schema coverage is 40%, and the description partially compensates for the optional parameters but leaves the required ones to naming conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a clear resource ('a column's format string and/or data category'), and provides concrete examples for both. It clearly communicates the tool's dual function and distinguishes it from single-purpose siblings like set_column_data_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this combined tool versus the separate set_custom_format_string or set_column_data_category tools. The description doesn't mention any conditions, prerequisites, or alternatives, leaving the agent to infer usage from the schema and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_titleB
Format a visual's title: text, colour, font size, alignment (left|center|right), show/hide.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | ||
| size | No | ||
| text | No | ||
| align | No | left|center|right | |
| color | No | hex colour | |
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility for behavioral disclosure. It lists the modifiable title properties but does not explain whether unspecified properties are left unchanged, whether values overwrite existing settings, or any side effects. This is minimal transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core purpose and includes all key parameters. It is concise with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool, the description is adequate but has gaps. It lacks mention of behavior for absent parameters, prerequisites, or return values. Given no annotations and no output schema, the description could be more complete, but it covers the essential formatting scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must compensate. It adds meaning by clarifying 'font size' for size, 'colour' for color, and listing alignment values (left|center|right). However, it does not explain value formats for text, size, or show, nor the meaning of null defaults, providing only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool formats a visual's title and lists the specific properties (text, color, font size, alignment, show/hide). It is specific about the resource and action, but does not explicitly distinguish it from sibling tools like set_visual_title or style_visual.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for formatting visual titles, but provides no explicit guidance on when to use this tool versus alternatives. No exclusions or alternative tool references are mentioned, making the usage merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuzzy_cluster_columnA
Power Query Fuzzy Cluster: add a column giving each row the canonical cluster representative of a text column (groups near-identical values, e.g. 'Acme' / 'acme inc' / 'ACME'). Appends Table.AddFuzzyClusterColumn to the table's M query. threshold is the optional 0..1 similarity cut-off.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the text column to cluster | |
| newColumn | Yes | the new cluster column name | |
| sessionId | Yes | ||
| threshold | No | similarity threshold 0..1 (optional) | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it appends Table.AddFuzzyClusterColumn to the table's M query, which implies a model mutation, and explains the threshold parameter. However, it does not specify whether the original column is modified, how missing values are handled, or what the actual output type of the new column is. These gaps prevent a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the core purpose with a helpful example, the second states the underlying implementation and threshold. No wasted words, front-loaded with the most actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, 4 required, and no output schema, the description is reasonably complete: it explains the transformation, the threshold, and implementation detail (M query). It does not cover partition behavior or return values, but the core usage is clear. The presence of richer schema descriptions for most parameters compensates for minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes column, newColumn, threshold, and partitionName (67% coverage). The description adds value by explaining threshold as a '0..1 similarity cut-off' and the purpose of the new column (canonical cluster representative), but most parameter meaning is already present in the schema. It does not compensate for the missing table/sessionId descriptions, but this is acceptable given the moderate coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('add a column') with a specific resource ('canonical cluster representative of a text column'), includes a concrete example ('Acme' / 'acme inc' / 'ACME'), and clearly distinguishes from sibling tools like fuzzy_group or fuzzy_merge by focusing on column-level clustering rather than row grouping or table merging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys the use case: fuzzy clustering of near-identical text values into a canonical representative column. It does not explicitly name alternatives or state when not to use it, but the context is unambiguous enough that an agent can determine when to invoke it. Missing explicit exclusions or comparisons to fuzzy_group/fuzzy_merge keeps it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuzzy_groupA
Power Query Fuzzy Group By: collapse rows whose key values are APPROXIMATELY equal (typos/casing) into one group with aggregates. Appends Table.FuzzyGroup to the table's M query. keyColumns is comma-separated. aggregations is comma-separated as name:op[:column] (op = Sum | Count | Average | Min | Max | CountDistinct | All). threshold is the optional 0..1 similarity cut-off.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| threshold | No | similarity threshold 0..1 (optional) | |
| keyColumns | Yes | the grouping key columns, comma-separated | |
| aggregations | Yes | aggregations as name:op[:column], comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key side effect: 'Appends Table.FuzzyGroup to the table's M query,' which signals a mutation of the query. It also explains the optional threshold parameter. However, it does not discuss return format, permissions, or error behavior, which would enhance transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it starts with the purpose, then the side effect, and then parameter specifics. It packs a lot of essential information into three sentences without waste, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 4 required, no output schema, no annotations), the description covers the core aspects: purpose, side effect, parameter syntax, and option values. It does not cover return values or error scenarios, but those are often unnecessary when output schema is absent. The description is sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema: it specifies the exact comma-separated formats for keyColumns and aggregations, enumerates the supported operations (Sum, Count, Average, Min, Max, CountDistinct, All), and explains the threshold range (0..1). Schema coverage is only 67%, and the description compensates for the uncovered parameters and adds detail to described ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as 'Power Query Fuzzy Group By' and states its function: collapsing rows with approximately equal key values (typos/casing) into groups with aggregates. This specific verb and resource, along with the mention of fuzzy matching, distinguishes it from siblings like group_by and fuzzy_merge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it's for fuzzy grouping with approximate equality (typos/casing) and describes the aggregate options. However, it does not explicitly mention alternatives or when not to use this tool, such as preferring exact group_by or fuzzy_merge for different scenarios. The context is clear but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuzzy_mergeA
Power Query Fuzzy Merge: join another query on APPROXIMATE key matches (typos, casing, spacing). Appends Table.FuzzyNestedJoin (+ optional Table.ExpandTableColumn) to the table's M query. leftKeys/rightKeys are comma-separated equal-length lists. joinKind = Inner | LeftOuter | RightOuter | FullOuter | LeftAnti | RightAnti. threshold is the 0..1 similarity cut-off (default 0.8). transformationTable is an optional {From,To} mapping query name.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| joinKind | No | Inner | LeftOuter | RightOuter | FullOuter | LeftAnti | RightAnti (default LeftOuter) | LeftOuter |
| leftKeys | Yes | this table's key columns, comma-separated | |
| rightKeys | Yes | the right table's key columns, comma-separated (same count as leftKeys) | |
| sessionId | Yes | ||
| threshold | No | similarity threshold 0..1 (default 0.8) | |
| ignoreCase | No | ignore case when matching (optional) | |
| rightTable | Yes | the query/table to merge in (the right side) | |
| ignoreSpace | No | ignore whitespace when matching (optional) | |
| expandColumns | No | columns from the right table to expand, comma-separated (omit to leave nested) | |
| partitionName | No | partition name (optional; defaults to the first partition) | |
| transformationTable | No | optional {From,To} transformation/mapping query name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses that the tool appends Table.FuzzyNestedJoin and optionally Table.ExpandTableColumn to the table's M query, which is a key side effect. It also explains joinKind and threshold semantics, adding context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, well-organized paragraph of about 60 words. Every sentence contributes: purpose, behavior, key parameter formats, join types, threshold, and transformationTable. It is front-loaded with the tool's purpose and avoids redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters) and lack of an output schema, the description covers the core operation, key parameters, and side effects. It does not explain return values, but the M query modification is clearly the primary outcome. The description is sufficient for an agent to understand the tool's role and main requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, giving a baseline of 3. The description adds significant value by specifying that leftKeys/rightKeys are 'comma-separated equal-length lists', defining threshold as a 0..1 similarity cut-off, and clarifying transformationTable as a {From,To} mapping query name. These details go beyond the basic schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'joins another query on APPROXIMATE key matches' with specifics (typos, casing, spacing), making it distinct from exact-match merge tools. It identifies the resource as a Power Query merge operation and specifies the M query steps appended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when approximate matches are needed rather than exact joins. It does not explicitly list exclusions or alternatives, but the fuzzy matching context differentiates it from standard merge_queries and related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_445_calendar_mA
Generate a retail 4-4-5 / 4-5-4 / 5-4-4 calendar table as a new query, one row per week with RetailYear, PeriodOfYear, WeekOfPeriod, WeekOfYear, WeekIndex, WeekStart, WeekEnd. startDate is raw M, e.g. #date(2024,1,29). weeksPattern = 445 | 454 | 544. periodsPerYear = 12 (standard) or 13 (every period 4 weeks). Refresh afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sessionId | Yes | ||
| startDate | Yes | retail year start date as raw M, e.g. #date(2024,1,29) | |
| weeksPattern | No | 445 | 454 | 544 | |
| periodsPerYear | No | 12 or 13 | |
| yearsToGenerate | No | number of retail years to generate (default 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that a new query is created, the exact output columns, the startDate format with an example, and the 'Refresh afterwards' follow-up. It does not detail error handling or name conflicts, but the 'new query' wording and schema coverage provide reasonable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences effectively front-load the purpose and output, then clarify parameter semantics and required follow-up. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description compensates by listing expected columns. It covers the main variations of weeksPattern and periodsPerYear, and leaves yearsToGenerate to the schema, which is sufficient for a generator tool of moderate complexity. Missing details like query naming conventions are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description adds meaningful examples and explanations for startDate (raw M, #date example), weeksPattern (445|454|544), and periodsPerYear (12 standard or 13). It does not repeat yearsToGenerate, whose schema description is already clear, so the added value is solid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a retail 4-4-5 / 4-5-4 / 5-4-4 calendar table as a new query. It specifies the output structure and the pattern options, distinguishing it from sibling tools like generate_calendar_table_m which likely serve generic calendar generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retail calendar creation and mentions refreshing afterwards, but it does not explicitly state when to use this over alternatives or exclude cases. Sibling tools like generate_calendar_table_m are not referenced, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_calendar_table_mA
Generate a full date/calendar table as a new query: List.Dates over [startExpr..endExpr] with ~20 part columns (Year, Quarter, QuarterName, MonthNo, MonthName, MonthShort, YearMonthNo, YearMonth, ISOWeek, ISOYear, WeekdayNo, DayName, DayNo, DayOfYear, StartOfMonth, EndOfMonth, IsWeekend). startExpr/endExpr are RAW M, e.g. "#date(2020,1,1)" or a parameter reference. Pass fiscalYearEndMonth (1..12) to add FiscalYear/FiscalMonthNo/FiscalQuarter. Pass locale (e.g. en-NZ) to render month/day names in that culture. Refresh afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| locale | No | locale/culture for month/day names, e.g. en-NZ (optional) | |
| endExpr | Yes | end date as raw M, e.g. #date(2025,12,31) | |
| sessionId | Yes | ||
| startExpr | Yes | start date as raw M, e.g. #date(2020,1,1) | |
| fiscalYearEndMonth | No | fiscal year-end month 1..12 (optional; adds fiscal columns) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits: startExpr/endExpr must be raw M expressions, fiscal and locale parameters modify output columns, and a refresh is required afterward. With no annotations provided, it carries the burden well, though it doesn't state side effects like overwriting an existing query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but appropriately sized for the tool's complexity. Each sentence adds value: purpose, raw M requirement, optional fiscal, locale, and refresh. The column list is long but directly specifies the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the main functionality, parameter semantics, and post-conditions. It lacks explicit explanation of sessionId and name, but these are less critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema for startExpr/endExpr (raw M format), fiscalYearEndMonth (adds specific columns), and locale (affects month/day names). It does not explain sessionId or name, but schema coverage is 67% and the description compensates for the key parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a full date/calendar table as a new query, with a specific verb and resource. It enumerates the exact columns produced, which distinguishes it from siblings like create_date_table and generate_445_calendar_m.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when a comprehensive calendar table with many part columns is needed, with optional fiscal and locale support. It does not explicitly name alternatives or exclusions, but the scope is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_embed_tokenA
Mint a Power BI EMBED token (POST /GenerateToken) for the given datasets / reports / target workspaces - the scoped, short-lived token an embedding app hands to the browser. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); the AAD token itself is never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| reportIds | No | comma-separated report ids | |
| datasetIds | No | comma-separated dataset ids | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceIds | No | comma-separated target workspace ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the token is scoped and short-lived, clarifies the auth prerequisite, and importantly states that the AAD token is never echoed—a meaningful security behavior. It could go further by describing error conditions or exact expiry, but it provides solid behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and API reference, followed by requirements. Every clause earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a token-generation tool with four optional, well-documented parameters and no output schema, the description is sufficient. It explains purpose, required auth scope, and a key security property. Minor gaps like response format are not critical for this tool's use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter already having a description. The description adds context by grouping datasets/reports/workspaces and clarifying the accessToken fallback to DAXOPS_PBI_TOKEN, but this largely reinforces schema content rather than adding new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Mint' with the resource 'Power BI EMBED token' and references the exact API endpoint (POST /GenerateToken). It clearly distinguishes this tool from siblings by stating the use case (embedding app handing a short-lived token to the browser) and the scoped inputs (datasets/reports/workspaces).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates the primary scenario: generating an embed token for embedding apps. It also states the authentication requirement (AAD token or DAXOPS_PBI_TOKEN). It lacks explicit 'when not to use' or alternative tool mentions, but the tool's unique purpose among siblings makes usage unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_paletteA
Compute a palette and write it into the theme: dataColors[] + good/neutral/bad + CF min/center/max. mode=harmonic (hue-wheel off baseColor) | monochrome (lightness ramp of baseColor) | gradient (interpolate baseColor->... actually gradientFrom->gradientTo). For gradient pass gradientFrom + gradientTo; otherwise pass baseColor.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | how many data colours to emit | |
| mode | No | harmonic | monochrome | gradient | harmonic |
| baseColor | No | base colour hex (harmonic/monochrome) | |
| gradientTo | No | gradient end hex (gradient mode) | |
| gradientFrom | No | gradient start hex (gradient mode) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It makes clear that this is a mutation tool ('write it into the theme') and details the specific theme areas it updates. It also discloses mode-specific color behavior and parameter dependencies, but does not mention persistence, overwrite semantics, or any required theme state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary action and target fields, but it contains informal/corrective language ('interpolate baseColor->... actually gradientFrom->gradientTo') and an ellipsis that add noise. The two sentences are reasonably concise but not polished enough for a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description covers the core function, mode behavior, parameter selection rules, and the write side effect, which is quite complete for a tool with 6 parameters. It does not explain return values or theme prerequisites, but these are not critical given the tool's action-oriented purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 83% of parameters with descriptions, so the baseline is 3, but the description adds meaningful semantics beyond the schema: mode explanations (hue-wheel, lightness ramp, interpolation) and the rule for which parameters to pass in each mode. It does not add detail for reportSessionId, but this appears to be a common session identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes a palette and writes it into the theme, specifying the exact targets: dataColors[], good/neutral/bad, and CF min/center/max. This makes the tool's function and scope immediately apparent and distinguishes it from sibling tools like set_theme_data_colors or set_theme_cf_colors by emphasizing generation and writing to multiple theme areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit mode-specific usage: 'mode=harmonic | monochrome | gradient' and explains which parameters to pass per mode ('For gradient pass gradientFrom + gradientTo; otherwise pass baseColor'). However, it does not compare against alternative tools or state when not to use this tool, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pbipA
Generate a complete text-based PBIP project from the live model + a source pbix's report: .SemanticModel (TMDL via the official serializer) + .Report (legacy report.json + definition.pbir + StaticResources) + .pbip. Pure files - Power BI Desktop / Fabric open it directly, NO live engine needed to author. This is the spine that gets the whole tool off the live-Desktop dependency.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | project name (used for the .pbip / .SemanticModel / .Report folder names) | |
| sessionId | Yes | ||
| includeData | No | also back the model up to cache.abf so the project opens WITH data (no manual refresh). Bigger output. Default false. | |
| outputFolder | Yes | output folder for the project (created/overwritten) | |
| sourcePbixPath | Yes | source .pbix to take the report (Report/Layout + StaticResources) from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the output is 'pure files' that 'Power BI Desktop / Fabric open it directly' and that no live engine is needed. It also explains the source inputs (live model + source pbix). However, it omits side effects like overwriting the output folder (though schema covers it) and potential prerequisites such as an active session or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with every part earning its place. The first sentence immediately states the action and output structure, while the second emphasizes the key benefit (pure files, no live engine). It is appropriately sized for the tool's complexity and well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description explains the complete output structure and the no-engine advantage. It covers the source inputs and the result. However, it does not detail the sessionId requirement or the behavior of includeData beyond schema defaults, leaving some gaps but still sufficient for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3. The description adds meaningful context by specifying that 'name' is used for folder names and that the source pbix provides the report. It also clarifies the distinction between the live model and the pbix-derived report. This enriches the schema descriptions, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a complete text-based PBIP project from the live model + a source pbix's report' and explicitly lists the output components (.SemanticModel, .Report, .pbip). It distinguishes itself from sibling tools like export_tmdl or save_pbir by emphasizing the complete multi-file project and the 'pure files' nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is a foundational tool for producing a full PBIP project without a live Desktop dependency. It says 'This is the spine that gets the whole tool off the live-Desktop dependency,' implying its key role. However, it does not explicitly name alternatives or provide exclusion criteria, stopping short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_themeA
Generate AND (by default) apply a complete professional theme: an 8-colour palette derived from a primaryColor (hex), an explicit colors list, or a named style (executive|vibrant|slate|sunset|forest); structural colours + fonts; AND visualStyle defaults so EVERY visual automatically gets the card look - rounded corners, drop shadow, consistent title font, header hidden. This is the theme-driven 'looks pro' layer; pair it with auto_arrange. Set cardStyle=false for flat visuals, dark=true for a dark theme.
| Name | Required | Description | Default |
|---|---|---|---|
| dark | No | dark theme | |
| name | No | theme name | Custom |
| apply | No | apply to the report now (false = just return the JSON) | |
| style | No | named style if no primaryColor: executive|vibrant|slate|sunset|forest | executive |
| colors | No | explicit palette as comma-separated hex (overrides primaryColor/style) | |
| shadow | No | drop shadow on every visual | |
| logoPath | No | path to a brand LOGO image (png/jpg) - the palette is extracted from it (overrides primaryColor/colors). The brand kit. | |
| cardStyle | No | apply the card look (bg/border/shadow) to all visuals via the theme | |
| fontFamily | No | font family e.g. Segoe UI | Segoe UI |
| cornerRadius | No | card corner radius px | |
| primaryColor | No | primary brand colour hex e.g. #16365C (palette is derived from it) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does well: it discloses that generation also applies by default, that it changes structural colors and fonts, and that 'EVERY visual automatically gets the card look' including hidden headers. This reveals the global side effects that matter. It stops short of stating whether existing manual formatting gets overwritten or if the operation is reversible, but the primary behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scope, then lists key inputs, then gives two compact usage tips. Every sentence earns its place: no filler, no restating of schema field names, and the structure moves logically from definition → behavior → configuration. It is concise despite covering a lot of ground.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, no output schema, and no annotations, the description covers the essential usage, side effects, and key parameter relationships. It explains the palette derivation methods, the card-look defaults, and the apply behavior. It does not enumerate every parameter, but the schema already handles that. The main missing piece is a description of the returned JSON when apply=false, though the schema hints at it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 92%, so the baseline is 3. The description adds meaningful semantics by explaining how the inputs combine to produce a complete theme: '8-colour palette derived from a primaryColor, an explicit colors list, or a named style', plus structural colors and fonts. It also clarifies the effect of cardStyle and dark beyond the schema's terse descriptions, tying parameters to the resulting visual defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate AND (by default) apply a complete professional theme.' It clearly enumerates the scope (8-color palette, structural colors, fonts, visualStyle defaults) and differentiates itself from narrower siblings like generate_palette by emphasizing the full 'looks pro' layer. The 'complete' and 'EVERY visual' phrasing makes the tool's all-encompassing role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance: it is the 'theme-driven looks pro layer' meant to be paired with auto_arrange, and parameter toggles are explained ('Set cardStyle=false for flat visuals, dark=true for a dark theme'). It does not explicitly name alternative tools or state when not to use it, but the context is sufficient for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datamashup_infoA
Report whether a .pbix has a DataMashup (Power Query M) part and the query names it declares. READ-ONLY. If absent, the M lives in the DataModel/TMDL (enhanced-metadata PBI_V3) - use get_table_m / set_partition_m instead.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | absolute path to the .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly declares 'READ-ONLY,' which is a key behavioral disclosure. It also explains a behavioral consequence (if absent, the M lives in DataModel/TMDL) and directs to alternatives. Minor gap: it does not describe error behavior for invalid paths, but for a simple read-only info tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The first sentence front-loads the core purpose, and the second provides a conditional alternative. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description explains both the outcome (report presence and query names) and the fallback scenario. It is complete and self-sufficient, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%: the single parameter pbixPath is described as 'absolute path to the .pbix'. The description adds no additional parameter semantics beyond this, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports whether a .pbix has a DataMashup (Power Query M) part and the query names it declares. The verb 'Report' is specific, and the resource and output are explicitly identified, distinguishing it from sibling tools like get_table_m and set_partition_m.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'If absent, the M lives in the DataModel/TMDL (enhanced-metadata PBI_V3) - use get_table_m / set_partition_m instead.' This clearly tells the agent when to use this tool versus alternatives, making the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_offlineA
Read the model of a CLOSED .pbix: tables, columns with data types, measures with their DAX, relationships and named M expressions. Briefly opens the file in the local Power BI Desktop (a Desktop window appears), reads the model via TOM, then closes Desktop. The offline form of get_model_summary - no session / no manually-open Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | path to the closed .pbix | |
| timeoutSec | No | seconds to wait for the model to load before giving up (default 180) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a significant side effect ('a Desktop window appears') and clarifies the offline nature. It does not mention failure modes or file locking, but the key behavioral trait is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, followed by the key side effect and relationship to a sibling. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (opening Desktop, reading model, closing), the description covers the main side effect, the offline context, and the scope of what is read. It does not describe the output format, but since there is no output schema, this is a minor gap; overall it provides enough context for an agent to select and invoke the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description adds the important nuance that the pbix must be 'CLOSED', but it does not add extra meaning for timeoutSec beyond what the schema already provides. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the model of a closed .pbix and lists specific contents (tables, columns with data types, measures with DAX, relationships, named M expressions). It also distinguishes itself from the sibling get_model_summary by explicitly positioning itself as the offline form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative (get_model_summary) and states when to use this tool ('no session / no manually-open Desktop'). However, it does not explicitly phrase a 'when not to use' condition, leaving the implication instead of a clear exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_summaryA
Return the model schema: tables, columns, measures, relationships and named M expressions. Use this to get exact names before binding visuals.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | sessionId from connect_model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It implies a read operation and describes the output, but does not explicitly state non-destructiveness or any side effects, though the 'get' prefix and schema-focused wording make the behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and immediately followed by a practical usage hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description fully covers what it returns and when to use it. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the single parameter sessionId with a description pointing to 'connect_model'. The tool description adds no additional parameter meaning, but schema coverage is 100%, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and clearly identifies the resource ('model schema'), enumerating its contents (tables, columns, measures, relationships, named M expressions). This distinguishes it from sibling tools like get_visual_schema or list_measures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: 'Use this to get exact names before binding visuals.' It does not explicitly exclude alternatives, but the context is strong enough to guide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pbir_pageB
Get one PBIR page's page.json plus the names/types of its visuals. page = the GUID name or the displayName.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page GUID name or displayName | |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It states what is returned but does not disclose that this is a read-only operation, any error behavior, or details about the output format. The description adds little beyond a restatement of the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the main function, the second clarifies the page parameter. No unnecessary words, effectively front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description must explain return values and behavior more fully. It mentions page.json and visual names/types but does not elaborate on the structure, potential errors, or the role of pbirSessionId, leaving the agent with a vague understanding of the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description's 'page = the GUID name or the displayName' duplicates the schema description for the page parameter, adding no new meaning. The pbirSessionId parameter is left unexplained in both schema and description, and with 50% schema coverage the description fails to compensate for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets one PBIR page's page.json plus the names/types of its visuals. This is a specific verb+resource+output pattern that distinguishes it from siblings like get_pbir_visual (which gets a single visual) and list_pbir_pages (which lists pages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: you need one specific page's JSON and its visuals. However, it doesn't explicitly say when to use this over alternatives (e.g., list_pbir_pages or get_pbir_visual) or mention any exclusions or prerequisites beyond the required params.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pbir_visualA
Get one PBIR visual's visual.json (position + visual{visualType,query,objects,...} + filterConfig), verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page GUID name or displayName | |
| visual | Yes | visual GUID name | |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. 'Verbatim' meaningfully discloses that the raw, unmodified JSON is returned, which helps set expectations. However, it does not mention read-only semantics, error behavior (e.g., not found), or any prerequisites like an active pbirSession, leaving room for surprises.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-front-loaded sentence. It opens with the action and resource, then compactly lists the JSON contents without redundant words or restating the name. Every element serves to clarify scope or return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter getter with no output schema and no annotations, the description sufficiently covers the return value ('visual.json' with constituent parts) and the scope. It is missing only minor contextual details such as session prerequisites or edge-case behavior, which are likely inferred from the session ID parameter and the getter nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (page and visual have descriptions, pbirSessionId does not). The description adds no parameter-level meaning beyond the schema, and it does not clarify the pbirSessionId field. This is acceptable as the baseline given decent schema coverage, but it does not fully compensate for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('one PBIR visual's visual.json'), and details required contents (position, visual{...}, filterConfig). This clearly distinguishes it from sibling tools like get_visual_format or get_pbir_page, which target different slices of the same artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The implied usage is retrieving a visual's raw JSON, but no explicit guidance on when to choose this over alternatives or any exclusions is provided. For a tool among many getters, the description could name contrasting tools (e.g., use get_visual_format for format-only), but the intent is inferable from the detailed scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_refresh_statusA
Read the recent refresh history of a published dataset (GET .../refreshes?$top=N) - status, start/end times and any service error. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | how many recent refreshes to return | |
| datasetId | Yes | dataset id | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | workspace (group) id |
TDQS
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 explicitly notes the need for an AAD access token with Power BI scopes and states that the token is never echoed, which is important security context. It also indicates the output includes status, timings, and service errors. It does not mention rate limits or failure modes, but for a read-only history tool this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and then the auth requirement. Every sentence provides necessary information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool without an output schema, the description covers the key return fields (status, start/end times, service error) and the auth prerequisite. It does not elaborate on response structure or error handling, but the essentials are present. The endpoint mention adds practical context for API familiarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds the endpoint mapping ($top=N) and the token handling behavior, but these are marginal. It does not significantly add meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read') and the resource ('recent refresh history of a published dataset'), and the phrase 'recent refresh history' distinguishes it from triggering refreshes (e.g., sibling refresh_dataset). It also mentions the endpoint, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting refresh history, but it does not explicitly state when to choose this over alternatives (e.g., refresh_dataset or get_transaction_status). No exclusions or alternative tool mentions are provided, though the read-only nature is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_filtersA
READ-ONLY read-back of the report's filter surface: every report / page / visual-level filter parsed to structured form - scope, table[field], filter type, lock/hide flags, and the decoded condition (values list, comparison op + value, topN, relative date/time, and/or chains). The read partner of the add_*_filter tools.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description transparently discloses the read-only nature ('READ-ONLY') and details the exact output structure (scope, table[field], filter type, flags, decoded condition with values/comparison/topN/relative/and-or chains). It does not mention potential errors or authorization, but for a simple read operation it is sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and front-loaded 'READ-ONLY'. The first sentence is dense but packed with value, listing the detailed contents of the filter surface. No wasted words, though the long comma-separated list could be slightly more readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no output schema, the description does a good job of conveying what the tool returns and its role relative to add_*_filter tools. It lacks edge-case behaviors or error handling, but for a straightforward read tool it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the only parameter 'reportSessionId'. While the name is self-explanatory, the description adds no explicit meaning about how to obtain or use the session ID, leaving the agent to infer it from the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('read-back') and identifies the exact resource ('report's filter surface') and its scope ('every report / page / visual-level filter'), clearly distinguishing it from the add_*_filter siblings. It leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the companion tools: 'The read partner of the add_*_filter tools.' This tells the agent when to use it (to inspect filters that were added or to verify existing filter state) and provides context for alternatives, though it doesn't enumerate specific exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_settingsA
READ-ONLY read-back of the report-level behaviour toggles (config.settings) that set_report_settings writes, decoded to plain values, plus the custom-theme name when one is applied. The read partner of set_report_settings.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It proactively discloses 'READ-ONLY' (non-mutating), 'decoded to plain values' (transformation behavior), and the conditional 'when one is applied' for the theme name. It does not cover error cases or prerequisites, but the core behavioral traits are well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with 'READ-ONLY read-back', and every phrase adds value. It is concise without losing necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (single parameter, no output schema), the description covers purpose, behavior, and the relationship to set_report_settings. It notes the return includes decoded settings and optional theme name, which is enough for an agent to understand what to expect. A short example or error note would push it higher, but it is not incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It says 'report-level' but never explicitly explains the reportSessionId parameter, its format, or how to obtain it. The parameter name is somewhat self-explanatory, but the description adds no direct clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a read-back of report-level behavior toggles (config.settings) that set_report_settings writes, and it mentions the added custom-theme name. This verb+resource clarity distinguishes it from siblings like read_theme or get_report_filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'The read partner of set_report_settings' explicitly frames when to use this tool: to read back exactly the settings that set_report_settings writes. It does not list exclusions or alternatives, but the pairing with set_report_settings gives clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slicer_defaultsA
READ-ONLY read-back of every slicer's selection state: bound field, strictSingleSelect / singleSelect flags, display mode, and any default selection values written as Categorical filters in the slicer's own container. The read partner of set_slicer_selection / fix_slicer_single_select. Scope to one page or omit for all pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | one page (name or displayName); omit for every page | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses READ-ONLY behavior and details what is returned (bound field, flags, display mode, default filter values). The mention of 'Categorical filters in the slicer's own container' adds implementation nuance. It doesn't cover error behavior or rate limits, but for a read tool this is a strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with 'READ-ONLY', then specific attributes, then scope. Every sentence carries meaningful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read tool with no output schema, the description is sufficiently complete: it states what is read, the scope, and its relationship to sibling setters. It does not describe return format, but the listed fields imply that. The absence of output schema is compensated by enumerating the return contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: only 'page' has a schema description. The tool description adds value by clarifying the page parameter ('Scope to one page or omit for all pages'), which matches the schema. The reportSessionId parameter is self-explanatory by name, and the description doesn't add to it, but the added page semantics justify above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads back every slicer's selection state, listing specific properties (bound field, flags, display mode, default values). It distinguishes itself from siblings by naming set_slicer_selection and fix_slicer_single_select as read partners, and mentions the scope (one page or all). This is a specific verb+resource+scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly positions itself as the 'read partner' of set_slicer_selection and fix_slicer_single_select, indicating when to use it in relation to those tools. It also clarifies scope via 'Scope to one page or omit for all pages.' While it doesn't list exclusions or edge cases, the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transaction_statusA
Report whether a model transaction is open on the session, when it opened, and how many gated saves it has deferred so far. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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 states 'Read-only,' which is useful, and outlines the reported information. However, it does not explain behavior when no transaction is open, whether any permissions are needed, or what the exact response looks like. This is sufficient but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the first sentence delivering the core purpose and the second adding the crucial read-only note. Absolutely no wasted words, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with no output schema or annotations, the description covers the main return aspects (open status, opened time, deferred saves) but omits edge cases like no open transaction, error scenarios, or what 'gated saves' means. It is adequate but leaves gaps a user may need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter sessionId has 0% schema description coverage, and the description never mentions it. The only hint is the word 'session,' but no details about the parameter's role, format, or constraints are provided. The description does little to compensate for the missing schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb ('Report') and the resource ('whether a model transaction is open on the session'), and includes distinctive details about what is reported (opened time, deferred gated saves). It also distinguishes itself from sibling tools like begin/commit/rollback_model_transaction by focusing on status rather than mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking transaction status and notes it is read-only, but it does not explicitly state when to use it versus committing, rolling back, or beginning a transaction. No clear alternative or exclusion is provided, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_visual_formatA
Read the DECODED, simplified current formatting of one visual (READ-ONLY). Returns its type, position {x,y,w,h}, the decoded vcObjects {object:{property:value}} (container: title, background, border, ...), the decoded objects {object:{property:value}} (visual-specific: labels, legend, categoryAxis, ...) and its field bindings. Use this to inspect before set_visual_format. page/visual resolve by name or displayName.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly declares READ-ONLY, enumerates the return payload (type, position, vcObjects, objects, field bindings), and notes the resolution behavior. It stops short of describing error cases or ambiguities (e.g., duplicate displayName), so it is informative but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense with useful details: purpose, returns, workflow, and parameter resolution. Each sentence earns its place, though the enumeration of return fields could be tighter. It is front-loaded with the key action and read-only warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description does a good job explaining the return structure (decoded vcObjects/objects with property:value examples). It also places the tool in a workflow (inspect before set_visual_format). It lacks edge-case error handling or deeper explanation of 'decoded, simplified', but for a read tool this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers page and visual with 'name or displayName' (67% coverage). The description reinforces this but does not add deeper semantics for reportSessionId or go beyond what the schema states. For a 3-param tool with decent schema coverage, baseline is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Read the DECODED, simplified current formatting of one visual (READ-ONLY)'. It clearly differentiates from sibling tools like set_visual_format (a setter) and get_visual_schema (schema-focused), leaving no ambiguity about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this to inspect before set_visual_format', giving a concrete workflow context. Also clarifies that page/visual resolve by name or displayName, which is a practical usage hint. While no exclusions are listed, the guidance is clear and actionable for a read-only inspection tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_visual_schemaA
Get the formatting schema for one visualType as a compact structured object - the same cards -> properties -> {type, enum, min, max} as list_visual_properties, optionally scoped to a single card (e.g. legend, valueAxis, title). Omit card for the full schema.
| Name | Required | Description | Default |
|---|---|---|---|
| card | No | optional single card to scope to, e.g. legend | |
| visualType | Yes | a canonical visualType key, e.g. lineChart |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses the return shape (cards -> properties -> {type, enum, min, max}) and the scoping behavior (omit card for full schema). This provides useful behavioral context beyond just saying 'get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no fluff. The structure follows the scoping logic clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-param read tool with no output schema, the description covers the return structure and scoping options. It doesn't specify error behavior or invalid inputs, but that's not essential for this straightforward getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minor value by explaining 'omit card' behavior and giving examples (legend, valueAxis, title), but the schema already covers parameter meaning sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get the formatting schema for one visualType' with a specific verb and resource. Distinguishes itself by referencing list_visual_properties and the optional card scoping, which differentiates it from sibling tools like list_visual_properties or get_visual_format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context: use this for a compact schema of a single visualType, with optional card scoping. It references list_visual_properties as a comparison point, but doesn't explicitly state when to prefer one over the other, so no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_byA
Power Query Group By: collapse rows to one per key-column combination with aggregates. Appends Table.Group to the table's M query. keyColumns is comma-separated. aggregations is comma-separated as name:op[:column], e.g. "Total:Sum:Amount,Lines:Count,Distinct Customers:CountDistinct:CustomerId". op = Sum | Count | Average | Min | Max | CountDistinct | All (column required except for Count/All).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| keyColumns | Yes | the grouping key columns, comma-separated | |
| aggregations | Yes | aggregations as name:op[:column], comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool 'Appends Table.Group to the table's M query,' indicating model mutation. It also details aggregation operation constraints (e.g., column required except for Count/All). However, it does not mention error conditions or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but well-organized: purpose, M query effect, parameter formats, example, and op list. Every sentence contributes value, though it could be slightly more scannable with line breaks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the absence of an output schema, the description adequately covers the core behavior and parameter syntax. It does not explain the function of table/sessionId, but these are common across sibling tools and likely self-evident. The M query modification note adds important context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema, especially for the 'aggregations' parameter, specifying the format 'name:op[:column]', an example, and the list of allowed ops. It also clarifies that keyColumns is comma-separated, matching the schema. It does not explain table/sessionId, but those are likely standard and not the source of complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'collapse rows to one per key-column combination with aggregates' and 'Appends Table.Group to the table's M query.' This specific verb+resource phrasing distinguishes it from sibling tools like fuzzy_group or group_keep_all_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for grouping with aggregates and gives a concrete example, but it does not explicitly state when to use this tool versus alternatives such as fuzzy_group or group_keep_all_columns. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_keep_all_columnsA
Group By keeping ALL columns: Table.Group with {each _} then expand the grouped table over its non-key columns - the workaround for the editor's Group By dropping non-aggregated columns. The expanded set is derived at evaluation time so it survives schema drift. keys is comma-separated. Appends two steps to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | the grouping key columns, comma-separated | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It details the mechanism (Table.Group with {each _}), the expansion process, schema-drift resilience, and the fact that it appends two M-query steps. It does not mention permissions or error conditions, but for a table-transformation tool, this is substantive disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of four sentences, each contributing key information: the core purpose, the implementation detail, the schema-drift benefit, and the key format plus side effect. While not ultra-terse, every sentence earns its place and the info is front-loaded with the main purpose. Slightly more could be trimmed, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is reasonably complete: it explains what the tool does, how it works, and what effect it has on the table. It doesn't cover edge cases or limitations, but the information provided should allow an agent to select and invoke the tool correctly in typical scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes keys and partitionName but leaves table and sessionId undocumented. The description adds meaning by clarifying that 'keys is comma-separated' and that the tool 'appends two steps to the table's M query', which implies how the table parameter is used. This compensates for the 50% schema coverage, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Group By keeping ALL columns', which is a specific variant of group-by that retains all columns. It distinguishes itself from sibling tools like 'group_by' by explicitly mentioning the workaround for the editor's Group By dropping non-aggregated columns, making its unique role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use this tool: as a workaround when the standard Group By would drop non-aggregated columns. It implies the alternative (standard group_by) and gives the specific use case. However, it does not explicitly state when not to use it or mention other alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_visualsA
GROUP a set of visuals into a single group (like Desktop's right-click > Group). Creates a group container and stamps each child visual with parentGroupName. visualNames = comma-separated visual names (from list_visuals) - at least two. groupName is the optional display name shown in the selection pane. Returns the new group name.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| groupName | No | optional group display name | |
| visualNames | Yes | comma-separated visual names to group (at least two) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses side effects (creates a group container, stamps each child with parentGroupName) and the return value. It lacks details about page handling or reversibility, but the core behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses five short sentences, front-loading the purpose and then explaining the mechanism and parameters. It is compact and contains no unnecessary filler, though the parameter details are interleaved somewhat informally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for a grouping tool: it explains the operation, key parameter constraints, side effects, and return value. It does not mention error conditions or page-specific behavior, but given the moderate complexity and absence of an output schema, it provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents 75% of parameters. The description adds value by clarifying that visualNames come from list_visuals, groupName appears in the selection pane, and at least two visuals are required. It does not clarify reportSessionId or page, so it adds moderate but not complete meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool groups a set of visuals into a single group, with a specific mechanism (creates a group container and stamps parentGroupName). It distinguishes from sibling tools like ungroup_visuals and group_by by explaining the container creation and stamping behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool (to group visuals, analogous to Desktop's Group). It also mentions that visualNames come from list_visuals, implying a prerequisite. However, it does not explicitly list alternatives or exclusions, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hide_filterA
HIDE a filter in view mode (still applied to the report but not shown in the filter pane to viewers). scope=visual|page|report (visual needs page+visual; page needs page). Matches the filter on table[field]. Sets the filter's isHiddenInViewMode flag.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page name (required for scope=visual|page) | |
| field | Yes | field to match | |
| scope | Yes | visual|page|report | |
| table | Yes | table that owns the filter field | |
| hidden | No | true = hidden, false = shown | |
| visual | No | visual name (required for scope=visual) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the actual mechanism (sets the isHiddenInViewMode flag) and the key behavioral nuance (filter still applied to the report). It also clarifies matching by table[field]. This goes beyond a simple statement of purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the capitalized action HIDE and packed with necessary detail: scope requirements, matching, and flag effect. No redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the action, scope constraints, matching mechanism, and the resulting state. Missing edge-case behavior (e.g., filter not found) and the false case of hidden, but given no output schema and moderate complexity, this is adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents most parameters. The description adds crucial relationship semantics (scope=visual requires page+visual; scope=page requires page) and matching logic (table[field]) that are not in the schema. It doesn't explain the hidden parameter, but the schema default and the HIDE wording cover that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it HIDEs a filter in view mode, explaining that the filter remains applied but is not shown to viewers. This specific verb+resource+outcome distinguishes it from siblings like 'remove_filter' and 'lock_filter'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: when you want to hide a filter from the filter pane while still applying it. It also specifies scope-specific requirements (visual needs page+visual, page needs page). However, it doesn't explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
impact_analysisA
BLAST RADIUS of one model object (a measure name or Table[Field]): every model dependant that transitively references it through DAX, plus - when reportSource is given - every report visual touching the object or any dependant measure (page/visual/context). The pre-rename / pre-delete safety check. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | live model sessionId (connect_model) | |
| objectName | Yes | the object: Table[Field] or a bare measure name | |
| reportSource | No | optional report side: a reportSessionId, a pbirSessionId, or a PBIR path (omit for a model-only radius) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and it does well: it discloses the read-only nature and explains the transitive traversal over DAX dependants. It also clearly states how the optional reportSource changes behavior to include report visuals. It doesn't mention error cases or performance, but the key safety aspect is thoroughly covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the memorable 'BLAST RADIUS' phrase, and every word earns its place. It packs a lot of detail without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains what the tool returns (dependants and optionally visuals) and why it's used. It could be slightly more explicit about the return format or edge cases, but the core purpose and scope are well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage, so the baseline is 3. The description adds meaningful context: it clarifies that objectName can be a bare measure name or Table[Field], and it explains that reportSource expands the analysis to report visuals. This goes beyond simple schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the vivid 'BLAST RADIUS' metaphor to immediately convey a specific, bounded analysis: find all DAX and report references to one model object. It clearly states the resource (a measure name or Table[Field]) and explicitly positions itself as a 'pre-rename / pre-delete safety check', distinguishing it from generic dependency tools like analyze_dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'The pre-rename / pre-delete safety check', giving a clear scenario for when to use this tool. It also notes 'Read-only', which signals it's safe to call. However, it does not explicitly name alternative tools or say when NOT to use it, so it misses the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_bpa_rulesetA
Import a Tabular Editor BPARules.json document and reconcile it with the built-in catalogue: rules whose ID matches a built-in are mapped to our evaluable check; rules whose logic is a Tabular Editor dynamic C#/LINQ expression we cannot safely evaluate are registered as descriptive-only (id/severity/description surfaced) and FLAGGED. The arbitrary TE expression string is never executed.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | the raw BPARules.json content (a JSON array of rules, or an object with a 'Rules' array) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral disclosure burden. It explicitly states that rules matching built-ins are mapped to evaluable checks, unsupported C#/LINQ expressions are registered as descriptive-only and flagged, and the arbitrary TE expression string is never executed. This safety-critical transparency is exceptional and goes beyond what annotations typically provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the primary action. Every clause contributes meaning: the import, the reconciliation logic, and the explicit non-execution safety guarantee. It is slightly long but not verbose, earning a 4 for clarity and focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two parameters, no output schema, and no annotations. The description covers the essential behavior: what is imported, how rules are categorized, and a critical safety guarantee. It does not detail return values or error scenarios, but given the tool's complexity, the coverage is strong. A 4 reflects the solid but not exhaustive completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the 'json' parameter with a description, but 'sessionId' is undocumented (50% coverage). The description clarifies the json input's role as a BPARules.json document and explains the reconciliation behavior, but it does not compensate for the missing sessionId semantics. The behavior described is tool-level rather than parameter-level, so it adds modest value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Import a Tabular Editor BPARules.json document and reconcile it with the built-in catalogue.' This distinguishes it from sibling tools like list_bpa_rules, run_bpa, and fix_bpa by focusing on the import/reconciliation workflow. The mapping to evaluable checks and descriptive-only rules further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you have a BPARules.json document to import and reconcile. It does not explicitly name alternatives or exclusions, but the import/reconcile context is clear enough to differentiate from related BPA tools. A 4 is appropriate because it lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_tmdlA
Import a TMDL folder (the official deserializer) into the live model. DEFAULTS TO A DRY RUN that returns the table/measure diff and changes NOTHING. Applying TMDL REPLACES the live model metadata (createOrReplace semantics), so the actual apply is gated behind applyToLiveModel:true. The folder may be a model TMDL folder or a PBIP SemanticModel (the nested 'definition' subfolder is auto-detected).
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| folderPath | Yes | path to the TMDL folder (or a PBIP .SemanticModel folder) | |
| applyToLiveModel | No | APPLY the TMDL to the live model (createOrReplace). Default false = dry-run diff only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It explicitly warns that applying REPLACES live model metadata (createOrReplace semantics), and that dry-run changes nothing. Also discloses auto-detection of PBIP definition subfolder.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, with important warnings in caps ('DEFAULTS TO A DRY RUN', 'changes NOTHING'). Every sentence earns its place without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description covers purpose, input flexibility, destructive behavior, and the dry-run return value (table/measure diff). Complete for a complex import tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond the schema for folderPath by explaining it can be a model TMDL folder or a PBIP SemanticModel with auto-detection. Also clarifies applyToLiveModel's gating and createOrReplace semantics. SessionId is not described but is a common session parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Import a TMDL folder' into the live model with a specific verb and resource. The phrase 'official deserializer' adds context, and it distinguishes from siblings like export_tmdl by focusing on import.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that the tool defaults to a dry-run diff and that applying requires applyToLiveModel:true, guiding when to use it for preview vs apply. It doesn't explicitly name alternative tools, but the context is clear enough for sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infer_relationshipsA
Auto-detect missing relationships from the DATA, not just names: finds columns matching by name + type across tables, then proves each one - which side is the unique key (cardinality + direction) and what fraction of the many-side keys exist on the one side (coverage). Returns ranked proposals with confidence; with autoCreate:true it creates the high-confidence many-to-one matches (as inactive if an active path already exists). Run this instead of guessing add_relationship calls.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| autoCreate | No | create the high-confidence many-to-one matches automatically (default false = propose only) | |
| minCoverage | No | min fraction of many-side keys that must exist on the one side to be 'high' confidence (default 0.9) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds. It reveals the algorithm (data-driven matching, cardinality/direction analysis, coverage computation), the output behavior (ranked proposals), and the effect of autoCreate (creates high-confidence matches as inactive if an active path exists). This is rich, honest behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and well-structured, with each clause adding value. It front-loads the core purpose and then adds actionable details about algorithm and options. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and only minimal annotations, the description covers the essential context: what the tool does, how it works, what it returns, and the effect of the optional autoCreate flag. It is sufficient for an agent to understand the tool's role and potential side effects in a complex model-editing environment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (autoCreate and minCoverage have descriptions, sessionId lacks one). The description adds context beyond the schema by explaining the coverage concept and how autoCreate uses high-confidence matches, helping agents understand minCoverage and autoCreate semantics. sessionId remains standard, but the added context for the other parameters justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: auto-detect missing relationships from actual data, not just names. It specifies the process (matching columns by name+type, proving key direction and coverage) and the output (ranked proposals with confidence). It also distinguishes itself from the sibling add_relationship tool by stating 'Run this instead of guessing add_relationship calls'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool over manually guessing add_relationship calls, providing a clear alternative and context. It also explains when autoCreate is beneficial and how high-confidence matches are handled, giving agents a strong sense of when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
info_viewB
Run EVALUATE INFO.VIEW.() (or INFO.()) and return shaped rows - the model's documentation/lineage surface. view = TABLES | COLUMNS | MEASURES | RELATIONSHIPS | CALCDEPENDENCY | etc.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | TABLES | COLUMNS | MEASURES | RELATIONSHIPS | CALCDEPENDENCY | |
| maxRows | No | max rows to return (default 1000) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the execution mechanism (EVALUATE) and output shape, but does not disclose read-only behavior, permission requirements, or how invalid view names 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and output. Slightly dense but every phrase contributes meaning, including the technical example and enum list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a metadata query tool with 3 params and no output schema, it conveys the core purpose and view selection. However, it leaves return row shapes, error behavior, and maxRows semantics unspecified, though those are partially covered by schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats the view enum values already present in the schema and adds minor context like 'or INFO.<x>()' and 'etc.' It does not substantially enrich understanding beyond the schema, which already covers 67% of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Run EVALUATE INFO.VIEW.<view>()') and resource (model metadata views) with explicit output type (shaped rows). It distinguishes itself as the generic model documentation/lineage surface, a unique concept among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool instead of alternatives like list_measures or list_tables. The phrase 'documentation/lineage surface' implies use but lacks explicit conditions, exclusions, or comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inject_evaluateandlogA
Wrap a measure's DAX in EVALUATEANDLOG so its value is captured in Server Timings / DAX Studio traces during debugging. Idempotent. Remember to strip_evaluateandlog afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | optional log label | |
| table | Yes | ||
| measure | Yes | ||
| sessionId | Yes |
TDQS
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 adds important context: the operation is idempotent, and the user must remember to strip afterwards. But it doesn't describe side effects on the measure (e.g., whether the original DAX is preserved), session requirements, or what happens if the measure is already wrapped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences. The purpose is front-loaded, and the idempotence and cleanup reminder are stated directly. No wasted words; every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and a crucial post-condition but lacks parameter-level context and return/result behavior. Given the tool's moderate complexity and absence of output schema, the description is adequate but not complete, especially around sessionId and table.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'label' has a description). The description names 'measure' implicitly but provides no explanation for 'sessionId' or 'table'. It does not compensate for the low schema coverage, leaving these parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: wrapping a measure's DAX in EVALUATEANDLOG for debugging, with the specific purpose of capturing values in Server Timings / DAX Studio traces. This distinguishes it from sibling tools like strip_evaluateandlog and other measure-editing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: during debugging. It also instructs to strip_evaluateandlog afterwards, naming the complementary sibling tool. However, it doesn't provide explicit exclusions (e.g., when not to use) or alternatives for other debugging scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_bottom_rowsB
Power Query Keep Bottom Rows: keep only the last N rows. Appends Table.LastN to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | number of rows to keep from the bottom | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool appends Table.LastN to the table's M query, indicating it adds a transformation step rather than overwriting. However, with no annotations, it omits any side effects, reversibility, or impact on existing query steps, limiting transparency. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two short sentences that front-load the main action and add an implementation note. No redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple transformation, the description gives the core operation and implementation, but it lacks usage context and parameter clarifications. With no output schema or annotations, it is minimally complete but leaves gaps around edge cases and table identification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (count and partitionName described), but the tool description adds no parameter detail beyond implying N corresponds to count. It does not explain the table, sessionId, or how partitionName interacts, failing to compensate for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool keeps only the last N rows from a Power Query table, with a specific verb and resource. It distinguishes from sibling tools like keep_top_rows by specifying 'last N rows' and from remove_bottom_rows by the 'keep' action. The implementation detail 'Appends Table.LastN' reinforces the specific operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as keep_top_rows, keep_range_rows, or remove_bottom_rows. The description only defines what it does, not the context or decision criteria, leaving the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_errorsA
Power Query Keep Errors: keep ONLY rows that carry an error value (to inspect bad data). Appends Table.SelectRowsWithErrors to the table's M query. Pass columns (comma-separated) to test only those columns; omit for the whole row.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | No | columns to test for errors, comma-separated (omit for whole row) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 Table.SelectRowsWithErrors is appended to the M query, which is a useful concrete detail, but it does not disclose side effects, reversibility, or requirements like permissions. Basic behavior is covered, but not deeply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with three sentences each serving a distinct purpose: purpose, implementation, and parameter usage. There is no redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and implementation detail, but without annotations or an output schema, it does not explain prerequisites, potential side effects, or what happens when no errors exist. It is adequate for a simple operation but lacks depth for a mutating M query function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the 'columns' and 'partitionName' parameters, and the description merely repeats the column usage. It adds no new meaning for the required 'table' and 'sessionId' parameters, leaving 50% of parameters without compensating explanation. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('keep') and resource ('rows that carry an error value'), and explicitly distinguishes it from related operations like remove_errors. The purpose is unambiguous and immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('to inspect bad data') and explains how to target columns, but it does not explicitly compare against alternatives like remove_errors or replace_errors, nor does it state when not to use this tool. It offers minimal guidance for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_range_rowsA
Power Query Keep Range of Rows: skip offset rows then keep count rows. Appends Table.Range to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | number of rows to keep | |
| table | Yes | ||
| offset | Yes | rows to skip before the range starts | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It reveals that the tool appends Table.Range to the table's M query, which indicates a query-modifying side effect. However, it does not clarify whether this is reversible, what happens if offset exceeds row count, or the exact nature of the modification beyond 'appends.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the purpose stated up front and additional behavior in the second sentence. No fluff or redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple transformation tool, the description adequately covers the core operation and its effect (appending to the M query). It does not explain optional partitionName or sessionId, but these are likely standard and not critical. The lack of an output schema reduces the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explicitly stating the sequence: 'skip offset rows then keep count rows,' which clarifies the relationship between offset and count. It also mentions the underlying Table.Range function, providing implementation context. This compensates for the 60% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: 'skip offset rows then keep count rows' and 'Appends Table.Range to the table's M query.' This distinguishes it from sibling tools like keep_top_rows or skip_rows by specifying a range operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention conditions, exclusions, or alternative tools. Usage is only implied by the transformation logic, which is insufficient for selecting among similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_top_rowsA
Power Query Keep Top Rows: keep only the first N rows. Appends Table.FirstN to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | number of rows to keep from the top | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 add useful context by stating 'Appends Table.FirstN to the table's M query', revealing that it modifies the query. However, it does not disclose whether this is reversible, whether permissions are needed, or any side effects on existing steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and includes an implementation detail without being verbose. Every word contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple operation, the description covers the core functionality and even mentions the M query modification. However, it omits guidance on related tools and doesn't explain the undocumented table/sessionId parameters, leaving some gaps relative to the schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes count and partitionName, but table and sessionId lack descriptions. The description does not compensate for these undocumented parameters; it only clarifies the 'count' parameter implicitly through 'first N rows', which is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('keep only the first N rows') and identifies the resource (the table's M query). It distinguishes from siblings like keep_bottom_rows and keep_range_rows by specifying 'top' rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as filter_rows, keep_bottom_rows, or skip_rows. The description only states what it does, not when to choose it over other row-manipulation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bookmarksA
List the report's bookmarks: each one's name, displayName, active page, and the visual ids it hides.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently indicates the tool performs a read-only listing and specifies the exact data elements returned, which goes beyond a mere restatement of the tool name. It does not, however, mention any potential side effects, error conditions, or permission requirements, but for a simple list operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that starts with the action and object, then lists the specific fields returned. It is concise, front-loaded, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is mostly complete. It states what the tool does and what data comes back. It could benefit from explicitly tying the reportSessionId to the 'report' being referenced, but given the simplicity of the operation, the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (reportSessionId) with zero description coverage, and the tool description does not mention or explain this parameter. The parameter name itself is somewhat self-explanatory, but the description adds no value beyond the schema in explaining what the session ID is or how it should be provided. This is a clear gap given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'the report's bookmarks' and enumerates the exact fields returned (name, displayName, active page, visual ids hidden). This clearly distinguishes it from sibling tools like add_bookmark, delete_bookmark, and update_bookmark, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by its very nature: it lists bookmarks. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites (e.g., needing an active report session). The context is clear but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bpa_rulesA
List the BPA rule catalogue so you can see coverage: id, category, severity, scope, fixable flag, the exact TOM property each autofix sets, and the description. Optionally filter to one category. Use the IDs with run_bpa (ruleIds) and fix_bpa (ruleId).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | category filter: Performance|DAXExpressions|ErrorPrevention|Maintenance|NamingConventions|Formatting|Metadata|RelationshipsLayout | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly implies a read-only list operation and details the output fields. However, it does not explicitly state that it is side-effect-free or otherwise disclose any potential behavioral nuances, though the nature of listing inherently suggests no state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and purpose. Every clause adds meaningful information: the output fields, the optional filter, and the cross-reference to run_bpa/fix_bpa. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the primary purpose: it lists the output fields, supports filtering, and connects to sibling tools. The only notable omission is the role of sessionId, which is not explained in the description or schema. Given the simplicity of the tool, this is a minor gap, but it prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (category has a description, sessionId does not). The description adds minimal value for category by noting it's an optional filter, but fails to explain sessionId at all. Since half of the parameters are undocumented in both schema and description, the parameter semantics are insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List the BPA rule catalogue') and identifies the resource, while enumerating the specific fields returned (id, category, severity, scope, fixable flag, TOM property, description). It distinguishes itself from sibling tools by explicitly referencing run_bpa and fix_bpa for subsequent actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides direct usage guidance: 'Use the IDs with run_bpa (ruleIds) and fix_bpa (ruleId).' It also implies when to use the tool ('so you can see coverage') and how to filter ('Optionally filter to one category'), effectively steering the agent toward this tool before applying rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendarsA
List the model's calendar-based time-intelligence definitions: table, primary column and column groups. FLAG: read from PBI_Calendar table annotations (the Wave R convention) because the native calendar/calendarColumnGroup TOM objects are absent from this build. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only' and reveals a non-obvious implementation detail: it reads from PBI_Calendar table annotations because native TOM objects are absent. This adds meaningful context beyond the schema, though it does not detail error behavior or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action and scope. The FLAG note is compact yet informative, adding value without verbosity. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description provides a clear overview: purpose, source, and read-only nature. It hints at the return content (table, primary column, column groups). However, it does not fully explain return format or what happens if annotations are missing, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the sessionId parameter at all. Since the schema has 0% description coverage, the description fails to compensate or add meaning. While sessionId is a common identifier, the low coverage and lack of explanation warrant a low score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'List' and clearly specifies the resource: 'the model's calendar-based time-intelligence definitions'. It further details the contents (table, primary column, column groups), making the purpose unambiguous and distinct from sibling tools that add or modify calendar intelligence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for listing calendar-based time-intelligence definitions but does not explicitly state when to prefer it over alternatives or mention any exclusions. The technical FLAG provides contextual guidance about the data source, but not a direct comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_culturesA
List the model's cultures (locales): name, translation count, and whether linguistic (Q&A) metadata is attached. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only', disclosing that no mutation occurs, and it clarifies the content of the output (name, translation count, linguistic metadata). This adds useful behavioral context beyond the basic listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the action, resource, and output details without unnecessary words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description provides sufficient detail about what is returned and the read-only behavior. It lacks a note on the sessionId parameter but overall the tool is simple enough that the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, sessionId, with zero description coverage. The description does not mention sessionId or explain how it is used to select the model or how it relates to the listed cultures. The parameter name is self-evident but the description adds no guidance on its purpose or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the model's cultures (locales) and specifies the exact fields returned: name, translation count, and linguistic metadata indicator. The verb 'List' plus the resource 'model's cultures' makes the purpose unmistakable and distinguishes it from sibling tools like list_translations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting cultures but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The read-only nature is noted, but there is no guidance on selecting a session or model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_excel_sheetsA
List the worksheet names in an .xlsx/.xlsm file (so you can pick the one to stage).
| Name | Required | Description | Default |
|---|---|---|---|
| xlsxPath | Yes | absolute path to the .xlsx/.xlsm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It clearly indicates a read-only listing action, but does not disclose potential error behavior, sorting, or return format. For a basic 'list' tool, the lack of further detail is not egregious, but there is room for improvement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource, and includes a useful parenthetical purpose. No redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description explains what it does and why it is used, which is nearly sufficient. Mentioning the return format (e.g., an array of sheet names) would make it complete, but the current description is not inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the only parameter (xlsxPath) with 100% coverage, so the description adds little beyond repeating the file type. The baseline of 3 is appropriate since the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('List') and resource ('worksheet names in an .xlsx/.xlsm file'), which precisely states what the tool does. It also includes the purpose ('so you can pick the one to stage'), which helps distinguish it from other Excel/CSV-related tools like stage_excel_to_csv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used before staging an Excel file to CSV, providing clear context. It does not explicitly list alternatives or when not to use it, but the use case is adequately conveyed for a simple listing operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mA
List every Power Query (M) partition expression and shared expression in the model.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly communicates the list scope ('every...in the model') and implies a read-only operation, but it does not describe the return format, pagination, or session requirements. This is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and object, with no filler. Every word contributes to the purpose, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is mostly sufficient: it names exactly what will be listed. However, it omits any note about the return shape or that the operation is read-only, which would be helpful for an agent choosing among many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, sessionId, is defined in the schema with no description. The tool description does not mention or explain sessionId, leaving the agent to infer its purpose from naming conventions. With 0% schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clearly identifies the resource: every Power Query (M) partition expression and shared expression in the model. This clearly distinguishes it from sibling tools like list_partitions, which list partitions but not their M expressions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_partitions or set_shared_expression. It states what it lists but not the conditions under which it should be chosen or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_measuresA
List measures (with DAX) for the whole model or one table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | limit to this table (optional) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation and 'with DAX' indicates the returned content, but it doesn't explicitly state that no modifications are made or describe any other side effects, prerequisites, or response details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately identifies the action and output. Every word earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool, the description communicates the core scope (whole model or one table) and the output content (measures with DAX). Since there is no output schema, it could be more explicit about the return format, but the description is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the table parameter is described in the schema, and the description echoes that it can limit to one table. However, the required sessionId parameter is not explained in either the schema or the description. The description adds marginal value over the schema but does not fully compensate for the undocumented sessionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('measures'), and clarifies the output includes DAX expressions. It also defines the scope ('whole model or one table'), which clearly distinguishes it from sibling tools like add_measure or delete_measure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to list all measures or measures in a specific table. It doesn't explicitly mention alternatives or exclusions, but the scope statement is sufficient for a simple listing operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_open_modelsA
UNSAFE-FOR-PIPELINE (interactive attach only): lists the Power BI Desktop models a human currently has open on this machine, opening a probe connection into every one of them. Open the .pbix in Power BI Desktop first. Never call this from an unattended job.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly reveals a side effect: 'opening a probe connection into every one of them', and labels the tool 'UNSAFE-FOR-PIPELINE'. This goes well beyond what an annotation might typically state and is highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately compact, front-loaded with the critical 'UNSAFE-FOR-PIPELINE' warning, and uses three sentences that all contribute information: what it does, the prerequisite, and the exclusion. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description is sufficiently complete for a list-oriented tool: it states the action ('lists'), the target ('models'), the context ('open on this machine'), and important side effects and prerequisites. The return value is implied by 'lists' and no additional fields are necessary for this use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema coverage is trivially 100% and there are no parameter meanings to clarify. The description adds no parameter information, but none is needed. This aligns with the baseline of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('lists') and resource ('Power BI Desktop models') with a clear scope ('a human currently has open on this machine'). The 'interactive attach only' and 'UNSAFE-FOR-PIPELINE' context distinguishes it from other list tools in the sibling set that operate on models or datasets more broadly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: the prerequisite 'Open the .pbix in Power BI Desktop first' and the strong exclusion 'Never call this from an unattended job' plus 'interactive attach only'. This clearly tells the agent when it is appropriate to invoke and when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesB
List the report pages (name, displayName, size, visual count).
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description does not explicitly state that it has no side effects, nor does it mention requirements like a valid session, error handling, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that states the action and output fields without any fluff. It is perfectly sized for its purpose and front-loaded with the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the basic return information but lacks usage guidance and parameter clarification. It is minimally adequate but not fully complete for an agent to use confidently without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, and the description does not explain the reportSessionId parameter. The parameter name is somewhat self-explanatory, but the description provides no additional meaning, such as where to obtain the ID or what constitutes a valid session, leaving a gap for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'report pages' and enumerates the returned fields (name, displayName, size, visual count). This effectively distinguishes it from siblings like list_visuals or list_measures, though it could clarify confusion with list_pbir_pages if applicable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent without direction on selecting this over similar list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_partitionsA
List partitions - {table, partition, sourceType, mode, state, refreshedTime} - for the whole model or one table. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | restrict to one table (optional) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explicitly states 'Read-only', which is a key behavioral trait, and lists the returned fields. It does not disclose potential limitations like pagination, but for a simple list operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every element—the verb, scope, and output fields—earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the output fields and scope, which is sufficient for a list tool with two parameters. It lacks explicit return format details, but the field list implies a structured result. No output schema exists, so this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description adds meaning to the 'table' parameter by clarifying it can be used for the whole model or restricted to one table. However, it does not address 'sessionId' beyond what the schema shows, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'partitions', and explicitly defines the scope ('whole model or one table') and the fields returned. This distinguishes it from sibling tools like add_partition, delete_partition, and refresh_partition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for read-only inspection of partitions, but does not explicitly name alternative tools or state when not to use it. The 'Read-only' note provides some guidance, and the scope clarification helps, but there are no explicit exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pbir_pagesA
List the pages of an open PBIR report (GUID name, displayName, size, displayOption, visual count), in page order.
| Name | Required | Description | Default |
|---|---|---|---|
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the output structure (specific fields) and ordering, which is valuable. However, it does not mention potential side effects (though a list operation is likely read-only), error behavior, or session prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then lists output fields and ordering. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter list tool without an output schema, the description covers the operation, the resource, and the output fields. It is slightly incomplete in not addressing edge cases like invalid session IDs or pagination, but this is sufficient for core use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions for pbirSessionId (0% coverage). The description references an 'open PBIR report' which indirectly maps to the session ID, but it does not explain how to obtain the ID, its format, or that it is the session identifier. The parameter name itself is somewhat self-explanatory, giving partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' with the resource 'pages of an open PBIR report' and explicitly enumerates the fields returned (GUID name, displayName, size, displayOption, visual count) and the ordering ('in page order'). This distinguishes it from the sibling list_pages by specifying PBIR-specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for open PBIR reports when you need page information, but it does not explicitly contrast with alternatives like list_pages or provide when-not-to-use guidance. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesA
The recipe CATALOG: lists every report template, what it produces, and the config fields that map it to a model. Call this first to pick a template, then call that recipe's tool with a JSON config.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description indicates a read-only catalog operation by saying 'lists'. It adds useful context about the output (templates, produced outputs, config field mappings). It does not explicitly state 'non-mutating' or discuss permissions, but for a simple list tool this is largely sufficient, hence a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences that front-load the purpose and provide an actionable next step, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately covers what the tool does and how to use it, including the workflow of choosing a recipe and invoking its tool. It is complete for a catalog tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters and an empty input schema. The description does not need to explain parameters, but mentions the output includes config fields, which adds context. Since no parameters exist, the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists every report template, what it produces, and config fields, using the specific term 'recipe CATALOG'. This distinguishes it from sibling list tools by focusing on report templates/recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this first to pick a template, then call that recipe's tool with a JSON config, providing clear usage context and sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesA
List every security role with its model permission, members, and per-table row-level filters (RLS) and object-level metadata permissions (OLS).
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It clearly states this is a read-only listing operation covering all security roles and enumerates the returned data dimensions. It does not mention permissions needed or potential response size, but the list-only nature 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the entire purpose and scope without redundant words. The list of included items is compact and clearly organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what data is returned, but with no output schema or annotations, it omits return format, pagination, and prerequisite details such as session validity. It is adequate for a simple read tool but leaves some invocation context unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, sessionId, is required but not mentioned in the description. Schema description coverage is 0%, and the description does not compensate by explaining how to obtain or use the session identifier, forcing the agent to infer from the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List every security role') and specifies exactly what is included: model permission, members, RLS, and OLS entries. This clearly distinguishes it from sibling tools that create, delete, or modify roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, such as set_role_permission, add_role, or run_dax_as_role. There is no explicit 'use this for...' or 'use X instead' direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_datasetsA
List the datasets and reports in a Power BI Service workspace (GET .../datasets + .../reports) - the ids feed refresh_dataset, execute_service_query and generate_embed_token. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | workspace (group) id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool performs two GET requests, requires an AAD token, and that the token is never echoed. It does not mention potential side effects (though listing is inherently read-only) or pagination, but for a list operation the transparency is above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: the first covers purpose, endpoints, and downstream usage; the second covers authentication. No fluff, information is front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is quite complete for a list tool: it states what is listed (datasets and reports), that ids feed other tools, and the auth requirement. There is no output schema, so it could have described the return structure (e.g., fields like id, name), but the mention of ids and the simplicity of the tool make this acceptable. It misses nothing critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the accessToken parameter can be omitted to use DAXOPS_PBI_TOKEN and that it is never echoed, which is not in the schema. No additional info is given for workspaceId beyond its schema description, but the parameter clarification justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists datasets and reports in a Power BI Service workspace, with a specific verb (list) and resource. It distinguishes from siblings by specifying the two endpoints (GET .../datasets + .../reports) and notes the ids are used by refresh_dataset, execute_service_query, and generate_embed_token, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says the ids feed refresh_dataset, execute_service_query, and generate_embed_token, telling the agent when to use this tool (before those operations). It also states the authentication prerequisite (AAD access token or DAXOPS_PBI_TOKEN), providing clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_translationsA
List object translations - {culture, objectType, objectName, table, property, value} - for every culture or one. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| culture | No | restrict to one culture, e.g. fr-FR (optional) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explicitly states 'Read-only,' which is a key safety behavior, and describes the shape of each translation entry. It does not cover pagination, sorting, or error behavior, but for a simple listing tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that includes the output fields and the read-only flag. Every element is informative, with no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 parameters, no output schema), the description provides the purpose, output structure, and optional filtering while noting read-only behavior. It omits sessionId semantics and pagination details, but these are less critical for a list operation with simple parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context for the culture parameter by noting 'for every culture or one,' while the schema already provides an example. The sessionId parameter is required but not described in either the description or schema, so the description only partially compensates for the 50% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and resource 'object translations,' and enumerates the fields returned: culture, objectType, objectName, table, property, value. It clearly distinguishes from sibling list tools like list_cultures or list_roles by focusing on translations and supports filtering by a single culture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool lists translations, optionally filtered by one culture, and is read-only. However, it does not explicitly mention when to prefer this over alternatives like set_translation or delete_translation, nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_udfsA
List the model's DAX User-Defined Functions (name, expression, description).
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return shape (name, expression, description), which is a behavioral detail, and the verb 'list' implies a read-only operation with no side effects. It does not mention error behavior or permissions, but this is a simple listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that contains no redundant words. It efficiently states the purpose and output fields without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool, the description covers the core purpose and output. However, it lacks parameter semantics, usage alternatives, and has no output schema to fall back on, leaving some gaps in the complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no information about the 'sessionId' parameter. The description does not compensate for the schema gap, leaving the agent to infer the parameter's purpose and format from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('List'), the resource ('the model's DAX User-Defined Functions'), and the output fields ('name, expression, description'). This distinguishes it from sibling tools like list_measures or list_roles, which target different object types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: call this when you need to inspect DAX user-defined functions. However, it does not explicitly state when to prefer this over alternatives or mention any exclusions or prerequisites beyond the session ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variationsA
List the date-navigation variations on a column (name, relationship, default hierarchy, isDefault). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states 'Read-only', which discloses non-destructive behavior, and additionally reveals the fields returned (name, relationship, default hierarchy, isDefault). It does not cover edge cases or authentication, but this is sufficient for a simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly-written sentence that front-loads the verb and resource. Every word contributes, with no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core aspects: the operation, the read-only safety, and the returned fields. It does not explain parameter semantics (especially sessionId) or provide usage context, but given the simplicity of the tool, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds little beyond the parameter names. It implies 'column' is the target column, but does not explain 'table' or 'sessionId', leaving 'sessionId' especially vague. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the resource ('date-navigation variations on a column') with a parenthetical list of returned fields. It clearly distinguishes itself from sibling tools like 'add_variation' and 'delete_variation' by focusing on read-only enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are mentioned. The description implies its use for inspecting existing variations, but lacks guidance on when not to use it or when to prefer a related tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visual_data_rolesA
The QUERY data roles a visual type takes (Category / Y / Series / Values / Rows / ...), each with what it accepts (Grouping | Measure | GroupingOrMeasure), its per-role field cap, and the deprecated -> modern type mapping (card -> cardVisual, table -> tableEx, matrix -> pivotTable). Role metadata is HAND-CURATED for the mainstream visual types because the bundled theme schema only describes formatting cards, not query roles - coverage is reported honestly (curated | none). The role half of the discovery surface; list_visual_properties is the formatting half.
| Name | Required | Description | Default |
|---|---|---|---|
| visualType | Yes | a visualType key, e.g. clusteredColumnChart, tableEx, scatterChart (deprecated aliases accepted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that role metadata is hand-curated and that coverage is reported honestly ('curated | none'), meaning unknown or unsupported visual types will not yield fabricated data. It also explains why the bundled theme schema cannot be used, adding important context about the tool's internal behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded, but slightly long. It packs multiple facts (role types, accepted values, field caps, mapping, curation caveat, sibling comparison) into two sentences. Every sentence contributes value, but the density makes it less scannable than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter discovery tool with no output schema, the description covers the returned content (roles, accepted types, field cap, mapping), the data source caveat, and the honest coverage behavior. It also positions the tool within the sibling landscape, making it contextually complete for an agent to select and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents visualType with examples and notes deprecated aliases (100% coverage). The description adds no syntax or format details beyond the schema, so it does not elevate the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'QUERY' and identifies the resource as 'data roles a visual type takes'. It enumerates concrete content (role types, accepted value kinds, field caps, deprecated mapping) and explicitly distinguishes itself from list_visual_properties as the formatting half, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly scopes when to use this tool: it is 'the role half of the discovery surface' and points to list_visual_properties as the formatting alternative. It also sets expectations about coverage via the 'curated | none' honesty note, giving the agent a decision criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visual_propertiesA
List ALL formatting cards and their properties for one visualType (commonCards like title/background/border PLUS the visual-specific cards). Each property reports its type (bool|number|text|color|enum|object), enum values where applicable, and numeric min/max where declared. The complete discovery surface for what set_visual_format can set on a visual.
| Name | Required | Description | Default |
|---|---|---|---|
| visualType | Yes | a canonical visualType key, e.g. lineChart, tableEx, slicer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the output contents: property type, enum values, numeric min/max, and both common and visual-specific cards. It does not explicitly state that the operation is read-only, but 'List' and the output-focused description imply a non-mutating discovery operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences. The first sentence states the action and scope, the second details the output fields, and the third explains the tool's relationship to set_visual_format. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description is reasonably complete: it explains what is listed, what properties each entry reports, and why the tool matters. It does not mention visualType validation or error behavior, but those are not essential for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter (visualType) with examples, providing 100% coverage. The description adds that this parameter selects the complete formatting surface (common + visual-specific), but it does not add syntax, format, or constraint details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List ALL formatting cards and their properties') and names the resource ('for one visualType'), clearly distinguishing it from related set/get/validate visual tools. It frames the tool as the 'complete discovery surface' for set_visual_format, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: before set_visual_format, to discover what formatting properties are available for a visual type. It also scopes usage to one visualType. However, it does not explicitly name alternative tools or exclusion cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visualsA
List the visuals on a page (name, type, position).
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | Yes | page name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns name, type, and position, which is useful. However, it does not mention potential side effects, required permissions, error behavior, or the role of reportSessionId. For a simple read-only list operation, some of this is less critical, but the description could be more explicit about the session context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. The key information is front-loaded: 'List the visuals on a page'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and no annotations, the description provides the basic purpose and return fields. However, it omits essential context such as what reportSessionId is and any assumptions about the page context. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (pageName has a description, reportSessionId does not). The description does not clarify reportSessionId at all, and its mention of 'on a page' merely echoes the pageName description. It adds no new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('visuals on a page'), and the scope ('name, type, position'). This distinguishes it from siblings like 'add_visual' and 'delete_visual', and its specific focus on listing visuals differentiates it from 'list_visual_properties'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need to enumerate the visuals on a specific page. It provides clear context (a page) but does not explicitly mention alternatives or exclusions, such as 'use list_visual_properties for detailed properties'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visual_typesA
List every canonical Power BI visualType key the formatting registry knows (52 types), each tagged data | container, with its card count. Use these keys with list_visual_properties / get_visual_schema and as a visual's type when adding visuals.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses the output scope (all 52 types), the data/container tagging, and card count. However, it does not specify the exact JSON structure of the output (e.g., field names), which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, dense with information about scope, content, and usage. It contains no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation list tool, the description is largely complete. It explains what is returned and how to use it. A slight shortfall is the absence of the exact return format, but given the simplicity, it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% vacuously. Per the rubric, the baseline for 0 params is 4, and no further parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists every canonical Power BI visualType key (52 types), each tagged as data or container with a card count. It also explicitly distinguishes the tool from sibling tools by stating these keys are used with list_visual_properties/get_visual_schema and as a visual's type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance on when to use the tool: to obtain valid visual type keys for use in other tools (list_visual_properties/get_visual_schema) and when adding visuals. This directly specifies the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesA
List the Power BI Service workspaces the caller can reach (GET /groups). Needs an AAD access token with the Power BI scopes (accessToken param or the DAXOPS_PBI_TOKEN env var); the token is used as a Bearer header only and never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses key behaviors: the required AAD token scope, that the token is used only as a Bearer header, and that it is never echoed. This goes beyond a simple operation description, though it omits error/rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and resource, and the auth note is concise. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose, scope, and authentication for a simple 1-parameter list operation. It doesn't describe the response format, but this is acceptable for a list tool without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage of the accessToken parameter, including the fallback to DAXOPS_PBI_TOKEN. The description's mention of auth and env var adds minimal semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'Power BI Service workspaces' and the API endpoint (GET /groups), clearly distinguishing it from sibling list tools like list_roles or list_service_datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool lists workspaces the caller can reach and explains the authentication requirement. While it doesn't explicitly name alternatives, the resource scope provides unambiguous usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_filterA
LOCK a filter in view mode (shown in the filter pane but cannot be changed by viewers). scope=visual|page|report (visual needs page+visual; page needs page). Matches the filter on table[field]. Sets the filter's isLockedInViewMode flag.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page name (required for scope=visual|page) | |
| field | Yes | field to match | |
| scope | Yes | visual|page|report | |
| table | Yes | table that owns the filter field | |
| locked | No | true = locked, false = unlocked | |
| visual | No | visual name (required for scope=visual) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the underlying flag being set (isLockedInViewMode) and the matching logic on table[field], which is useful. However, it does not disclose potential side effects, reversibility (locked=false), or behavior when the filter does not exist, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the action 'LOCK'. Every sentence adds meaningful information: the purpose, scope requirements, and the flag affected. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no annotations, the description covers core purpose, scope dependencies, and matching logic. It does not explain return values or error scenarios, but given the tool's simple nature and schema coverage, it is reasonably complete. A perfect score would require more about edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (86%), and the description adds valuable dependency semantics among scope, page, and visual, which are not apparent from the schema alone. It clarifies that table[field] identifies the filter and that the locked parameter controls the flag. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool LOCKS a filter in view mode, with specific reference to the filter pane and viewer permissions. This verb+resource combination distinguishes it from sibling tools like add_visual_filter, add_report_filter, or hide_filter, which perform different actions on filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit scope-specific usage requirements (visual needs page+visual; page needs page), which helps the agent select correct parameter combinations. It does not explicitly mention when to avoid this tool in favor of alternatives, but the context is clear enough for a single-purpose tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_as_date_tableA
Mark a table as the model's date table (the TOM equivalent of 'Mark as date table'): sets the table's data category to Time and flags the given DateTime column as the date key. Use this so built-in time intelligence works reliably against your own calendar table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| dateColumn | Yes | the DateTime date column to use as the date key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses two concrete behaviors (setting data category and flagging date column) but does not mention potential errors, prerequisites, or side effects such as overriding an existing date table mark. This is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, informative, and front-loaded with the action and its details. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple model-marking tool with three required parameters and no output schema, the description covers purpose, effect, and usage scenario. It lacks details about return values or error conditions, but these are not critical for the agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only dateColumn has a description). The description adds context for table ('your own calendar table') and dateColumn ('given DateTime column') but does not explain sessionId. It partially compensates for the low coverage, but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Mark a table as the model's date table' and elaborates by specifying the exact effects ('sets the table's data category to Time and flags the given DateTime column as the date key'). This distinguishes it from sibling tools like set_column_data_category (which only sets a category) and create_date_table (which creates a new table).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: 'Use this so built-in time intelligence works reliably against your own calendar table.' It tells when to use the tool but does not mention alternatives or exclusions, which would merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_removed_childrenA
Stamp the model/table annotation PBI_RemovedChildren so a schema sync keeps tables/columns you deleted removed (otherwise they reappear on the next refresh). removedSourceLineageTags is a comma-separated list of the SOURCE lineage tags/names of the removed children. Merges into any existing list.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the table the removed children belonged to | |
| sessionId | Yes | ||
| removedSourceLineageTags | Yes | removed children's source lineage tags/names, comma-separated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses that the tool stamps an annotation and merges into an existing list, but does not mention persistence, permission requirements, side effects, or what happens if the annotation already exists (beyond merging). It's a mutation, but no mention of reversibility or response. Enough for basic understanding but gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The first sentence delivers the core action and purpose; the second focuses on the key parameter. Front-loaded with the verb 'Stamp' and immediately contextualized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with no output schema, the description covers purpose and main parameter but omits explanation of sessionId and any error/edge-case behavior (e.g., what if table doesn't exist). It's adequate for basic invocation but not fully comprehensive given no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes table and removedSourceLineageTags but not sessionId (67% coverage). Description adds meaning for removedSourceLineageTags (source lineage tags, comma-separated, merge behavior) but doesn't explain sessionId or enhance the table parameter beyond schema. Since coverage isn't high, description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb 'Stamp' and clearly identifies the resource (model/table annotation PBI_RemovedChildren) and its purpose (prevent deleted tables/columns from reappearing on refresh). It distinguishes from siblings by naming a specific annotation and explaining the schema-sync context, which is not present in sibling tool names like set_annotation or set_lineage_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use (after deleting tables/columns that need to stay deleted across schema syncs) and why (otherwise they reappear). It does not explicitly list alternatives or exclude other tools, but the context is clear enough for an agent to decide. No explicit when-not-to-use, so slight deduction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_slicer_layoutA
Learn the slicer ROW STRUCTURE (row count, per-row y, height, left start, horizontal gap) from hand-fixed REFERENCE pages, then re-lay the slicers on TARGET pages onto that structure. Median-based inference tolerates reference noise (a slicer nudged off-canvas, a top row whose y drifts a few px between pages) - structure is INFERRED, never copied pixel-for-pixel. Slicers only: non-slicer visuals are never touched; widths are preserved (they shrink proportionally only when a row physically cannot fit the canvas). Writes the .pbix back offline (Report/Layout patched, DataModel byte-preserved). The .pbix must NOT be open in Power BI Desktop. Returns { ok, learned{referencePages,rows:[{row,y,height,leftStart,gap,samples}],rowPitch}, pagesMatched, totalMoves, pages:[{page,rowsDetected,moves:[{slicer,row,before,after}]}], persistedToDisk }.
| Name | Required | Description | Default |
|---|---|---|---|
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) | |
| targets | No | comma-separated TARGET pages to re-lay; omit (or 'all') for every OTHER slicer-bearing page | |
| reference_pages | Yes | comma-separated REFERENCE pages to learn from: ordinals (e.g. '0,1,2,3') and/or page names/displayNames |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description steps up: it discloses median-based inference tolerating noise, never copying pixel-for-pixel, only touching slicers, preserving widths with a shrink condition, offline write-back with DataModel byte-preservation, and the hard requirement that the .pbix must be closed. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense: each sentence covers a distinct aspect (purpose, tolerance, scope, persistence, return). It is well-structured and free of fluff, though slightly verbose given the complexity it handles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 3 parameters and no output schema, the description is remarkably complete. It covers the inference method, edge cases (off-canvas slicers, y drift), constraints (closed file, slicers only), side effects (write-back details), and the exact return shape, leaving little ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all three parameters (100% coverage), and the description adds conceptual value by explaining the learn/apply workflow and the roles of reference_pages and targets. It does not add new syntax details but reinforces the intended meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific two-step verb phrase ('Learn the slicer ROW STRUCTURE... then re-lay the slicers...') that clearly names the resource (.pbix) and the scope (slicers only). The reference/target page distinction uniquely separates it from generic layout tools like tidy_slicer_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the exact scenario: use when you have hand-fixed REFERENCE pages and need to apply their slicer structure to TARGET pages. It does not explicitly compare with sibling tools (e.g., tidy_slicer_layout) or state exclusions, but the context is sufficient for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_columnsA
Power Query Merge Columns: concatenate two or more columns into one new column with a separator. Appends Table.CombineColumns (+ Combiner.CombineTextByDelimiter) to the table's M query. columns is comma-separated (the source columns are consumed).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to merge, comma-separated (at least two) | |
| separator | Yes | the separator placed between values, e.g. " " or ", " | |
| sessionId | Yes | ||
| newColumnName | Yes | the new combined column name | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits: it warns that 'the source columns are consumed' and that it 'Appends Table.CombineColumns ... to the table's M query.' These are meaningful side effects, especially since no annotations are provided. However, it does not mention reversibility, failure modes, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that are front-loaded with the primary purpose. The second sentence adds implementation and side-effect details without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, the description covers the core operation and a key side effect, but it omits details about return values, prerequisites, and the exact meaning of the 'table' parameter. It is adequate for simple use but not thoroughly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds one key detail for the 'columns' parameter (source columns are consumed), but repeats the comma-separated property already in the schema. It does not clarify the 'sessionId' or 'table' parameters, which lack schema descriptions. With 67% schema coverage, the description provides marginal additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'concatenate two or more columns into one new column with a separator.' It is specific about the resource (columns) and the verb (concatenate/merge), and it distinguishes from sibling tools like merge_queries by focusing on columns rather than queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to merge columns in Power Query) but does not explicitly state usage conditions or alternatives. It lacks guidance on when not to use it or how it compares to similar tools like concatenate_with_group_by.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_queriesA
Power Query Merge: join another query into this table on matching key columns, then optionally expand chosen columns. Appends Table.NestedJoin (+ Table.ExpandTableColumn) to the table's M query. leftKeys/rightKeys are comma-separated and must be equal length. joinKind = Inner | LeftOuter | RightOuter | FullOuter | LeftAnti | RightAnti.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| joinKind | No | Inner | LeftOuter | RightOuter | FullOuter | LeftAnti | RightAnti (default Inner) | Inner |
| leftKeys | Yes | this table's key columns, comma-separated | |
| rightKeys | Yes | the right table's key columns, comma-separated (same count as leftKeys) | |
| sessionId | Yes | ||
| rightTable | Yes | the query/table to merge in (the right side) | |
| expandColumns | No | columns from the right table to expand, comma-separated (omit to leave the merge column nested) | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It states that the tool 'Appends Table.NestedJoin (+ Table.ExpandTableColumn) to the table's M query,' revealing the mutating side effect. It also details constraints like 'leftKeys/rightKeys are comma-separated and must be equal length' and enumerates joinKind options, providing valuable behavioral context beyond a mere 'merge' label.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. The first sentence states the purpose, the second reveals the implementation, and the third covers key constraints. It is well-structured and front-loaded, making it easy for an agent to quickly grasp the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, no output schema), the description provides enough context to invoke it correctly: it explains the merge operation, the parameters' roles (via schema), and the side effect on the M query. It does not describe return values, but for an in-place table modification tool this is not essential. Minor gaps like clarifying that 'table' refers to a query name are acceptable given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (6 of 8 properties documented), so the baseline is 3. The description adds the equal-length constraint for leftKeys/rightKeys and lists valid joinKind values, but these are already present in the schema (rightKeys says 'same count as leftKeys', joinKind describes the enum). The description does not add significant new meaning beyond the schema, though it does clarify the overall merge and expansion flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'join another query into this table on matching key columns, then optionally expand chosen columns.' This is a specific verb+resource description, distinguishing it from sibling tools like append_queries (which stacks rows) and merge_columns (which concatenates columns). It also names the underlying Power Query operations, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for exact-match table joins via key columns, but it does not explicitly contrast with alternatives such as fuzzy_merge or append_queries. It provides an implied use case but no explicit 'use this when...' or 'instead of...' guidance, so it meets the 'implied usage' level rather than giving clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_healthA
Model-health report: object counts (tables/columns/measures/relationships) plus VertiPaq per-column storage (size + cardinality) read from the storage DMVs through the model connection - surfaces the largest columns so you can find bloat / unused high-cardinality columns. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It explicitly states 'Read-only' and explains the data source (storage DMVs via the model connection), which are key behavioral traits. It does not mention potential performance impacts of querying DMVs or permission requirements, but for a read-only report this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence followed by 'Read-only.' It front-loads the purpose ('Model-health report'), specifies the data items (object counts, VertiPaq storage, size, cardinality), and ends with a clear use case. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers what the report contains, its data source, and its intended use. It does not explicitly state prerequisites like an active model connection, but 'through the model connection' implies it. This is sufficient for an agent to understand when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter sessionId is not described in the schema or in the description, and schema description coverage is 0%. The description does not compensate by explaining what sessionId refers to, leaving the agent to infer its meaning from context and sibling tools. Since the parameter name is self-explanatory in this domain, a score of 2 is given rather than 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool produces a model-health report covering object counts and VertiPaq per-column storage, with a specific purpose of surfacing large/high-cardinality columns for bloat analysis. It distinguishes itself from sibling tools like get_model_summary or column_statistics by emphasizing DMV-sourced storage metrics and the bloat-finding use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for diagnosing model bloat and unused high-cardinality columns, and notes it reads from storage DMVs through the model connection. It does not explicitly compare to alternatives or state when not to use it, but the context is clear enough for an agent to select it over similar read-only diagnostic tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_report_usageA
CROSS-LAYER usage analysis: join the live semantic model (sessionId) with the report (reportSource = a reportSessionId from open_report, a pbirSessionId from read_pbir, or a path to a PBIR .pbix/PBIP folder) and classify EVERY model field three ways. DIRECT = bound in the report - a visual projection, filter, slicer, tooltip, sparkline, sort, or a conditional-formatting/chrome binding (colour measures, icon rules, image URLs, dynamic titles - the bindings naive scanners miss). INDIRECT = reached via a direct measure's DAX lineage, a relationship path between in-play tables, a sort-by column, or a model-internal reference. UNUSED = neither - the safe-to-remove shortlist that find_unused (model-only) cannot produce. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | live model sessionId (connect_model) | |
| reportSource | Yes | a reportSessionId, a pbirSessionId, or a PBIR .pbix / PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It explicitly declares 'Read-only' and details the classification logic, including the three categories and the types of bindings it detects. This adds significant transparency beyond the basic read-only hint, though it omits details like error handling or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, front-loading the core purpose and then breaking down the classification. Every sentence provides useful detail, though it could be slightly more concise by trimming the rhetorical phrase 'the bindings naive scanners miss' without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description fully explains what the tool does, the inputs required, the classification categories, and its distinction from a sibling tool. It gives the agent everything it needs to understand the tool's behavior and output expectations, including the read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. The description adds meaning by explaining how reportSource is a join key ('a reportSessionId from open_report, a pbirSessionId from read_pbir, or a path to a PBIR .pbix/PBIP folder') and clarifies the relationship between sessionId and reportSource. This goes beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'CROSS-LAYER usage analysis' that joins a model with a report and classifies every field as DIRECT, INDIRECT, or UNUSED. It differentiates from siblings by emphasizing it can produce the UNUSED shortlist that 'find_unused (model-only) cannot produce'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: for cross-layer analysis requiring the join of a live model and a report. It explicitly references the alternative find_unused and notes this tool's advantage, providing clear context. It doesn't state when not to use it, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_themeA
Tweak the report's current custom theme in place: change the palette (primaryColor or colors list), background/foreground, or the card defaults (cornerRadius/shadow/font). Run generate_theme or apply_report_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | explicit palette as comma-separated hex | |
| shadow | No | drop shadow on/off | |
| background | No | background hex | |
| fontFamily | No | title font family | |
| foreground | No | foreground hex | |
| cornerRadius | No | card corner radius px | |
| primaryColor | No | new primary colour hex (re-derives palette) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool modifies an existing theme 'in place' and lists the mutable properties. However, it does not mention potential side effects, whether changes affect only specified properties, or persistence behavior, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and including a necessary prerequisite. Every word earns its place; there is no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description provides essential context: what the tool does, the prerequisite, and a high-level grouping of parameters. It omits details like return values or error behavior, but these may be less critical given the schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the baseline is 3. The description adds meaning by grouping parameters semantically: 'palette (primaryColor or colors list)', 'background/foreground', and 'card defaults (cornerRadius/shadow/font)'. This helps the agent understand how parameters relate beyond individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Tweak' and clearly identifies the resource ('the report's current custom theme'). It lists specific editable aspects (palette, background/foreground, card defaults), which distinguishes it from sibling tools like generate_theme or apply_report_theme by emphasizing 'in place' modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a prerequisite: 'Run generate_theme or apply_report_theme first.' This provides clear context for when to use the tool. However, it does not explicitly mention when not to use it or name alternative tools, though the prerequisite implies a distinction from theme creation/application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_columnB
Power Query Move Column: reposition a column. Appends Table.ReorderColumns with the computed order to the table's M query. position = start | end | before | after. For before/after, refColumn is required.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column to move | |
| position | Yes | start | end | before | after | |
| refColumn | No | the reference column (required for before/after) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it appends Table.ReorderColumns to the table's M query, which reveals implementation behavior. However, with no annotations, it doesn't disclose side effects like session state changes, reversibility, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short clauses, front-loaded with purpose. 'Power Query Move Column' is a label, but the rest is direct. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and key constraint, but misses usage guidance, return behavior, and session/partition semantics. For a tool with 6 params and no output schema, this is somewhat sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes position and refColumn; the description repeats these. It doesn't explain table or sessionId, though those may be common. Adds no significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it repositions a column in Power Query and mentions the underlying Table.ReorderColumns operation. It doesn't explicitly differentiate from sibling tool 'reorder_columns', but the specific positional parameters make its purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus reorder_columns or other column manipulation tools. The only guideline is a parameter constraint (refColumn required for before/after), which is about parameter usage, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_measureA
Move a measure to another table (its home table changes; DAX references to it are unaffected because measures are referenced as [Name]). KPI, format string, display folder, description, annotations, lineage tag and culture translations all travel with it (a deep clone is re-homed and translations are re-pointed - TOM forbids re-attaching a removed object).
| Name | Required | Description | Default |
|---|---|---|---|
| measure | Yes | the measure to move (searched across all tables) | |
| sessionId | Yes | ||
| targetTable | Yes | the destination table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: DAX references remain unaffected, all associated attributes travel, and it explains the deep clone mechanism and TOM constraint. This goes beyond a simple operation description and provides critical implementation details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and packs significant behavioral context into two sentences. The second sentence is a dense enumeration but still earns its place. Slightly technical, but no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a move operation with no output schema, the description covers the operation's effect on references and attributes, and notes the TOM constraint. It lacks explicit error conditions or prerequisites, but given the tool's simplicity, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add parameter-level detail beyond the schema. The schema already describes 'measure' and 'targetTable', but 'sessionId' is undefined and the description offers no guidance on parameter values, formats, or relationships. With 67% schema coverage, the description should compensate, but it doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation ('Move a measure to another table'), specifies the resource (measure) and the action (move), and distinguishes it from siblings like update_measure or delete_measure by focusing on re-homing and preserving DAX references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (reorganizing measures across tables) and explains the impact on DAX references, but it does not explicitly state alternatives or when not to use it. The 'when' is clear, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_visualB
Move an existing visual to new x/y (and optional z order).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| z | No | ||
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose any behavioral nuances. It does not explain whether x/y are absolute coordinates or offsets, what units are used, the meaning of null values, or whether moving the visual affects layout or other elements. With zero annotation coverage, the description fails to carry the burden of behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that immediately states the verb ('Move') and target ('existing visual'), followed by the key parameters. There is no redundancy, fluff, or unnecessary detail, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, no annotations, and no output schema. The description only covers the core action and names x/y/z, but omits critical details like coordinate system, units, null semantics, prerequisites, and relationships to similar tools. This is insufficient for an agent to invoke the tool correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly names x, y, and z order, which maps directly to those parameters and adds meaning beyond the bare schema. However, it does not explain the coordinate system, units, or behavior when values are null. The required identifiers (reportSessionId, pageName, visualName) are not elaborated, though their names are somewhat self-explanatory. Given 0% schema description coverage, the description provides only minimal additional insight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Move'), the resource ('an existing visual'), and the specific changes ('new x/y' and optional 'z order'). It is specific enough to distinguish from siblings like resize_visual or align_visuals, and the mention of x/y plus z order adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as set_visual_position or set_visual_z_order. It only states what the tool does, without any context or exclusions, so an agent has no basis for selecting it over similar positioning tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_desktopA
UNSAFE-FOR-PIPELINE (interactive attach only): launch Power BI Desktop on a .pbix/.pbip (standard MSI install, the WindowsApps Store layout or the Store execution alias; spawn is console-window-free - Desktop shows its own window) and wait until its Desktop Bridge answers or waitForBridgeSec lapses. Returns pid + bridge availability + manifest; no bridge by the deadline degrades to a clear entry (the Desktop itself may still be healthy). Unattended pipelines must keep using their own queue-managed launch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | absolute path to the .pbix or .pbip to open | |
| exePath | No | explicit PBIDesktop.exe path; omit to probe the standard install + Store layouts | |
| waitForBridgeSec | No | how long to wait for the bridge pipe to answer, in seconds (default 60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the blocking behavior ('wait until its Desktop Bridge answers or waitForBridgeSec lapses'), the console-window-free spawn, the return contract ('pid + bridge availability + manifest'), and degradation on timeout ('the Desktop itself may still be healthy'). This is rich safety-conscious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the critical 'UNSAFE-FOR-PIPELINE' warning. It packs a lot of information into one long sentence with semicolons and dashes, which is efficient but slightly run-on. It could be split into two sentences for readability, but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is remarkably complete: it covers the launch mechanism, install variants, window behavior, timeout handling, return values, and explicitly states what happens when the bridge isn't available. It also provides safety context for pipelines. There are no significant gaps for an interactive attach tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, giving a baseline of 3. The description adds value by explaining the exePath probing behavior ('standard MSI install, the WindowsApps Store layout or the Store execution alias') and clarifies waitForBridgeSec's deadline semantics ('no bridge by the deadline degrades to a clear entry'). This goes beyond the schema's simple type/default descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'launch[es] Power BI Desktop on a .pbix/.pbip' and waits for the Desktop Bridge. It uses a specific verb ('launch') with a specific resource type, and the 'UNSAFE-FOR-PIPELINE' marker and mention of unattended pipelines distinguish it from sibling tools like bridge_reload or bridge_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns 'UNSAFE-FOR-PIPELINE (interactive attach only)', telling agents when NOT to use it, and provides an alternative: 'Unattended pipelines must keep using their own queue-managed launch.' This is clear when-to-use/avoid guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_reportA
Open a .pbix's report for editing (pages/visuals). The .pbix must be CLOSED in Power BI Desktop. Returns a reportSessionId.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | absolute path to the .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It mentions the precondition (file must be closed) and return value (reportSessionId), but does not disclose consequences of opening an already-open file, permissions, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action, and every sentence provides value (action and condition/return).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description covers the core action, a key precondition, and the return value. It could be more complete by specifying error behavior, but it is sufficient for a simple open operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with a clear description of pbixPath as an absolute path. The description adds the meaningful constraint that the .pbix must be closed, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Open' and clearly identifies the resource as a .pbix's report for editing pages/visuals. This distinguishes it from sibling tools like open_desktop or open_template_model, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a necessary condition: the .pbix must be closed in Power BI Desktop. It also implies usage for editing pages/visuals, but it does not explicitly mention alternatives or 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.
open_template_modelA
Read the model of a closed .pbit template's DataModelSchema on disk, with no Power BI Desktop and no engine: returns each table with its columns (name + data type + key properties) and measures (name + DAX expression + display folder), plus the relationships (from/to). A .pbit that has no DataModelSchema part (a live-connection or PBIR-only template) comes back ok:false with a clear note.
| Name | Required | Description | Default |
|---|---|---|---|
| pbitPath | Yes | path to the closed .pbit template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses the input requirement (closed .pbit), the output content (tables, columns, measures, relationships), and the error/edge-case behavior (ok:false with a clear note for missing DataModelSchema). It does not mention side effects or resource use, but these are minimal for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each with a distinct purpose: the first conveys the core function and output, the second handles an edge case. It is front-loaded and free of unnecessary filler, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description fully explains the return values and error behavior. It is complete enough for an agent to know what to expect and how to interpret the result, including the unusual ok:false case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes pbitPath with 100% coverage, and the description adds only context like 'on disk' and 'closed' without specifying path syntax or formats. This is baseline-appropriate given the schema clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the DataModelSchema of a closed .pbit template from disk, returning tables with columns (name, data type, key properties), measures (name, DAX expression, display folder), and relationships. The verb 'Read' plus the specific resource identifies the operation distinctly from siblings that open, edit, or write Power BI files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this for read-only access to a closed .pbit template's model without requiring Power BI Desktop or an engine. It also gives an explicit exclusion by noting that .pbit files without a DataModelSchema (live-connection or PBIR-only) will return ok:false, signaling not to use this tool for such files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paginated_rest_sourceA
Generate a paginated REST source as a new query: a List.Generate page loop that accumulates pages then Table.Combine. mode = offset (uses pageParam+sizeParam, stops on an empty page) or cursor (reads the next token from nextField, stops when null). The base URL stays STATIC and the page key folds through Web.Contents [Query=...]; each page is List.Buffer-ed. dataPath is the JSON field holding the records array (e.g. "value" or "data"; empty = the body IS the array). Refresh afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | offset | cursor | offset |
| name | Yes | ||
| baseUrl | Yes | the static base URL | |
| dataPath | No | JSON field holding the records array, e.g. value or data (empty = body is the array) | value |
| pageSize | No | page size (offset mode, default 100) | |
| nextField | No | JSON field holding the next cursor/token (REQUIRED for cursor mode) | |
| pageParam | No | offset/page/cursor query parameter name (default offset for offset mode, cursor for cursor mode) | |
| sessionId | Yes | ||
| sizeParam | No | page-size query parameter name (offset mode, default limit) | |
| recordFieldsExpr | No | optional raw M for Table.FromRecords' second argument (column list/type), e.g. type table [Id=Int64.Type] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the List.Generate loop, page accumulation, Table.Combine, static base URL, List.Buffer per page, stop conditions, and the 'Refresh afterwards' step. Missing details about error handling, permissions, or side effects beyond creating a new query prevent a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences that front-load the purpose and then efficiently explain modes, implementation, and dataPath. Every clause serves a functional role without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 10-parameter tool with no output schema or annotations, the description provides essential algorithm and mode details. It relies on the schema for parameter definitions but could be more complete regarding error conditions, return values, or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers most parameters (80%), the description adds semantic meaning by explaining how mode controls pageParam and nextField interaction, and clarifies dataPath semantics. It does not explain sessionId or recordFieldsExpr, but the schema partially covers those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a paginated REST source as a new query' with a specific verb and resource. It distinguishes itself from sibling tools by detailing pagination modes (offset/cursor) and implementation specifics like List.Generate and Table.Combine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two pagination modes and their stopping conditions, but does not explicitly compare with alternative tools or state prerequisites. Usage context is implied rather than directly stated, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pbix_diffA
Semantic diff between two .pbix files or two unpacked source trees (from unpack_to_source): files added/removed/changed, TMDL tables + measures (trees only), report pages + visual counts, and Power Query M queries (.pbix only). The 'semantic git diff' for client models - read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| pathA | Yes | side A: a .pbix file or an unpacked source tree folder | |
| pathB | Yes | side B: a .pbix file or an unpacked source tree folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It explicitly states 'read-only,' which is a key safety trait, and lists the categories of differences it reports, including per-input-type exclusions. It does not disclose output structure or error behavior, but for a read-only diff tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-organized sentence with a leading clause, a list of diff categories, and a concluding metaphor. It is compact and front-loaded with the core purpose. The parentheticals add necessary precision without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description covers the key aspects: inputs, output categories, and per-input limitations. It lacks explicit guidance on mixed input types and return format, but these are not critical for a read-only diff utility. Overall, it is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for both pathA and pathB. The description adds semantic value by clarifying that both paths must be the same kind (both .pbix or both trees) and that trees refer to the output of unpack_to_source, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'semantic diff' between two .pbix files or unpacked source trees, and enumerates exactly what differences are detected (files, TMDL tables+measures, report pages+visual counts, M queries). It distinguishes itself from siblings by framing it as 'The semantic git diff for client models' and emphasizing read-only behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies valid input combinations (both .pbix or both unpacked trees), references the source tree format from unpack_to_source, and notes scope limitations (TMDL only for trees, M queries only for .pbix). It does not explicitly name alternative diff tools but provides adequate context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pbix_doctorA
READ-ONLY 17-point file-level container scan of a CLOSED .pbix: zip part inventory vs expected parts, Version/DataModel/DataMashup presence and sizes, stale SecurityBindings and DataMashup PermissionBindings, sensitivity-label parts, zero-byte / truncated / duplicate parts, and whether the report part is legacy or PBIR. Never writes.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | absolute path to the .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states READ-ONLY and 'Never writes,' which are critical behavioral traits. It also clarifies that the tool works on a closed file, not an open model. It does not mention error behavior or output format, but the key safety and execution-context disclosures are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with a colon-separated list of checks. It front-loads the key facts (READ-ONLY, 17-point, CLOSED .pbix) and then enumerates specific checks. Every word earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should ideally mention what the tool returns. It does not explicitly state the result format or return value. However, it thoroughly describes the input constraints and the exact checks performed. For a diagnostic tool, the output is implied, but a brief note on the return value would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 'absolute path to the .pbix' already defined. The tool description reinforces that the path must point to a closed .pbix and that the operation is file-level, adding marginal meaning. Since the schema fully covers the single parameter, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a READ-ONLY 17-point file-level container scan of a closed .pbix, enumerating specific checks like zip part inventory, Version/DataModel/DataMashup presence and sizes, stale SecurityBindings, and legacy/PBIR detection. This distinguishes it from siblings like pbix_diff (comparison) or get_datamashup_info (focused on data mashup), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear that the tool operates on a CLOSED .pbix file, implying it should be used for file-level diagnostics rather than analysis of open models. It does not explicitly name when not to use it or mention alternatives, which prevents a perfect score, but the context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persist_model_editA
THE single entry to fix a measure / relationship / calculated column in a model AND persist it to the .pbix. Picks the best route for target and reports what it did plus what is / isn't preserved. target = an open model sessionId (from connect_model) -> live edit + scripted Power BI Desktop File>Save; DATA PRESERVED for ANY model (needs the .pbix open in Desktop). target = a cold .pbix PATH -> offline engine edit (ImageLoad->edit->ImageSave->repack); DATA PRESERVED, no Desktop, but ONLY for M-free / engine-native models. If the .pbix imports via Power Query (M) - a normal data report - the offline route cannot host it and the result explains to open it in Desktop and pass the sessionId instead. edits = a JSON array of edit objects (see the tool-type summary). A .bak backup is taken and the write is atomic.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | JSON array of edit objects, each with an "op" (add_measure, add_relationship, add_calculated_column, ...) | |
| target | Yes | an open model sessionId (data-preserving via Desktop) OR a cold .pbix path (offline, M-free only) | |
| pbixPath | No | the .pbix path to confirm the save landed (only used for the live/Desktop route; optional) | |
| saveRetries | No | scripted File>Save attempts before giving up (live route; default 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: it mentions taking a .bak backup, atomic writes, reporting what is/isn't preserved, and the specific mechanics of each route (ImageLoad->edit->ImageSave->repack). It also states the limitation for Power Query (M) models and how the tool will guide the user, which goes beyond basic safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with clear topic segmentation: purpose, target routes, data preservation, edit format, and safety guarantees. Every sentence provides necessary information without fluff. It's front-loaded and well-organized, making it easy to scan despite the technical complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description covers all essential contexts: what edits are supported, how the two routes behave, data preservation conditions, limitations, and safety features (backup, atomic write). It even explains error behavior for M models. It leaves little ambiguity for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context by explaining that 'target' can be a sessionId or a path, how the route is chosen based on target, and that 'edits' is a JSON array with ops (though it defers to the tool-type summary for details). It also clarifies pbixPath's optional nature and saveRetries' purpose, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'THE single entry to fix a measure / relationship / calculated column in a model AND persist it to the .pbix', which is a specific verb+resource combination that clearly distinguishes it from siblings like add_measure or persist_open_model. It also explains the two routes (live session vs offline path), reinforcing its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use the live route vs the offline route based on the target type and model characteristics ('DATA PRESERVED for ANY model' vs 'ONLY for M-free / engine-native models'). It also explains the fallback for M models: 'the result explains to open it in Desktop and pass the sessionId instead', which is clear guidance on alternatives and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persist_open_modelA
DATA-PRESERVING persist for a report OPEN in Power BI Desktop (the loop for a loaded report like a live dashboard): apply the model edits to the connected LIVE model (SaveChanges + a Calculate when a calc column/relationship changed), then drive Desktop's own File>Save (scripted Ctrl+S, located by the session's engine port) so Desktop writes its full model+DATA image back to the .pbix. Works for ANY model including Power Query (M) import models. PREREQUISITE (manual): the .pbix must be OPEN in Power BI Desktop and connected via connect_model - Desktop is the only host that can persist a data-loaded, M-based model to disk. Pass pbixPath so the tool can confirm the save landed.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | JSON array of edit objects, each with an "op" | |
| pbixPath | No | the open report's .pbix path (to confirm the save landed; optional) | |
| sessionId | Yes | sessionId from connect_model (a LOCAL Desktop model) | |
| saveRetries | No | scripted File>Save attempts before giving up (default 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it reveals the exact internal steps: SaveChanges, a conditional Calculate, scripted Ctrl+S via the engine port, and the full model+DATA image write back. It also discloses that it works for any model including M import models. It stops short of discussing failure modes or overwrite risks explicitly, but the write-back behavior is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated; it front-loads the action, clarifies the data-preserving scope, and includes a clearly marked prerequisite. The parentheticals add valuable detail without straying, though it could be slightly shorter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no output schema and no annotations, this description is fairly complete: it explains prerequisites, the live-model interaction, the save mechanism, and one parameter's purpose. It lacks explicit return-value or error-handling information, but the saveRetries parameter hints at failure handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful context for pbixPath (to confirm the save landed) and ties sessionId to connect_model, but doesn't elaborate on edits beyond 'JSON array of edit objects each with an op' already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: applying model edits to the connected live model and then driving Desktop's File>Save to persist the full model+DATA image back to the .pbix. It distinguishes itself from sibling persist_model_edit and save_open_pbix by emphasizing 'DATA-PRESERVING' and the requirement of an open Desktop report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use context ('for a report OPEN in Power BI Desktop... like a live dashboard') and a hard prerequisite: the .pbix must be open and connected via connect_model. It also notes Desktop is the only host that can persist a data-loaded, M-based model, effectively warning not to use it outside Desktop. However, it doesn't name specific alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pivot_columnA
Power Query Pivot Column: turn the distinct values of an attribute column into new columns, aggregating a value column. Appends Table.Pivot to the table's M query. aggregation = Sum | Count | Average | Min | Max (default Sum).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| aggregation | No | Sum | Count | Average | Min | Max (default Sum) | |
| valueColumn | Yes | the column whose values fill the pivoted cells | |
| partitionName | No | partition name (optional; defaults to the first partition) | |
| attributeColumn | Yes | the column whose distinct values become new column headers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that Table.Pivot is appended to the M query and lists aggregation options, which is useful. However, it does not mention side effects such as whether the attribute column is removed, the impact on existing columns, or any reversibility concerns. This is a meaningful gap for a mutating transformation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: one sentence that clearly states the action and a short list of aggregation options. Every element earns its place, and the key information is front-loaded with the phrase 'Power Query Pivot Column' immediately signaling the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core pivot action, the M query modification, and the aggregation parameter thoroughly. It omits details about partitionName and sessionId, which are present in the schema, but these are optional or context-level. Overall, it provides enough information for an agent to understand the main behavior and select the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, but the description adds significant meaning beyond it. It clarifies the roles of attributeColumn and valueColumn by explaining the pivoting mechanism, and it explicitly defines the aggregation parameter with allowed values and default. The optional partitionName is not explained, but the key parameters are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('turn... into new columns') and the resource (attribute column), which is a specific pivot operation. It distinguishes from sibling tools like unpivot_columns and pivot_text_values by explaining the aggregation of a value column and the use of Table.Pivot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Power Query pivot transformations, but it does not explicitly state when to use this tool versus alternatives (e.g., unpivot_columns, pivot_text_values) or provide exclusions. It provides context ('Power Query Pivot Column', 'Appends Table.Pivot') but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pivot_text_valuesA
Pivot TEXT values: Table.Pivot with a Text.Combine aggregation (the default pivot errors on text values). Colliding values in a cell are joined with delimiter (default ", "). Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| delimiter | No | delimiter joining colliding values (default ", ") | |
| sessionId | Yes | ||
| valueColumn | Yes | the text column whose values fill the pivoted cells | |
| partitionName | No | partition name (optional; defaults to the first partition) | |
| attributeColumn | Yes | the column whose distinct values become new columns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having no annotations, the description transparently discloses key behavioral traits: the use of Text.Combine aggregation, joining colliding values with a delimiter (default ", "), and appending a step to the table's M query. This goes beyond basic operation and helps the agent anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences), front-loaded with the core purpose, and every sentence adds meaningful information without redundancy. It strikes an ideal balance between brevity and informativeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no annotations, and no output schema, the description adequately covers the key behavioral aspects and side effects. It could mention prerequisites like session or table context, but the current level of detail is sufficient for an agent to invoke the tool correctly in typical scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 67% of parameters with descriptions. The description adds semantic value by clarifying the aggregation mechanism (Text.Combine), the delimiter default, and the behavior for colliding values, which enriches understanding of the delimiter and valueColumn parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pivots TEXT values using Table.Pivot with a Text.Combine aggregation, explicitly distinguishing it from the default pivot which errors on text values. The verb 'Pivot' and resource 'TEXT values' are specific, and the mention of the default pivot error sets it apart from sibling tools like pivot_column.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when pivoting text values that would otherwise cause the default pivot to error. It doesn't explicitly name alternative tools or exclusions, but the rationale is clear enough for an agent to infer suitability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_tableA
Return the first N rows of a table (TOPN) to inspect the actual data after a refresh.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool reads data ('Return', 'inspect') and uses a TOPN approach, which implies a read-only operation with no side effects. However, it does not elaborate on limitations, such as maximum N or behavior if the table is empty, nor does it mention whether sessionId must be valid. The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core action. Every word contributes value: 'Return', 'first N rows', 'TOPN', 'inspect actual data', 'after a refresh.' No unnecessary information or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema and no annotations, the description covers the essential purpose and usage. It explains why the tool is used (inspect after refresh) and what it returns (first N rows). It does not address potential error conditions or the role of sessionId, but given the simplicity of the operation, this is a minor gap. The description is sufficient for an agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It clarifies the 'rows' parameter as 'first N rows' and implies 'table' is the target table. However, the 'sessionId' parameter is not explained, and the description does not map parameter names to their semantics explicitly. This partial compensation is helpful but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Return the first N rows of a table (TOPN)' with a specific purpose 'to inspect the actual data after a refresh.' This is a precise verb+resource structure that distinguishes it from other table-related tools like read_table_offline or column_statistics, which serve different inspection needs. The inclusion of 'TOPN' and 'after a refresh' adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by specifying the intended scenario: inspecting actual data after a refresh. This implies when the tool should be used. However, it does not mention alternatives or conditions when it should not be used, so it falls short of an explicit exclusion. Still, the stated purpose gives practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_headersB
Power Query Use First Row as Headers: promote the first data row to column names. Appends Table.PromoteHeaders to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose that Table.PromoteHeaders is appended to the table's M query, which is a useful behavioral detail. However, it does not mention whether the first row is removed, whether existing headers are replaced, or any side effects on the data or query, leaving significant ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that immediately state the purpose and the implementation detail. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the description covers the core transformation. However, without annotations or an output schema, additional context about return values, side effects, or prerequisites would be expected. The description is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only partitionName is described). The description does not explain the required parameters 'sessionId' or 'table' beyond the vague mention of 'the table's M query'. It fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: promote the first data row to column names, and names the specific M function appended (Table.PromoteHeaders). This is a specific verb+resource combination that inherently differentiates from the sibling tool demote_headers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies its use for 'Use First Row as Headers' scenarios but does not mention exclusions, prerequisites, or compare to demote_headers or other transformation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_to_serviceA
Publish a built artifact to the Power BI Service: a .pbix path goes through the Import API (nameConflict CreateOrOverwrite by default); a PBIP folder (the tree generate_pbip/scaffold emit) is published at definition level via the Fabric items API - SemanticModel first, then Report, each created or updated in place. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | path to a .pbix file OR a PBIP folder (the project root, or its <name>.SemanticModel) | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | target workspace (group) id | |
| nameConflict | No | pbix import conflict policy: CreateOrOverwrite (default), Ignore, Abort or Overwrite | CreateOrOverwrite |
| datasetDisplayName | No | dataset/item display name; defaults from the file/folder name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and excels: it discloses the dual-mode behavior, the Import API vs Fabric items API routing, the 'nameConflict CreateOrOverwrite by default' default, the creation/update-in-place semantics, the AAD token requirement with Power BI scopes, and the security note that the token is never echoed. These are concrete, side-effect-relevant details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences cover purpose, two artifact types, API routing, default conflict policy, ordering, auth, and security. No redundant words, and the information is front-loaded with the primary action and scoped in the first clause. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is thorough for a complex dual-mode publishing tool, covering input types, API paths, ordering, defaults, and auth. It omits return values or error behavior, but given the lack of an output schema and the emphasis on the publish action, the absence is not a major gap. The description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with already descriptive parameter text. The main description adds some context (notably the API routing and 'never echoed' for accessToken), but most parameters (workspaceId, datasetDisplayName, nameConflict) are already well-defined in the schema. The added value is marginal, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Publish a built artifact to the Power BI Service', which names the specific action and target resource. It further differentiates between .pbix and PBIP folder paths, clarifying two distinct publishing modes and the APIs used (Import API vs Fabric items API), which sets it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when the tool applies: for built artifacts, either a .pbix file or a PBIP folder from generate_pbip/scaffold. It describes the underlying flow and ordering (SemanticModel first, then Report) and references nameConflict default behavior. However, it does not explicitly call out alternative tools or exclusion cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quality_gateA
PRE-DELIVERY QUALITY GATE: a comprehensive best-practices lint with a pass/review/fail verdict - unformatted measures/columns, tables out of relationships, visible key columns, missing date table, auto-date bloat, inactive relationships, and live relationship-integrity (orphan keys via DAX). Run before shipping a report so nothing goes out broken or untidy.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a rich set of checks and the verdict outcome, strongly implying a non-destructive lint/analysis. It does not explicitly state whether any modifications occur or elaborate on the verdict interpretation, but its 'lint' wording effectively conveys the read-only analysis intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with a dash-separated list. It is informative and avoids filler, though the long list could be better formatted as bullet points for scannability. Every element adds value, so it remains concise in intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the verdict type ('pass/review/fail') and enumerates the checks performed, which is largely sufficient for a lint-like tool. It lacks information on prerequisites, exact sessionId usage, or detailed output interpretation, but these are minor given the simple parameter set and the rich description of the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains only a required sessionId string, but the description provides zero explanation of this parameter. Since schema coverage is 0%, the description needed to compensate but did not. The parameter name is somewhat self-explanatory, but the description adds no semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'PRE-DELIVERY QUALITY GATE' performing a 'comprehensive best-practices lint' and returning a 'pass/review/fail verdict'. It lists specific checks (e.g., unformatted measures/columns, inactive relationships) that distinguish it from more narrowly focused sibling tools like dax_lint or audit_star_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Run before shipping a report so nothing goes out broken or untidy,' which gives clear contextual guidance. However, it does not discuss alternatives or cases where another tool might be more appropriate, such as run_bpa or model_health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pbirA
Open an enhanced (PBIR) report from a .pbix or a PBIP folder, parse the whole definition tree into memory, and return a structured summary (pages + visual counts, bookmarks, dataset reference). Returns a pbirSessionId reused by the other pbir tools. The source must be CLOSED in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | absolute path to a PBIR .pbix or a PBIP project folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it parses the entire definition tree into memory (resource implication), returns a summary and session ID, and requires the source to be closed. This is enough to set expectations, though it does not describe error behavior or session cleanup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no fluff. Every clause adds important context: supported sources, behavior, return value, integration, and the closed-source requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description compensates by explicitly stating the return contents (summary, session ID) and the tool's role in the pbir workflow. It covers the key context needed to invoke and use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter 'path' as an absolute path, and the description reinforces the accepted formats (.pbix or PBIP folder). With 100% schema coverage, the baseline is 3; the description adds marginal value by confirming the supported source types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Open' with a specific resource (PBIR report from .pbix or PBIP folder) and its outcome: parse the definition tree and return a structured summary. It distinguishes itself from sibling tools by highlighting the returned pbirSessionId and its role as a prerequisite for other pbir tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete prerequisite ('The source must be CLOSED in Power BI Desktop') and explains its integration with other pbir tools ('reused by the other pbir tools'), which implies when to use it. It does not explicitly name alternatives or exclude scenarios, but its role as an entry-point is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_table_offlineA
Read up to topN rows of one table from a CLOSED .pbix (EVALUATE TOPN(topN, 'table')). Briefly opens the file in the local Power BI Desktop (a Desktop window appears), reads the rows, then closes Desktop. Returns columns + rows; when the row cap is hit the result flags truncated:true.
| Name | Required | Description | Default |
|---|---|---|---|
| topN | No | max rows to return (default 1000) | |
| table | Yes | table name to read | |
| pbixPath | Yes | path to the closed .pbix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the key side effect: 'Briefly opens the file in the local Power BI Desktop (a Desktop window appears), reads the rows, then closes Desktop.' It also reports the return behavior with truncated:true. It does not mention error handling or file-lock scenarios, but the essential operational traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action 'Read', and contains no redundant phrases. Every clause adds useful detail—row cap, closed-file requirement, Desktop behavior, return content, and truncation flag.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description adequately covers the return value ('columns + rows' and 'truncated:true') and the operational side effect of opening Desktop. It is concise but complete enough for the agent to invoke correctly. It could mention potential errors or prerequisites, but the core context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that pbixPath must point to a CLOSED .pbix, and by showing how topN and table are used in the EVALUATE TOPN expression. It also explains the truncated flag tied to topN, enriching the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Read up to topN rows of one table from a CLOSED .pbix', providing a specific verb and resource. It clearly distinguishes itself from sibling tools by emphasizing the closed-file requirement and the temporary opening of Power BI Desktop, which makes its purpose uniquely clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the tool is for CLOSED .pbix files and mentions that Desktop briefly opens, giving clear context for when to use it. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_themeA
Read the report's current custom theme: name, palette, structural colours, whether it sets visualStyle defaults, plus the full theme JSON to inspect or re-apply.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It clearly lists the returned components and notes the inclusion of the full theme JSON, effectively communicating what the tool does. It does not explicitly state 'read-only' but the verb 'read' adequately conveys non-mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences that front-load the purpose and then list the detailed contents. Every word is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with a single parameter and no output schema, the description adequately explains what will be returned. It does not elaborate on potential edge cases or return format specifics, but the core information is present and sufficient for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the reportSessionId parameter. While the parameter is self-explanatory in context, the description fails to add any meaning beyond the schema, leaving the parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Read') on a specific resource ('the report's current custom theme') and enumerates the exact contents returned (name, palette, structural colours, visualStyle defaults, full JSON). This distinguishes it from the many set_theme_* siblings which modify theme components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for inspection or to obtain the theme for re-application, giving clear context for when to use it. However, it does not explicitly name alternatives or state when not to use it, though the read-only nature is evident from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recolor_reportA
Find/replace colour literals across ALL visuals and the theme in one call: colorMap = JSON {"#OLD":"#NEW", ...}. Handles both the plain theme spelling (#RRGGBB) and the quoted expr spelling ('#RRGGBB') inside visual objects, preserving each occurrence's form. Returns per-colour replacement counts; run save_report to persist.
| Name | Required | Description | Default |
|---|---|---|---|
| colorMap | Yes | JSON object of oldColour -> newColour hex literals | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: handles two spellings, preserves each occurrence's form, returns per-colour counts, and requires save_report to persist. It does not cover error handling or reversibility, but the provided details exceed minimum transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized—four sentences covering purpose, format, behavior, and persistence. It front-loads the core action and then adds necessary details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers the essential aspects: the colorMap structure, handling of both spellings, return counts, and the need to call save_report. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning for colorMap by specifying the JSON format with examples and noting the two hex literal spellings. reportSessionId remains unexplained, but schema coverage is 50% and the tool description compensates for the critical parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs find/replace of colour literals across ALL visuals and the theme in one call, using a specific verb+resource. It distinguishes from sibling tools like set_theme_data_colors or set_data_color by emphasizing global scope and both theme and visual objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for bulk colour replacement and notes it persists only after save_report, but it does not explicitly name alternatives or when-not-to-use scenarios. The phrase 'in one call' conveys when it's appropriate relative to per-visual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_datasetA
Trigger a refresh of a published dataset (POST .../refreshes, notifyOption NoNotification). Returns the requestId to correlate in get_refresh_status. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | refresh type: full (default) or automatic | full |
| datasetId | Yes | dataset id | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | workspace (group) id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the action (refresh), the API call (POST .../refreshes, NoNotification), the return value (requestId for correlation), and the auth requirement (AAD token via accessToken or DAXOPS_PBI_TOKEN, never echoed). This is substantial, though it doesn't note potential side effects like data unavailability or long-running behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that cover purpose, API detail, return value, and auth. Every clause adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description is complete: it explains the operation, the endpoint, notification behavior, auth context, and return value. It also points to the related status tool. The sibling set includes similar refresh tools, and this description sufficiently distinguishes the dataset-level refresh.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning about the accessToken parameter ('or DAXOPS_PBI_TOKEN; never echoed'), which is security-relevant and not in the schema. It also clarifies that the tool returns a requestId, helping understand the relationship between parameters and result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Trigger a refresh of a published dataset' with a specific verb (trigger/refresh) and resource (published dataset). It also mentions the endpoint and notifyOption, and differentiates from sibling tools like refresh_table and refresh_partition by specifying 'published dataset' and correlating to get_refresh_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: to trigger a dataset-level refresh and correlate the resulting requestId with get_refresh_status. It doesn't explicitly exclude table/partition refreshes or name alternatives, but 'published dataset' and the correlation hint provide clear context. It does not mention when NOT to use it, so it falls short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_partitionA
Refresh ONE partition (RefreshType.Full) - cheaper than refresh_table when only one slice changed. Inside an open model transaction the refresh is deferred to commit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the partition to refresh | |
| table | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a valuable behavioral nuance: refresh is deferred to commit inside an open model transaction. However, it omits side effects, permission requirements, and error handling, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The key information is front-loaded: what it does, when to use it, and a unique behavioral caveat. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no annotations and no output schema, the description covers core purpose and a key conditional behavior, but it lacks details on side effects, authorization, and what constitutes a changed slice. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'name' has a description). The description does not explain sessionId or table beyond their field names, and while it clarifies that 'name' is the partition, it provides no additional semantics for the other two parameters. This is inadequate given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Refresh' with a clear resource 'ONE partition' and specifies the refresh type (RefreshType.Full). It also distinguishes itself from refresh_table, making its purpose unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('only one slice changed') and names the alternative (refresh_table), explaining why this tool is preferable ('cheaper'). This meets the highest bar for explicit when/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_tableA
Refresh one table (or the whole model if table omitted). Required after add_table_from_m / set_partition_m for data and columns to appear.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | full data refresh (true) or calculate-only (false) | |
| table | No | table to refresh (omit for whole model) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds useful behavioral context ('Required after... for data and columns to appear') and explains the table vs whole-model scope. However, it doesn't disclose side effects, the meaning of full vs calculate-only, or potential long-running nature, leaving gaps for a refresh operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the core functionality and a key usage context. It is front-loaded with the primary action and scope, and every word earns its place without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple refresh tool with no output schema and no annotations, the description covers the main purpose, scope, and one important prerequisite. It does not explain the 'full' parameter (though the schema does) or return behavior, but the essential information needed to invoke the tool is present. Slightly more context about when to use full versus false would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, covering 'full' and 'table'. The description reinforces the table omission behavior, but adds little beyond the schema. The required sessionId parameter is undocumented but self-explanatory. Given moderate coverage, the description provides only marginal added value, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Refresh') and the resource ('one table or the whole model'), with explicit scope and a prerequisite context. It distinguishes itself from sibling tools by noting it is required after add_table_from_m / set_partition_m, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use context: 'Required after add_table_from_m / set_partition_m for data and columns to appear.' This tells the agent when this tool is necessary, though it does not mention alternatives like refresh_partition or when not to use it. Still, the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_custom_visualA
Register an imported CUSTOM VISUAL into the report so its visualType is usable: adds the guid to layout.config.publicCustomVisuals, and when a .pbiviz path is given, stages the file into resourcePackages. name = the visual's visualType/guid; guid defaults to name.
| Name | Required | Description | Default |
|---|---|---|---|
| guid | No | optional explicit guid (defaults to name) | |
| name | Yes | the custom visual's visualType/guid | |
| path | No | optional absolute path to the .pbiviz file to embed | |
| reportSessionId | Yes |
TDQS
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 discloses the exact mutation (adding to layout.config.publicCustomVisuals) and conditional staging of .pbiviz into resourcePackages. It also clarifies the guid defaulting behavior, providing a clear mental model beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, purpose-first, with no filler. Every clause adds essential information about behavior or parameter meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose, mechanism, and key parameters. It does not mention error cases or repeated registration behavior, but the core outcome is clear. This is adequate for the tool's moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (reportSessionId lacks a description), so the description adds value by clarifying that name is the visualType/guid and guid defaults to name. It also explains the conditional effect of the path parameter. This goes beyond the schema's minimal descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's function with a specific verb ('Register') and resource ('imported CUSTOM VISUAL into the report'). It explains the mechanism (adds guid to layout.config.publicCustomVisuals, stages .pbiviz) and sets it apart from generic visual-adding tools. The scope is explicit: operating on the report's custom visuals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for registering custom visuals that have been imported, but it does not explicitly state when to choose this over siblings like register_org_custom_visual or add_deneb_visual. No exclusions or alternatives are mentioned. The context (report vs org) is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_org_custom_visualA
Register an ORGANIZATION-store custom visual into the report so its visualType is usable: adds the guid to layout.config.organizationCustomVisuals (the tenant's org store, vs the public AppSource store register_custom_visual uses). name = the visual's visualType/guid; guid defaults to name. A .pbiviz path is rarely needed for org visuals but is staged when given.
| Name | Required | Description | Default |
|---|---|---|---|
| guid | No | optional explicit guid (defaults to name) | |
| name | Yes | the custom visual's visualType/guid | |
| path | No | optional absolute path to the .pbiviz file to embed | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the underlying state change (adds to layout.config.organizationCustomVisuals), the default behavior for guid, and the staging behavior for path. It does not mention error cases or permission requirements, but for a registration tool, the disclosed traits are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, followed by concise parameter guidance. No wasted words or redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema or annotations, the description covers the core behavior, differentiates from a key sibling, and explains parameter relationships. It falls short on reportSessionId semantics and does not mention expected return values or failure modes, but the overall picture is solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds semantic clarity beyond the schema: it defines 'name' as the visualType/guid, explains that guid defaults to name, and clarifies the role of the path. However, it omits any explanation of the required reportSessionId parameter, which the schema also leaves undescribed, leaving that parameter semantically unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: registering an organization-store custom visual and making its visualType usable. It specifies the exact mechanism (adds guid to layout.config.organizationCustomVisuals) and contrasts with the sibling register_custom_visual, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly identifies when to use this tool over the alternative: 'vs the public AppSource store register_custom_visual uses.' Also notes that a .pbiviz path is rarely needed for org visuals but is staged when given, providing practical usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_alternate_rowsA
Power Query Remove Alternate Rows: keep the first firstKept rows, then repeatedly take and skip in a pattern. Appends Table.AlternateRows to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| taken | Yes | rows taken (removed) in each cycle | |
| skipped | Yes | rows skipped (kept) in each cycle | |
| firstKept | Yes | rows kept at the start before the pattern begins | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It does add a key detail: 'Appends Table.AlternateRows to the table's M query,' which explains the mutation behavior. However, it does not mention side effects like reversibility, error conditions, or whether the operation is destructive, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's purpose and immediately followed by the behavioral effect. Every word earns its place—no fluff, no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple scope (no output schema, few edge cases), the description sufficiently explains what the tool does and how it works. The algorithm is clearly described, and the schema fills in parameter details. It could be more complete regarding prerequisites or return behavior, but it is above the minimum viable for this type of tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes taken, skipped, firstKept, and partitionName (67% coverage). The description reinforces the schema's parameter meanings by restating the pattern, but it adds little new semantic detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair: 'Remove Alternate Rows' and clearly explains the pattern: 'keep the first firstKept rows, then repeatedly take and skip.' It distinguishes itself from sibling tools like remove_duplicates or skip_rows by naming the exact Power Query function (Table.AlternateRows).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by explaining the alternating row pattern, but it does not explicitly state alternatives or exclusions relative to sibling tools. The usage context is inferable but not directly stated, so it falls into 'implied usage' rather than clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_blank_rowsB
Power Query Remove Blank Rows: drop rows where every field is blank (empty or null). Appends Table.SelectRows with the all-fields-non-blank predicate to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the exact predicate (every field blank) and that it appends a step to the M query, but it omits side effects such as reversibility, permissions, impact on query folding, or how existing steps are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action, and contains no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple transformation, explaining the operation and its implementation. However, the lack of parameter info, no annotations, and no output schema create noticeable gaps, making it not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only partitionName is described), and the tool description does not mention any of the parameters (table, sessionId, partitionName). It fails to compensate for the low schema coverage, leaving required parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'drop rows where every field is blank (empty or null)', providing a specific verb and resource. It also differentiates from sibling tools by specifying the all-fields condition and the Table.SelectRows step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Power Query tables through its title and the phrase 'Appends Table.SelectRows', but it does not explicitly state when to use this tool versus alternatives such as remove_duplicates or filter_rows, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_bottom_rowsA
Power Query Remove Bottom Rows: drop the last N rows. Appends Table.RemoveLastN to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | number of rows to remove from the bottom | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It does disclose that it appends Table.RemoveLastN to the M query, which is a useful implementation detail. However, it does not mention reversibility, error cases, or any broader side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource, and contains no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple transformation tool, the core action and target are described, but there is no output schema and no annotation support. The description does not discuss return values, edge cases, or preconditions, leaving it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description should compensate. It does clarify 'count' as the number of rows to remove and implies 'table' via 'the table's M query', but it leaves sessionId and partitionName without additional explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('drop') and resource ('last N rows'), and further specifies the implementation as appending Table.RemoveLastN to the table's M query. This clearly distinguishes it from sibling tools like remove_alternate_rows or remove_blank_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the core use case clear (removing the last N rows) but does not explicitly contrast it with alternatives such as keep_bottom_rows, remove_alternate_rows, or remove_blank_rows. Usage context is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_columnsB
Power Query Remove Columns: drop columns. Appends Table.RemoveColumns to the table's M query. columns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to remove, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a meaningful behavioral detail: it appends Table.RemoveColumns to the table's M query. However, it does not mention side effects, reversibility, error handling, or permission requirements, and with no annotations, the description carries the full burden but leaves these gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action, but the phrase 'Power Query Remove Columns' is somewhat redundant with the tool name, and the 'columns is comma-separated' repeats schema information. Still, it contains no fluff and is well-structured overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description provides the essential behavior and mechanism, which is adequate for a simple tool. However, it omits usage context, parameter explanations for sessionId and table, and any side-effect or error information, leaving the description only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only 50% parameter description coverage, and the description does not compensate. It restates that 'columns' is comma-separated (already present in the schema) and provides no explanation for sessionId or table, which remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'drop columns' and specifies the underlying M operation (Table.RemoveColumns), making the action unambiguous. It distinguishes itself from sibling operations like renaming or selecting columns by focusing specifically on removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as select_columns or rename_columns. The description only explains what the tool does, not the context or conditions under which it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_duplicatesA
Power Query Remove Duplicates: keep one row per distinct combination. Appends Table.Distinct to the table's M query. Pass columns (comma-separated) to dedupe on those columns only; omit to dedupe whole rows.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | No | columns to dedupe on, comma-separated (omit for whole-row distinct) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds useful behavioral context by stating 'Appends Table.Distinct to the table's M query,' which reveals the underlying transformation. However, it does not disclose potential side effects, reversibility, or whether the operation modifies state in a way that could affect other parts of the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with the primary purpose ('keep one row per distinct combination') followed by essential usage detail. Every sentence contributes meaning, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of this transformation tool, the description covers the core behavior and configuration options. It does not mention return values or error conditions, but with no output schema and standard parameters like sessionId and partitionName, the description is adequate for an agent to use the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'columns' parameter with the same wording ('columns to dedupe on, comma-separated (omit for whole-row distinct)'), so the description adds no new meaning for that parameter. The 'table' and 'sessionId' parameters are not explained in either the schema or the description, and with 50% schema coverage, the description does not compensate for the lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Remove Duplicates: keep one row per distinct combination.' It specifies the resource (table) and the operation (appending Table.Distinct to the M query), making it easy to distinguish from sibling tools like remove_alternate_rows or remove_blank_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Pass columns (comma-separated) to dedupe on those columns only; omit to dedupe whole rows.' It explains the two modes of operation but does not explicitly mention alternatives or when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_errorsA
Power Query Remove Errors: drop rows that carry an error value. Appends Table.RemoveRowsWithErrors to the table's M query. Pass columns (comma-separated) to test only those columns; omit to test the whole row.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | No | columns to test for errors, comma-separated (omit for whole row) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the action (drops rows with error values) and the implementation detail (appends Table.RemoveRowsWithErrors to the M query), which informs the agent about the underlying transformation. It does not discuss edge cases or side effects, but the main 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every sentence serves a distinct function: stating what it does and explaining parameter usage. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple transformation tool with no output schema, the description covers the essential aspects: purpose, implementation, and column behavior. It does not explain partitionName, but that is documented in the schema. The note about appending to the M query provides useful context about the model-changing nature of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description compensates for the columns parameter by explaining its two modes (test only specified columns vs. whole row). However, it does not add meaning for the table or sessionId parameters, which remain undocumented in both schema and description. The description adds marginal value over the schema for columns but does not fully cover the parameter space.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('drop rows that carry an error value') and explicitly names the underlying M function (Table.RemoveRowsWithErrors). This clearly distinguishes it from siblings like keep_errors and replace_errors by stating 'Remove Errors' as the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for using the columns parameter ('Pass columns (comma-separated) to test only those columns; omit to test the whole row'), explaining both modes of operation. However, it does not explicitly state when to use this tool vs alternatives like keep_errors or replace_errors, only implying that it is for removing error rows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_filterA
Remove a matching filter (by table[field]) at a given scope = visual|page|report. For scope=visual pass page+visual; for scope=page pass page; scope=report needs neither. Returns how many filters were removed.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page name (required for scope=visual|page) | |
| field | Yes | field to match | |
| scope | Yes | visual|page|report | |
| table | Yes | table that owns the filter field | |
| visual | No | visual name (required for scope=visual) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return value ('Returns how many filters were removed') and scope-dependent parameter behavior. However, it doesn't mention side effects, error handling (e.g., no matching filter), or whether the removal is irreversible. The destructive nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and providing necessary usage details in a compact form. Every clause adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description's note on the return count is valuable. It covers the main use cases and parameter dependencies. Minor gaps include no mention of behavior when no filter matches or invalid session, but for a simple filter removal tool it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds interaction rules between scope and the page/visual parameters, which are not fully evident from the schema alone. It clarifies that page and visual requirements depend on scope, and that matching is by table[field]. This goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Remove' and identifies the resource as 'a matching filter (by table[field])' with a defined scope. It clearly distinguishes from sibling tools like hide_filter or add_visual_filter by specifying removal and the scope options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit parameter usage rules for each scope: 'For scope=visual pass page+visual; for scope=page pass page; scope=report needs neither.' This is clear, actionable guidance. It doesn't mention alternatives, but the scope-specific instructions effectively guide correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_perspectiveA
Remove an object from a perspective. objectType = table | column | measure | hierarchy. For column/measure/hierarchy, pass the object's table. Removing a table removes it (and its members) from the perspective.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the object's name | |
| table | No | the object's table (required for column/measure/hierarchy) | |
| sessionId | Yes | ||
| objectType | Yes | table | column | measure | hierarchy | |
| perspective | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that removing a table also removes its members, a key side effect. It does not cover reversibility or error handling, but the main 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The purpose is front-loaded and the nuance is presented efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple removal tool, covering the core operation and the important table-cascade nuance. It lacks edge-case details like what happens if the object is not in the perspective, but no output schema is needed for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers objectType and the conditional table requirement. The description mostly reinforces these, adding the cascade effect which is more behavioral than parameter-specific. It does not clarify sessionId or perspective beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' and identifies the resource 'perspective'. It clearly differentiates object types and explains the scope of removal, distinguishing it from add_to_perspective.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use this tool versus other actions by explaining the different object types and the table requirement. However, it does not explicitly mention alternatives like add_to_perspective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_hierarchy_levelA
Remove a level from a hierarchy (remaining levels are renumbered densely). Refuses to remove the LAST level - a hierarchy cannot be empty; use delete_hierarchy instead.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | the level to remove | |
| table | Yes | ||
| hierarchy | Yes | the hierarchy | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses two important behaviors: remaining levels are renumbered densely, and the last level cannot be removed. This goes beyond the obvious 'remove' semantics. It doesn't mention permissions or reversibility, but for a removal operation, the disclosed behaviors are key.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the core purpose ('Remove a level from a hierarchy') and packs in crucial behavioral details without any fluff. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema and no annotations, the description covers purpose, key side effects, error condition, and an alternative tool. It doesn't mention return values, but that's not critical for a remove operation. It adequately addresses the main contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with descriptions for 'level' and 'hierarchy' but not for 'sessionId' and 'table'. The description adds context to 'level' by explaining the renumbering and refusal behavior, but it doesn't clarify the role of sessionId or table. It provides some value beyond the schema's tautological 'the level to remove', but doesn't fully compensate for the missing parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove a level from a hierarchy' with a specific verb and resource. It also distinguishes from the sibling tool delete_hierarchy by noting the refusal to remove the last level and pointing to the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when not to use this tool: 'Refuses to remove the LAST level - a hierarchy cannot be empty; use delete_hierarchy instead.' This provides a clear exclusion and names the alternative tool for that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_role_memberA
Remove a member from a security role (by member identity). Returns removed=false if the member was not on the role.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| member | Yes | member identity to remove, e.g. user@org.com | |
| sessionId | Yes |
TDQS
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 adds a specific edge-case behavior ('Returns removed=false if the member was not on the role'), but does not disclose success return, permission requirements, or error handling for invalid roles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the primary action and immediately followed by a useful edge-case note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema or annotations, the description provides the core action and one edge case, but omits what a successful removal returns and any prerequisites or side effects. It is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (33%, only member has a description). The description adds that 'role' is a security role and that member is identified by identity, but it does not clarify sessionId. It partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and resource ('member from a security role'), and clarifies the method ('by member identity'). It also includes the return behavior for the not-found case, which distinguishes it from sibling tools like add_role_member or delete_role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (removing a member from a role) but does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool mentions are provided, so the context is clear but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_columnA
Rename a column. With propagate=true (the default) every DAX reference model-wide is rewritten too - measures, calculated columns/tables, RLS filters, calc items, format-string/detail-rows/KPI expressions - atomically (one SaveChanges; any failure rolls everything back), and when reportSource is given the report's bindings (projections, queryRefs, filters at all scopes, sorts, conditional-formatting/chrome, on both legacy Layout and PBIR) are rewritten as well. propagate=false renames the object only, leaving references by the old name in M/DAX untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| newName | Yes | ||
| propagate | No | rewrite every DAX reference model-wide (and report bindings when reportSource is given); false = rename the object only | |
| sessionId | Yes | ||
| reportSource | No | optional report to rewrite: a reportSessionId (open_report), a pbirSessionId (read_pbir), or a PBIR .pbix/PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It explicitly states atomicity (one SaveChanges), rollback on failure, and enumerates exactly which DAX references and report bindings are rewritten. This goes beyond typical rename descriptions and fully discloses side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every phrase contributes value, explaining both modes and the exact scope of rewrites. It is structured as a single flow from purpose to conditional behavior, but could be slightly more scannable with bullet points or clearer separation of modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two distinct behaviors, the description covers both fully: propagate=true with atomic rollback and report bindings, and propagate=false leaving references untouched. It does not mention duplicate-name validation or return values, but these are not essential given the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate. It adds meaningful semantics for propagate (atomic rewrite, rollback) and reportSource (accepts session IDs or PBIR paths), but leaves the basic string parameters (table, column, newName, sessionId) to be inferred from the schema. This is adequate but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Rename a column,' which is a specific verb+resource statement. It further clarifies scope by distinguishing between model-wide propagation and object-only renaming, which differentiates it from sibling tools like rename_columns or rename_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when to use propagate=true vs false and when reportSource applies. It does not explicitly mention alternative tools, but it provides contextual guidance on the mode selection via the propagate flag and reportSource parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_columnsA
Power Query Rename Columns: rename columns in the query. Appends Table.RenameColumns to the table's M query. renames is comma-separated as from:to, e.g. "col1:Amount,col2:Region".
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| renames | Yes | from:to pairs, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool appends Table.RenameColumns to the M query, which is a concrete behavioral detail. However, it does not mention error conditions, reversibility, or side effects on the data, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that deliver the core action and format. It is slightly redundant at the start with 'Power Query Rename Columns', but overall it is efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and moderate complexity, the description covers the main action and parameter format but lacks usage guidance, side effects, and any mention of related tools or prerequisites. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description adds a concrete example for 'renames' (e.g., 'col1:Amount,col2:Region'), going beyond the schema's 'from:to pairs'. However, 'table' and 'sessionId' remain unexplained in both schema and description, so the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames columns in a Power Query query by appending Table.RenameColumns to the M query. It also provides the exact format for the 'renames' parameter, which distinguishes it from siblings like 'rename_column' and 'rename_columns_from_mapping'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to rename columns in a query) but does not explicitly state when not to use it or mention alternatives such as 'rename_column' or 'rename_columns_from_mapping'. No exclusions or comparison with related tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_columns_from_mappingA
Rename columns from a CONTROL TABLE: Table.RenameColumns(prev, Table.ToRows(...), MissingField.Ignore). Drives renames from a maintained {oldCol, newCol} mapping query; MissingField.Ignore skips columns that are absent. Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| newCol | Yes | the mapping column holding the NEW names | |
| oldCol | Yes | the mapping column holding the OLD names | |
| sessionId | Yes | ||
| mappingTable | Yes | the mapping query/table name | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 reveals that it uses MissingField.Ignore to skip absent columns, appends a step to the M query, and provides the raw M expression. This gives a clear sense of side effects, though it does not mention permissions or validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes a technical snippet that earns its place. It is concise with zero fluff, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description sufficiently explains the tool's behavior, including the missing-field handling and the M query step. It lacks details on return values or prerequisites like whether the mapping table must already exist, but for a transformation tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema already documents oldCol, newCol, mappingTable, and partitionName. The description adds context that oldCol/newCol are fields in the mappingTable and that MissingField.Ignore is applied, but it does not significantly enhance understanding beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Rename'), the resource ('columns'), and the mechanism ('from a CONTROL TABLE'), with an explicit M function signature. It distinguishes itself from sibling tools like 'rename_columns' by emphasizing the mapping-table-driven approach, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a mapping table exists, but it does not explicitly state when to choose this over alternatives like 'rename_columns' or 'apply_rename_plan'. It lacks when-not-to-use cases or exclusions, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_pageA
Rename a report page (set its tab title / displayName). The internal page name is unchanged so bookmarks and navigation keep working.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| newName | Yes | the new tab title | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states a critical non-obvious behavior: the internal page name remains unchanged so bookmarks and navigation keep working. This adds meaningful context beyond what the name alone conveys, though it does not cover all potential behaviors (e.g., uniqueness of newName, failure modes, or authorization needs).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no fluff. It front-loads the action and includes only the essential behavioral caveat about the internal name. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a straightforward rename operation with three string parameters and no output schema. The description covers the core action and the most important contextual consequence (internal name unchanged). It could be slightly more complete by mentioning that the operation applies to the session identified by reportSessionId or that the page must exist, but given the simplicity, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 'page' and 'newName' with clear explanations; the description reinforces that 'newName' becomes the tab title/displayName. However, it adds no new information about the undocumented 'reportSessionId' parameter, and the 67% schema coverage leaves that gap unfilled. Overall, the description does not significantly enhance the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Rename a report page' and clearly defines the operation as setting the tab title/displayName. It also distinguishes itself from related page tools by clarifying that the internal page name is unchanged, differentiating it from operations like set_page_tab_order or delete_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to change a page's visible tab title) and notes that bookmarks/navigation keep working, which hints at its safe usage. However, it does not explicitly state when not to use it or mention alternatives like set_page_display or set_page_type, leaving the decision to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_tableA
Rename a table. With propagate=true (the default) every reference model-wide is rewritten too - quoted 'Table'[Col] and bare Table[Col] DAX forms across measures/calc columns/calc tables/RLS/calc items/KPIs, plus M query-name references (#"Old" and bare identifiers in partition M and shared expressions, the partition name kept in step) - atomically (one SaveChanges; any failure rolls everything back). When reportSource is given the report's bindings (From entities, projections, queryRefs, filters at all scopes, conditional-formatting/chrome, legacy Layout and PBIR) follow as well. propagate=false renames the object only. Sort-bys, hierarchies, relationships and translations carry over automatically in TOM either way.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| newName | Yes | ||
| propagate | No | rewrite every DAX/M reference model-wide (and report bindings when reportSource is given); false = rename the object only | |
| sessionId | Yes | ||
| reportSource | No | optional report to rewrite: a reportSessionId (open_report), a pbirSessionId (read_pbir), or a PBIR .pbix/PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes full responsibility for behavioral disclosure. It describes atomicity (one SaveChanges, rollback on failure), the exact references rewritten (DAX, M, report bindings), the difference between propagate=true and false, and what carries over automatically (sort-bys, hierarchies, relationships, translations). This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose statement and then delivers dense, high-value details without redundancy. Every clause adds meaningful information about propagation, atomicity, or scope. Despite its length, the structure is logical and efficient for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, low schema coverage, no annotations, no output schema), the description is remarkably complete. It covers default behavior, edge cases (propagate=false), report-specific rewrites, and automatic carry-overs. The lack of output schema is not a gap since the tool likely returns nothing beyond a success signal, and the description covers the crucial aspects for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, but the description enriches the understanding of the two most complex parameters (propagate and reportSource) beyond the schema. The table and newName parameters are self-evident from the tool name, though sessionId is not mentioned. The description compensates well for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Rename a table,' a specific verb+resource that clearly distinguishes it from siblings like rename_column, rename_page, and rename_shared_expression. The scope is further clarified by the detailed propagation semantics, leaving no doubt about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool, especially the default propagate=true behavior and the optional reportSource parameter. It does not explicitly mention alternatives or list when-not-to-use conditions, but the context is strong enough to guide an agent effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_columnsA
Power Query Reorder Columns: move the listed columns to the front in the given order (remaining columns keep their relative order). Appends Table.ReorderColumns to the table's M query. order is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| order | Yes | desired leading column order, comma-separated | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool appends Table.ReorderColumns to the M query, indicating a mutating operation, and clarifies the effect on column order. It does not mention failure modes or side effects, but the core behavior is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary purpose. Each sentence adds useful information: what it does, its effect on the M query, and the format of the order parameter. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the core operation is described, the tool has no annotations or output schema, and the description leaves table/sessionId/partition semantics unexplained. For a mutating tool with four parameters, this is adequate but not complete, missing error conditions and explicit parameter roles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, with table and sessionId lacking descriptions. The description adds no meaningful information about these undocumented parameters; it only restates what the order parameter already explains (comma-separated order). It fails to compensate for the gap, so parameter semantics are weak.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's function clearly: 'move the listed columns to the front in the given order (remaining columns keep their relative order)', which is a specific and distinct operation from sibling tools like move_column or select_columns. It also mentions the underlying M query append, reinforcing its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what it does, but it does not explicitly say when to use this tool versus alternatives such as move_column or sort_column_by. There is no mention of when not to use it or any prerequisites, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_pagesA
Reorder the report's pages. orderedNames = comma-separated page names/displayNames in the desired left-to-right order; each gets a fresh ordinal in that order. Pages not listed keep their relative order and are appended after.
| Name | Required | Description | Default |
|---|---|---|---|
| orderedNames | Yes | comma-separated page names in the desired order | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description discloses key behaviors: assigning fresh ordinals, appending unlisted pages in relative order, and accepting page names or displayNames. This goes beyond a simple 'reorder' and gives the agent a clear model of the operation's effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and contains no filler. It efficiently packs the essential details about ordering and exclusion behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reorder tool, the description adequately covers the main behavior and edge cases (unlisted pages). It lacks prerequisites or error conditions, but no output schema exists, and the tool is not complex enough to require more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to orderedNames by explaining comma-separated format, left-to-right order, and fresh ordinals. However, reportSessionId is not explained in either the schema or the description, leaving a gap for that parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Reorder the report's pages' – a specific verb and resource. It also explains the ordering semantics (left-to-right order, fresh ordinals) and distinguishes from sibling tools like rename_page, add_page, or delete_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for reordering pages and provides context on how unlisted pages are handled. However, it does not explicitly mention when to use this instead of alternatives (e.g., set_page_tab_order) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_errorsA
Power Query Replace Errors: substitute a value for error cells in specific columns. Appends Table.ReplaceErrorValues to the table's M query. replacements is comma-separated as column:value, e.g. "Amount:0,Region:Unknown". valueType (text | number | logical | null) applies to all replacement values; for an all-columns replacement, list every column with the same value.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| valueType | No | text | number | logical | null (default text) | text |
| replacements | Yes | column:value pairs, comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the side effect of appending Table.ReplaceErrorValues to the M query and notes the all-columns replacement limitation, but it does not mention permissions, reversibility, or what is returned after the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense sentences, front-loaded with purpose, and free of redundant filler. Every sentence contributes useful information, including the M query side effect, parameter format, and valueType semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description covers the transformation semantics well but omits return value/confirmation behavior, prerequisites, and how this tool differs from remove_errors or replace_values. It is adequate for a straightforward M operation but not fully complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description adds meaningful value by providing a concrete example ('Amount:0,Region:Unknown'), clarifying that valueType applies to all replacement values, and explaining the all-columns replacement caveat. It does not explain sessionId/table/partitionName, but the core transformation parameters are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'substitute a value for error cells in specific columns' and names the exact M function Table.ReplaceErrorValues, giving a specific verb, resource, and scope. This distinguishes it from sibling tools like remove_errors, replace_values, or replace_value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operation context and parameter syntax but does not explicitly explain when to use this tool versus alternatives like remove_errors or replace_values. It implies usage through the substitution semantics, but lacks exclusion notes or if/then guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_valueA
Power Query Replace Value (whole-cell): swap the entire cell value in a column - unlike replace_values which replaces a text substring. Appends Table.ReplaceValue (Replacer.ReplaceValue) to the table's M query, supporting null<->value and numeric replacements (e.g. null->0, 0->null, -1->0). valueType (text | number | logical | null) applies to BOTH oldValue and newValue.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column to replace in | |
| newValue | No | the replacement whole-cell value (omit/empty for null) | |
| oldValue | No | the whole-cell value to find (omit/empty for null) | |
| sessionId | Yes | ||
| valueType | No | text | number | logical | null (default text) | text |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool appends Table.ReplaceValue to the table's M query, indicating a mutating step, and explains the support for null and numeric replacements. While it doesn't mention every side effect, it exceeds the minimum by describing a key behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence establishes purpose and differentiation, the second provides behavioral and parameter semantics. Every sentence earns its place and is front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description is complete enough. It explains what the tool does, when to use it, and clarifies the crucial valueType semantics. The schema covers the remaining parameter details, so the description fills the gaps needed for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 71%, so a baseline of 3 is appropriate. The description adds value by clarifying that valueType applies to BOTH oldValue and newValue, and by giving concrete examples of numeric replacements. This goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a whole-cell replacement in a column, using the specific verb 'swap' and identifying the resource ('column'). It explicitly distinguishes itself from the sibling tool 'replace_values' which replaces text substrings, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts with 'replace_values' (substring vs whole-cell) and provides examples of appropriate use cases (null->0, 0->null, -1->0). This gives clear guidance on when to use this tool over the key alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_valuesB
Power Query Replace Values: replace every occurrence of a text value in a column. Appends Table.ReplaceValue (Replacer.ReplaceText) to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | the value to find | |
| table | Yes | ||
| column | Yes | the column to replace in | |
| replace | Yes | the replacement value | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency responsibility. It usefully discloses that it appends Table.ReplaceValue (Replacer.ReplaceText) to the M query and replaces every occurrence in a column. However, it does not mention potential side effects, such as modifications to existing M steps, case sensitivity, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the action and an informative detail about the M function. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema and no annotations, the description is too brief. It lacks usage guidance, parameter coverage, and essential behavioral details about prerequisites and side effects, leaving the agent under-informed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents find, replace, column, and partitionName, though sessionId and table lack descriptions. The description adds a 'text value' nuance for the find parameter and clarifies the column scope, but doesn't compensate for the undocumented sessionId or table parameters. It offers only marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool replaces every occurrence of a text value in a column, using a specific verb and resource. It also names the underlying M function, which adds precision. However, it doesn't explicitly distinguish itself from the similarly named sibling 'replace_value', so it isn't a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like 'replace_value' or 'transform_column'. It implies a Power Query replacement context but does not mention exclusions, prerequisites, or preferred scenarios, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_pageA
Resize a page's canvas to an explicit width x height (pixels). Writes the section size + the pageSize object so it sticks in Desktop. For named presets use set_canvas_preset.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| width | Yes | canvas width in px | |
| height | Yes | canvas height in px | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing behavior. It adds useful implementation detail: it writes both section size and pageSize object, and mentions Desktop persistence ('sticks in Desktop'). It does not mention side effects like overwriting existing settings, but the mechanism is transparent enough for a simple resize.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the main purpose in the first sentence and implementation/alternative in the second. No wasted words, and the structure is logical and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterized tool with no output schema or annotations, the description covers purpose, mechanism, and alternative. It does not describe return values or error conditions, but those are not typically needed for a resize operation. The context is adequate and complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers width, height, and page, with reportSessionId lacking a description (75% coverage). The description doesn't add extra parameter semantics beyond restating that width and height are in pixels, which the schema already includes. It does not clarify reportSessionId, but this is acceptable given the coverage is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: resizing a page's canvas to explicit pixel dimensions. It specifies the resource (page's canvas) and the action (resize), and immediately distinguishes itself from set_canvas_preset by mentioning named presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs users to set_canvas_preset when they need named presets, implying this tool is for explicit width/height values. This provides a clear when-to-use vs. alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_visualB
Resize an existing visual to new width/height.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It states the operation and object but does not disclose side effects, behavior when width/height are null, or prerequisites like the visual existing. It does not contradict any annotations because none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words or extraneous detail. It is appropriately sized for the simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, this description is insufficient. It does not cover behavior with null width/height, the effect of partial resizing, or validation of the existing visual. The presence of required session/page/visual identifiers without explanation leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only hints at 'width/height' without explaining allowed values, units, or the meaning of null defaults. The required parameters reportSessionId, pageName, and visualName are not elaborated either, leaving the agent to infer from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Resize' and identifies the resource as 'existing visual' with the target outcome 'new width/height'. It clearly differentiates from siblings like 'resize_page' and 'set_visual_position'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'resize_page' or 'align_visuals'. It simply states what it does, leaving the selection decision entirely to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rewrite_connection_stringA
Find/replace a literal substring (a server/db name, file path, URL, ...) across Section1.m inside a .pbix's DataMashup, clearing PermissionBindings. Returns how many occurrences were replaced. RISKY - work on a COPY; the .pbix must be CLOSED in Desktop; refuses protected client paths.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | the literal substring to find | |
| replace | Yes | the replacement substring | |
| pbixPath | Yes | absolute path to the .pbix (a COPY) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden of behavioral disclosure, and it does so excellently. It reveals side effects (clearing PermissionBindings), return value (count of replacements), and risk constraints (copy, closed file, protected paths). This gives the agent a clear safety and operational picture without needing additional metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with zero filler. It front-loads the core action and target, then efficiently adds side effect, return value, and risk caveats. Every sentence earns its place, making it easy to scan and parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the absence of annotations and output schema, the description is remarkably complete. It covers purpose, target, side effects, return type, and critical safety prerequisites. An agent has enough information to invoke the tool correctly and avoid common pitfalls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter names and descriptions, so the baseline is 3. The description adds value by giving concrete examples of what 'find' might target ('a server/db name, file path, URL') and clarifying the scope ('across Section1.m'), which enriches the parameter semantics beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Find/replace a literal substring ... across Section1.m inside a .pbix's DataMashup'. It clearly states the primary action, the target location, and an important side effect (clearing PermissionBindings). This distinguishes it from sibling tools like set_data_source or get_datamashup_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use: it's for rewriting connection strings in a .pbix's DataMashup and includes explicit risk warnings ('work on a COPY', '.pbix must be CLOSED', 'refuses protected client paths'). However, it does not name alternative tools or explicitly state when not to use this tool versus a sibling, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rls_test_harnessA
Prove the model's security filters: evaluate one DAX query under EVERY role in the model plus an unfiltered baseline, returning a per-role matrix of {role, rowCount, sampleRows, error}. A role whose rowCount equals the baseline is not filtering that query - the classic silent-RLS-gap detector. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | the DAX query to evaluate per role (bare table expressions get EVALUATE prefixed) | |
| sessionId | Yes | ||
| sampleRows | No | sample rows to return per role (default 5, max 100; rowCount is always the full count) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and describes the return contract (per-role matrix with role, rowCount, sampleRows, error) and the interpretation (rowCount equals baseline means no filtering). This is comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The first sentence states the core action and output, the second explains the interpretation and safety. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description fully explains what the tool returns and how to interpret results. It covers the read-only nature, the baseline, and the error field. For a complex tool with multiple roles, this is sufficient for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description gives meaning to the query parameter by stating it is evaluated under every role, and clarifies sampleRows as part of the output matrix. Schema already covers query and sampleRows, but sessionId remains undocumented. The description adds value beyond the schema for the main parameters, though sessionId is a common standard.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific purpose: 'Prove the model's security filters' by evaluating a DAX query under every role plus a baseline. This distinguishes it from siblings like run_dax or run_dax_as_role, which operate on single roles. The phrase 'silent-RLS-gap detector' further clarifies its intended function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use it: to test RLS effectiveness by comparing row counts across roles. It provides context on the baseline and detection logic, but does not explicitly name alternatives or state when not to use it. Still, the usage context is clear enough for an agent to select this tool over a plain run_dax.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_model_transactionA
Roll back the open model transaction: discards every accumulated TOM change via Model.UndoLocalChanges - the engine never sees them.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the destructive effect (discards all accumulated changes) and notes the engine never sees them, referencing the underlying API. This adds meaningful transparency, though it does not mention potential side effects or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action and provides necessary context without any redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, the description covers the main behavior clearly. However, it omits prerequisites such as requiring an open transaction (via begin_model_transaction) and does not clarify what happens if sessionId is invalid or no transaction is open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (sessionId) with 0% description coverage. The description does not mention sessionId at all, leaving its role and format unexplained. Since there is only one parameter, a brief mention would be expected to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Roll back the open model transaction', and further explains it discards every accumulated TOM change. This distinguishes it from sibling tools like commit_model_transaction, which would apply changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: when you want to discard changes to the model rather than commit them. However, it does not explicitly name alternative tools or provide when-not-to-use conditions, though the contrast with commit_model_transaction is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bpaA
Run the Best Practice Analyzer: a catalogue of ~90 lint rules (merging the Tabular Editor and semantic-link-labs rulesets) across Performance, DAXExpressions, ErrorPrevention, Maintenance, NamingConventions, Formatting, Metadata and RelationshipsLayout. Read-only. Returns every finding (ruleId, category, severity 1 info/2 warning/3 error, objectType, objectName, message, fixable) plus a summary count by category and severity. Filter with categories / severities / ruleIds (comma-separated) and scope (Model|Table|Column|Measure|Relationship|Partition|Hierarchy). Use fix_bpa to auto-remedy fixable findings.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | scope filter: Model|Table|Column|Measure|Relationship|Partition|Hierarchy | |
| ruleIds | No | comma-separated rule IDs to run only those (default all) | |
| sessionId | Yes | ||
| categories | No | comma-separated category filter, e.g. Performance,Metadata (default all) | |
| severities | No | comma-separated severity filter: 1 info, 2 warning, 3 error (default all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and describes the exact return structure (findings plus summary counts). It does not cover edge cases like empty results or error handling, but the core behavioral traits are well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and structured as five short sentences, each earning its place: purpose, read-only trait, output format, filters, and alternative tool. It is slightly verbose but lacks filler or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lint tool with no output schema, the description adequately covers return values and filter parameters. It references the companion tool fix_bpa for remediation. Missing details include error handling or behavior with invalid filters, but the description is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (4 of 5 parameters have descriptions). The description largely repeats the filter options already present in the schema (categories, severities, ruleIds, scope) and adds no new parameter-specific detail. Since the schema handles the heavy lifting, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs the Best Practice Analyzer, a catalog of ~90 lint rules across specific categories. It describes the output (findings and summary) and distinguishes itself from fix_bpa by noting it returns findings rather than auto-remediating them. This makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to run the BPA and get findings) and explicitly names fix_bpa as the alternative for auto-remediation. It does not explicitly state when not to use the tool, but the context is sufficient for selecting it among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_daxA
Run a DAX query against the live model and RETURN the result rows (columns + rows). Accepts a full 'EVALUATE ...' query or a bare table expression (EVALUATE is prepended). Use to verify a refresh, get row counts, check date ranges, or preview data.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | DAX query (EVALUATE ...) or a table expression | |
| maxRows | No | max rows to return (default 100) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It discloses the return format (columns + rows) and the behavior of accepting bare table expressions with EVALUATE prepended. It does not mention side effects or permissions, but as a query tool, the described behavior is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that front-load the purpose, then add syntax details, then use cases. Every sentence earns its place, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description explicitly explains the return values ('columns + rows'). It includes use cases and syntax variations. It omits sessionId explanation and error behavior, but overall it is adequate for a query execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers dax and maxRows with descriptions; sessionId is undocumented. The description adds nuance to dax (prepending EVALUATE) but not to sessionId. With 67% parameter coverage, the description partially compensates but does not fully address the missing parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a DAX query against the live model and RETURN the result rows', providing a specific verb, resource, and output. It also explains accepted query forms and distinguishes from siblings like run_dax_as_role and validate_dax by focusing on general execution and result retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: 'use to verify a refresh, get row counts, check date ranges, or preview data.' While it does not name alternatives or exclusions, it provides clear context for when the tool is appropriate, which is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_dax_as_roleA
Run a DAX query AS a security role: opens a second connection to the session's engine with Roles= (and optionally EffectiveUserName= for dynamic USERPRINCIPALNAME-driven RLS) so the engine applies the role's row-level filters, and returns the rows. Role names are validated against the model so a typo can never silently run unfiltered. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | the DAX query (bare table expressions get EVALUATE prefixed) | |
| roles | Yes | role names, comma-separated (all applied together, as AS unions role filters) | |
| maxRows | No | max rows to return (default 200) | |
| sessionId | Yes | ||
| effectiveUserName | No | impersonated UPN for dynamic RLS, e.g. user@contoso.com (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the second-connection mechanism, role validation, and read-only nature. It adds safety-critical context (typos can't silently run unfiltered) that goes beyond typical descriptions, though it doesn't cover every edge case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, and no wasted words. Each sentence adds value: purpose, mechanism, and safety guarantee.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema and no annotations, the description is reasonably complete: it explains purpose, behavior, and safety guarantees, and notes that it returns rows. It could mention result format or explicitly compare to run_dax, but the core context is solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3. The description reinforces what the schema already says (roles comma-separated, EVALUATE prefix, effectiveUserName for dynamic RLS) but does not add significant new parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a DAX query AS a security role' with a specific verb, resource, and scope. It distinguishes itself from plain run_dax by explicitly mentioning role-based row-level filters, making the tool's unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need the engine to apply role-based RLS. However, it does not explicitly name alternative tools (e.g., run_dax) or state when not to use this tool, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_golden_setA
Replay a golden-set file against the live model: every golden is re-evaluated and compared to its baseline (numeric tolerance 1e-6, error-state matching). Returns total/passed/failed plus per-failure expected vs actual - the numbers gate for verifying a measure change in CI.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | golden-set JSON file written by save_golden_set | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It details the comparison mechanics (numeric tolerance 1e-6, error-state matching) and return values (total/passed/failed, expected vs actual), which is substantial behavioral disclosure. Does not state whether it mutates state or requires specific session setup, but 'replay against live model' implies a non-mutating test run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: first defines the action, second defines output and purpose. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema or annotations, description explains what the tool does, how it evaluates, what it returns, and the intended CI use case. For a 2-parameter tool, this is sufficient context; minor gaps like sessionId semantics are covered by the schema field name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers path with a description but leaves sessionId undocumented (50% coverage). Description explains path as a golden-set file written by save_golden_set and adds context about re-evaluation, but does not clarify sessionId. Thus only partially compensates for missing schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb 'Replay' with resource 'golden-set file against the live model', clearly distinguishing from sibling save_golden_set and other model tools. Also specifies the evaluation and comparison purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions the CI use case ('the numbers gate for verifying a measure change in CI'), providing clear when-to-use context. Doesn't explicitly name alternatives or exclusions, but sibling save_golden_set is the complement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
running_total_mA
Add a FAST running total of valueColumn ordered by orderColumn, optionally restarting within each groupColumn. Uses List.Buffer + a single accumulation pass (O(n)) rather than a per-row re-scan (O(n^2)). Appends sort + index + running-total steps to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| groupColumn | No | the partition column to reset within (optional) | |
| orderColumn | Yes | the column that orders the rows | |
| valueColumn | Yes | the value column to accumulate | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the algorithmic approach and that it 'Appends sort + index + running-total steps to the table's M query', which indicates a mutation of the query. However, it does not mention reversibility, required permissions, error conditions, or what happens to existing query steps, leaving gaps in the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that are front-loaded with the core purpose, then provide performance and implementation details. Every word earns its place, and it is neither verbose nor under-specified. This is an exemplary concise structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (6 parameters, no output schema, no annotations), the description gives a good overview and key behavioral details (appending to M query, O(n) performance). However, it lacks information about prerequisites (e.g., numeric valueColumn), error handling, return values, or the impact on the existing query, making it only partially complete for fully informed use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the tool description largely paraphrases the schema: 'of valueColumn ordered by orderColumn' mirrors the schema fields, and 'restarting within each groupColumn' reiterates the groupColumn description. It does not add new meaning beyond what the schema already provides, and it omits any explanation of partitionName or the standard sessionId/table parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Add a FAST running total of valueColumn ordered by orderColumn, optionally restarting within each groupColumn.' This clearly states the function, the columns involved, and the optional grouping behavior. The name running_total_m and the emphasis on 'FAST' and 'M query' distinguish it from the similar sibling add_running_total.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by explaining the performance advantage: 'Uses List.Buffer + a single accumulation pass (O(n)) rather than a per-row re-scan (O(n^2)).' This signals when to prefer this tool for large tables. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_golden_setA
Capture a measure-regression baseline: evaluate every model measure (or a comma-separated subset) via EVALUATE ROW and write a deterministic, git-friendly golden-set JSON file (sorted by name, no timestamps). A measure that errors is recorded as an error-state golden so regressions to/from errors are caught. Replay with run_golden_set.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | output file path for the golden-set JSON | |
| measures | No | comma-separated measure names to capture (omit for all model measures) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool evaluates measures, writes a deterministic, git-friendly JSON file sorted by name with no timestamps, and records error-state goldens. This is substantial transparency about side effects and deterministic behavior, though it does not mention overwrite behavior or the need for an open model session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that are information-dense but front-loaded with the core purpose. Every phrase earns its place: the mechanism (EVALUATE ROW), output properties (sorted, no timestamps, git-friendly), error handling, and replay pointer. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is quite complete. It covers purpose, behavior, error recording, and a companion tool. The only notable gaps are the role of sessionId and whether the file is overwritten if it already exists, which would be important for an agent using the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes path and measures, and the description adds the meaning of 'comma-separated subset' for measures, which is helpful. However, the required sessionId parameter is not explained in either the schema or the description, leaving ambiguity about its purpose. With 67% schema coverage, the description only partially compensates for this gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a measure-regression baseline, evaluates model measures via EVALUATE ROW, and writes a golden-set JSON file. It uses specific verbs ('capture', 'evaluate', 'write') and distinguishes from the sibling run_golden_set by explicitly mentioning replay with that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to establish a baseline for measure regressions. It also references run_golden_set for replay, implying a workflow. However, it does not explicitly state when not to use it or compare it to other snapshot tools like sentinel_snapshot, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_open_pbixA
Persist an OPEN Power BI Desktop model to its .pbix by driving Desktop's own File>Save (scripted Ctrl+S), located by the session's engine port. This is the model-side 'save' the toolkit otherwise lacks: after any live model edit (add_measure, add_relationship, ...) call this to write the change - WITH data - back to disk without a manual click. Requires the .pbix open in Power BI Desktop. Pass pbixPath so the tool can confirm the save landed (LastWriteTime advanced). On an XMLA (Fabric/Service) session there is no local .pbix: the dataset persists server-side, so a pending M change is flushed by a full server-side refresh instead (ok:true, persisted:'xmla-refresh', saveDispatched:false; no Desktop is touched).
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | No | the open report's .pbix path (to confirm the save landed; optional) | |
| sessionId | Yes | sessionId from connect_model | |
| saveRetries | No | scripted File>Save attempts before giving up (default 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the mechanism (scripted Ctrl+S), the data-inclusive save, the pbixPath confirmation via LastWriteTime, and the XMLA branch with exact response fields. Minor gaps: no mention of failure modes or permissions, but overall very informative for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with front-loaded purpose. The long third sentence about XMLA is dense but relevant. Every clause carries functional information; no filler. Length is justified by the tool's dual-mode complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (Desktop vs XMLA modes), the description covers the main behaviors and requirements. However, no output schema and no explicit return value for the primary Desktop save path (only XMLA response fields are given). Also, error handling (e.g., if .pbix not open) is not described, so not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. The description adds purpose for pbixPath (confirm save landed via LastWriteTime) and for XMLA mode, but saveRetries and sessionId are already well-described in the schema. No extra syntax or format detail beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence uses a specific verb ('Persist') and resource ('OPEN Power BI Desktop model to its .pbix'), explains the mechanism (driving File>Save via Ctrl+S), and differentiates from siblings by stating it is the 'model-side save' the toolkit otherwise lacks. It clearly distinguishes from report-level or project-level save tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States explicit usage context—'after any live model edit... call this'—and prerequisite ('Requires the .pbix open in Power BI Desktop'). Describes the XMLA/Fabric alternative behavior (server-side refresh) but does not name alternative sibling tools, so clear context but no explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_pbirA
Persist the open PBIR report, re-emitting ONLY changed files and preserving every other entry byte-for-byte, GUID names intact, the DataModel untouched, and SecurityBindings stripped. For a .pbix this repacks the zip; for a PBIP folder it writes the changed files. The source must NOT be open in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility and does so exceptionally well. It discloses specific behaviors: only changed files are re-emitted, every other entry is preserved byte-for-byte, GUID names remain intact, the DataModel is untouched, SecurityBindings are stripped, and it clarifies zip repacking vs PBIP folder writes. It also flags the prerequisite about Power BI Desktop, covering critical side-effect conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, densely packed with critical details, and front-loads the primary action. Every clause contributes meaning—from the selective re-emission to the format-specific handling and the prerequisite—with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and lack of output schema/annotations, the description covers the tool's main behavior thoroughly, including format differences and constraints. However, it does not mention what the tool returns or success/failure indicators, which would be useful in the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explicitly explain the `pbirSessionId` parameter. While the parameter name and tool context suggest it is the session identifier for the open PBIR report, the description adds no direct guidance on how to obtain or use it, leaving a gap for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Persist the open PBIR report') with a specific resource, and distinguishes it from sibling tools like save_report or persist_open_model by detailing exact behaviors (e.g., re-emitting only changed files, stripping SecurityBindings). It also clarifies format-specific handling for .pbix vs PBIP, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to persist changes to an open PBIR report) and includes an important prerequisite (the source must NOT be open in Power BI Desktop). However, it does not explicitly name alternatives or when-not-to-use compared to sibling tools, so it falls short of full differentiation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_reportA
Write all report edits back into the .pbix (patches Report/Layout in the ZIP). The .pbix must be CLOSED in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key mutation behavior (writes edits back to the .pbix) and the critical closed-file requirement. However, it does not mention reversibility, error conditions, or what happens if the file is open, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, both essential: it states the action and a critical prerequisite. No filler or redundancy; information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with one parameter and no output schema. The description covers the core action and prerequisite but lacks usage guidelines for alternatives and parameter semantics. It is adequate for an agent familiar with the workflow but incomplete for full self-containment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention reportSessionId at all. The parameter name gives some clue, but the agent is not told where to obtain this ID (e.g., from open_report). The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool writes all report edits back into the .pbix file, using the specific verb 'write back' and resource '.pbix'. It also adds technical detail about patching Report/Layout in the ZIP, which distinguishes it from sibling tools like save_open_pbix or save_pbir.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite: 'The .pbix must be CLOSED in Power BI Desktop.' This implies the tool should be used when the file is closed, and indirectly suggests alternatives for open files. However, it does not explicitly name alternative tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_report_templateA
Save the report's current look as a reusable TEMPLATE bundle (inverse of apply_report_template): captures the live theme, the page's wallpaper + canvas size, and the report nav settings into one templateJson to re-apply later. page defaults to the first page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | a name for the template | |
| page | No | page to capture wallpaper/canvas from (optional; default first page) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the captured components and the default page behavior, but it omits critical behavioral traits such as whether saving overwrites an existing template, where the template is persisted, and what the returned value (if any) is. The description adds some context but not enough for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core action and includes a useful parenthetical reference to the inverse tool. Every phrase earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description should explain return behavior and side effects. It covers purpose and some parameter defaults but fails to mention what the tool returns, whether it overwrites, or the format of templateJson, leaving significant gaps for a save operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with reportSessionId lacking any description. The description only repeats the schema's page default and provides nothing about reportSessionId. It does not explain how the parameters affect the capture or the template bundle, so it adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Save the report's current look as a reusable TEMPLATE bundle' and identifies the exact resources captured (theme, wallpaper, canvas size, nav settings). It also names the inverse tool (apply_report_template), distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names an alternative (apply_report_template) and explains that this tool captures the current look for later reapplication. It provides context on what is captured but does not state specific 'when to use' vs 'when not to use' scenarios beyond the inverse relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_template_modelA
Rewrite a closed .pbit template's ZIP with the current DataModelSchema, preserving every other part (Report/Layout, [Content_Types].xml, SecurityBindings, Version, etc.) byte-for-byte - no Power BI Desktop. With no outPath it re-packs in place (the original is copied to a .bak first); with an outPath it writes an edited copy there and leaves the source untouched. The edit tools already persist on each call, so this is the explicit save-as (or an integrity re-pack).
| Name | Required | Description | Default |
|---|---|---|---|
| outPath | No | optional destination .pbit for a save-as copy (omit to re-pack in place) | |
| pbitPath | Yes | path to the closed .pbit template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses critical behaviors: it preserves all non-data parts byte-for-byte, creates a .bak backup when re-packing in place, and leaves the source untouched when outPath is provided. It also states that no Power BI Desktop is needed, covering the mutation and safety profile comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core action, followed by precise behavioral details. Every sentence adds value, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a save tool with no output schema: it covers purpose, parameter effects, safety, and relationship to edit tools. It does not mention return value or error handling, but these are minor gaps given the strong coverage of the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters with descriptions, but the description adds meaningful detail such as the .bak backup behavior for outPath omission and the explicit statement that outPath writes a copy while leaving the source untouched. This enriches the schema-provided semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: rewriting a closed .pbit template's ZIP with the current DataModelSchema while preserving all other parts byte-for-byte. It differentiates from siblings by specifying the closed .pbit format, no Power BI Desktop requirement, and the distinction between in-place save and save-as.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by noting that edit tools already persist on each call, making this the explicit save-as or integrity re-pack tool. It clearly explains behavior with and without outPath, but does not explicitly name alternative sibling tools, though the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_broken_refsA
Flag report bindings that point at MISSING model fields (renamed/deleted tables, columns or measures): every projection, filter, sort and conditional-formatting binding is resolved against the live model, and each broken ref reports where it is bound plus repair suggestions (same field on another table, closest name on the same table). reportSource = a reportSessionId, a pbirSessionId, or a PBIR path. Repair legacy sessions with fix_broken_visuals. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | live model sessionId (connect_model) | |
| reportSource | Yes | a reportSessionId, a pbirSessionId, or a PBIR .pbix / PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the transparency burden. It discloses the read-only nature, explains that bindings are resolved against the live model, and describes the output (broken refs report location plus repair suggestions). It does not mention permissions or potential failure modes, but for a scan tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and packs in multiple pieces of information: what it does, what it resolves, what output it provides, the reportSource note, the alternative repair tool, and read-only status. Every sentence earns its place; it is slightly long but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, two parameters with full schema coverage, and no output schema, the description covers the essential behavior: what it scans, how it resolves, what it returns, and the alternative for repair. It is complete enough for an agent to decide when to use it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds a brief note about reportSource types but that information is essentially the same as the schema property description, so no significant extra value is provided beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it flags report bindings pointing at missing model fields, and enumerates the binding types (projection, filter, sort, conditional-formatting). It also explicitly distinguishes itself from the sibling fix_broken_visuals by framing this as a diagnostic read-only scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions 'Repair legacy sessions with fix_broken_visuals', giving a clear alternative for the repair use case. It also implicitly defines when to use this tool (to scan/flag issues) and emphasizes read-only, though it does not spell out explicit 'when not to use' scenarios beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_columnsA
Power Query Choose Columns: keep ONLY the listed columns (in that order) and drop the rest. Appends Table.SelectColumns to the table's M query. columns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to keep, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool appends Table.SelectColumns to the table's M query and drops non-listed columns, providing behavioral context. However, it does not mention reversibility 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste; first sentence states the core action, second provides technical detail and parameter format. The description is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description provides core behavior and table context, but omits details about sessionId, return values, and prerequisites. It is adequate but not exhaustive, making it a minimum viable description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover columns and partitionName; description adds that 'columns is comma-separated' and implies 'table' is the table whose M query is modified. sessionId remains undocumented, and no new semantics are added for partitionName beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool keeps ONLY the listed columns in order and drops the rest, referencing Power Query's Table.SelectColumns. This distinguishes it from sibling tools like remove_columns or reorder_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance or alternatives are mentioned. The behavior is clear enough to infer usage, but it does not name alternatives such as remove_columns or reorder_columns, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_to_backA
Send a visual to the BACK of the page (z = current min - 1) - e.g. push a decorative panel behind the data visuals.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the exact z-order calculation ('z = current min - 1'), which is a concrete behavioral detail. It does not mention side effects like undo behavior or whether the visual is moved within a specific page, but for a simple z-order operation, this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that leads with the action and includes a helpful example. Every word earns its place, with no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity of the operation (send a visual to back), no output schema, and only 3 simple parameters, the description is nearly complete. It explains the effect and provides an example, though it does not address error cases or prerequisites (e.g., visual must exist on the page). However, these are likely standard assumptions for such a tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (page and visual are described, reportSessionId is not). The description adds no direct parameter semantics beyond what the schema already provides; it only mentions 'a visual' generically. Baseline 3 is appropriate because the schema covers most parameters, but the description does not compensate for the undocumented reportSessionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Send' with a clear resource ('a visual') and a clear outcome ('to the BACK of the page'), and it distinguishes itself from sibling tools like 'bring_to_front' by the direction. The z-order formula ('z = current min - 1') adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example 'push a decorative panel behind the data visuals' provides clear usage context, implying when to use this tool (to place an object behind others). It does not explicitly state when not to use it or name alternatives (like 'bring_to_front'), so it misses the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sentinel_diffA
Sentinel: compare two integrity snapshots (before vs after a refresh) and raise ranked alerts on any regression - a whole category dropped to zero, a table's rows collapsed, the grand total fell, a measure started erroring. Explains the likely cause and proposes the fix. status=fail means a report is now WRONG - do not trust the refresh. Pure/headless (two snapshot files).
| Name | Required | Description | Default |
|---|---|---|---|
| afterPath | Yes | path to the AFTER snapshot JSON | |
| beforePath | Yes | path to the BEFORE snapshot JSON |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses the output behavior (ranked alerts, likely cause, proposed fix), the meaning of status=fail, and the pure/headless nature (two snapshot files). This fully informs the agent of the tool's operational impact and safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but each sentence contributes value, with examples of regressions adding clarity. It is front-loaded with the core comparison action. While not as terse as the highest standard, it is efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description explains the return semantics (ranked alerts, status) and the tool's use case (refresh validation). It does not mention prerequisites like prior snapshot creation (sibling sentinel_snapshot), but for a two-parameter pure function, the coverage is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already defines beforePath and afterPath clearly as BEFORE and AFTER snapshot JSON paths. The description adds only minor context ('before vs after a refresh', 'two snapshot files'), which does not materially augment the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('compare') and resource ('two integrity snapshots'), clearly differentiating from siblings like sentinel_snapshot (which likely creates snapshots) and quality_gate. It explicitly states the before/after refresh context, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool ('before vs after a refresh') and provides a critical interpretation guideline ('status=fail means a report is now WRONG - do not trust the refresh'). However, it does not explicitly name any alternatives or state when not to use it, which would elevate it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sentinel_snapshotA
Sentinel (the trust layer): take a model integrity snapshot - grand total, per-table row counts, per-group totals, and per-measure health - and optionally write it to a file. Take one before and one after a refresh (or any change), then sentinel_diff them to catch a regression - a vanished category, collapsed rows, a newly-broken measure - the instant it happens. CI/observability for BI.
| Name | Required | Description | Default |
|---|---|---|---|
| outPath | No | write the snapshot JSON to this path so you can diff it later | |
| maxGroups | No | max grouping columns to capture (default 14) | |
| sessionId | Yes | ||
| anchorMeasure | No | measure to anchor totals (default: first model measure) | |
| maxValuesPerGroup | No | only capture columns with at most this many distinct values (default 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses that the tool can optionally write to a file ('optionally write it to a file'), and the term 'snapshot' implies a non-destructive read operation. It also describes the contents of the snapshot, but does not explicitly state whether it mutates the model or require any permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but highly informative, with three sentences that cover purpose, workflow, and value proposition without unnecessary padding. It is front-loaded with the core function and uses a clear analogy ('CI/observability for BI') to reinforce its role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 params, no output schema, no annotations), the description provides a complete picture: what it does, what it captures, how to use it in a workflow, and its optional side effect. No output schema means the description doesn't need to detail return values, and the schema covers parameter specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 80%, with descriptions for outPath, maxGroups, anchorMeasure, and maxValuesPerGroup. The tool description does not add meaning beyond what the schema already provides; it only references the optional file write, which mirrors the outPath parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a 'model integrity snapshot' and lists exactly what it captures: grand total, per-table row counts, per-group totals, and per-measure health. It also distinguishes itself from the sibling sentinel_diff by positioning the snapshot as the input for diffing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Take one before and one after a refresh (or any change), then sentinel_diff them to catch a regression.' It also references the companion tool sentinel_diff and frames the tool as 'CI/observability for BI', thus specifying when it should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_aggregationA
Define a user-defined AGGREGATION: mark a column on a (typically pre-aggregated) detail table as the aggregate of a base column or table, so the engine can transparently answer queries from the smaller table. summarization = GroupBy | Sum | Count | Min | Max. For GroupBy, baseColumnOrTable is a Table[Column]; for the aggregate functions it's the base table name (or a Table[Column]).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the detail/aggregation table the column is on | |
| sessionId | Yes | ||
| detailColumn | Yes | the column being mapped | |
| summarization | Yes | GroupBy | Sum | Count | Min | Max | |
| baseColumnOrTable | Yes | the base column (Table[Column]) for GroupBy, or the base table name for Sum/Count/Min/Max |
TDQS
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 explains the engine's ability to 'transparently answer queries from the smaller table' and clarifies the semantic difference for GroupBy vs aggregate functions. However, it does not mention potential overwrites, reversibility, prerequisite conditions, or effects on existing model relationships.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by essential parameter specifics. No filler words or redundant content. Perfectly concise for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema, the description explains the core concept and parameter roles well. It lacks concrete examples or edge-case guidance (e.g., what happens if the base column doesn't exist), but the conceptual model is sufficiently complete for an agent to understand when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%), with only sessionId undocumented. The description adds conceptual meaning about how baseColumnOrTable and summarization interact, but this largely restates schema descriptions. It does not provide additional detail on format, defaults, or validation, so it meets baseline but no more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool defines a user-defined AGGREGATION, marking a column on a detail table as the aggregate of a base column/table. It includes the specific verb 'Define' and the resource, and explains the goal (transparently answer queries from the smaller table). This distinguishes it from sibling set_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this when you have a typically pre-aggregated detail table and want to map a column to a base column/table for query optimization. It does not explicitly name alternatives or exclusions, but the purpose is distinct enough from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_alt_textA
Set a visual's ACCESSIBILITY ALT TEXT (read by screen readers): written to singleVisual.objects.general.altText.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| text | Yes | the alt text | |
| visual | Yes | visual name (from list_visuals) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It reveals the underlying write target (general.altText) but does not disclose potential side effects, permissions needed, or whether it overwrites existing alt text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the main action and adds a useful technical detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward setter with clear schema coverage, the description adequately explains what the tool does and where it writes. It could mention overwrite behavior or prerequisites, but the simplicity of the operation makes it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with descriptions for page, visual, and text. The description adds context for the 'text' parameter by linking it to the altText property, but does not otherwise enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting a visual's accessibility alt text, with the specific target property (singleVisual.objects.general.altText). It distinguishes itself from sibling set_* tools by focusing on alt text for screen readers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of use is implied: use for setting alt text for accessibility. However, it does not explicitly mention when to choose this over other tools or any exclusions, so guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_annotationA
Set a name/value annotation on any model object: objectType = model | table | column | measure | hierarchy | partition. Pass the object's table for column/measure/hierarchy/partition. Replaces a same-named annotation. Annotations are free-form metadata that survive serialization (used by tooling like Tabular Editor).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | annotation name | |
| table | No | the object's table (required for column/measure/hierarchy/partition) | |
| value | Yes | annotation value | |
| sessionId | Yes | ||
| objectName | Yes | the object's name (the model name for objectType=model) | |
| objectType | Yes | model | table | column | measure | hierarchy | partition |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool replaces same-named annotations and that annotations survive serialization, which are meaningful behavioral traits. However, it does not mention permissions, side effects beyond replacement, or return/error behavior. The description adds useful context but misses some aspects expected for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four concise sentences that front-load the core purpose. It avoids fluff and every sentence adds value (purpose, table guidance, replacement behavior, serialization context). It's slightly redundant with the schema's objectType list, but that's acceptable for a readable description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema or annotations, but the description covers the essential aspects: what the tool does, which object types are supported, the table requirement, replacement behavior, and persistence. It doesn't discuss return values or errors, but for a straightforward 'set' operation this seems adequately complete for tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the baseline is 3. The schema already describes objectType allowed values, objectName usage, and table requirement. The description reinforces the table requirement and adds conceptual context (free-form metadata), but it doesn't significantly clarify parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Set' and identifies the resource as a 'name/value annotation' on any model object, listing supported object types. It clearly distinguishes from sibling tools like set_extended_property or set_display_folder by emphasizing annotations as free-form metadata and naming object types (model, table, column, measure, hierarchy, partition).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying when to use the tool (for annotations on various object types) and how to handle the table parameter for column/measure/hierarchy/partition. It also notes that annotations are used by tooling like Tabular Editor. It doesn't explicitly name alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_axisB
Configure a chart axis. axis = x (category) or y (value): toggle the axis and its title, set the value-axis start/end, display units (None|Thousands|Millions|Billions|Auto), and gridlines.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | value-axis max | |
| axis | No | x (category) | y (value) | y |
| show | No | ||
| start | No | value-axis min | |
| pageName | Yes | ||
| gridlines | No | ||
| showTitle | No | show the axis title | |
| visualName | Yes | ||
| displayUnits | No | None|Thousands|Millions|Billions|Auto | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose effects and prerequisites, but it only lists configurable options. It does not say whether changes are reversible, whether permissions are needed, or what happens when values are null, nor does it describe return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core purpose, and every clause covers a distinct setting. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-param tool with no annotations/output schema, the description packs in most behavioral semantics for the configurable fields. It lacks explicit guidance on the session/page/visual targeting parameters and return behavior, but the core functionality is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers only 5 of 10 parameters, but the description adds meaning by explaining axis values, the value-axis start/end, display units enum, and gridline toggling. It maps well to the schema and compensates for the other half, though it does not elaborate on targeting parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose with a specific verb+resource ('Configure a chart axis') and enumerates the settings it controls. It does not explicitly contrast with sibling tools like set_play_axis, but the x/y category-vs-value framing makes the target clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is present, and no alternatives are mentioned. The description implies it is for axis configuration, but competing tools like set_play_axis exist, so an agent would have no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_azuremap_layer_sourceA
Set an azureMap data layer source. layer=reference: a reference layer from a local .json/.geojson file (embedded), an http(s) URL, or an inline GeoJSON string. layer=tile: a custom tile-layer URL TEMPLATE (e.g. https://.../{z}/{x}/{y}.png). Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| layer | Yes | reference | tile | |
| source | Yes | file path, URL, inline GeoJSON, or tile URL template | |
| visual | Yes | azureMap visual name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains accepted source formats and gives a verification tip, but does not disclose side effects (e.g., whether it overwrites the existing layer source, prerequisites, or failure behavior). This is adequate but leaves gaps in understanding the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the primary action, and uses whitespace to separate the two layer modes. Every sentence provides essential information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 required parameters, no annotations, and no output schema, so the description should compensate. It explains the core layer/source logic but omits context about the required reportSessionId (no schema description) and how this tool integrates into the broader workflow. The 'Verify in Desktop' tip is useful but does not fill all gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description significantly enriches the schema's parameter definitions. It clarifies what 'reference' means for the layer parameter and provides a concrete tile URL template example for the source parameter. This goes beyond the schema's brief descriptions, adding practical value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set an azureMap data layer source', with a specific verb and resource. It also distinguishes between the two layer types (reference and tile) with concrete examples, making it unmistakable from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use each layer type: reference layers for local files/URLs/inline GeoJSON, and tile layers for URL templates. It also advises to 'Verify the render in Desktop', implying a post-action step. However, it does not explicitly mention alternatives or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bookmark_data_stateA
Re-capture an existing bookmark's DATA state from the page's CURRENT live state: filter/slicer values, saved sort, drill position and cross-highlight (not just which visuals are shown). This is the 'update bookmark with current data' action. Keeps the bookmark's hidden/shown visuals. page (optional) re-anchors which page is captured (defaults to the bookmark's active page).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page to capture (omit = the bookmark's active page) | |
| bookmark | Yes | bookmark name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It clearly details what gets captured, notes that hidden/shown visuals are preserved, and explains the optional page parameter's behavior (re-anchoring to a different page and defaulting to the bookmark's active page). It does not mention error conditions or prerequisites (e.g., bookmark must exist), which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with a precise action and scope. Each sentence provides useful detail. The phrase 'This is the “update bookmark with current data” action' is slightly redundant but reinforces the tool's role, and the overall length is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description adequately explains the core operation, enumerates the data state aspects captured, notes preservation of visual visibility, and clarifies the page parameter's behavior. It lacks explicit failure-mode or prerequisite guidance, but these are not essential given the straightforward input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (bookmark and reportSessionId are each described; page has a schema description too). The description adds slight nuance to 'page' ('re-anchors which page is captured') but the schema already states 'page to capture (omit = the bookmark's active page),' so the added value is minimal. No new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Re-capture an existing bookmark's DATA state from the page's CURRENT live state.' It enumerates exactly what data is captured (filter/slicer values, saved sort, drill position, cross-highlight) and explicitly differentiates this from merely changing which visuals are shown, distinguishing it from sibling tools like set_bookmark_options or update_bookmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the clarifying phrase 'This is the “update bookmark with current data” action,' which provides strong context for when to use the tool. It implies this is the standard way to refresh a bookmark's data state, but it does not explicitly name alternative tools or state when not to use it, 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.
set_bookmark_optionsA
Set a bookmark's OPTIONS - the Data / Display / Current-page / Selected-visuals toggles. suppressData=true turns DATA off, suppressDisplay=true turns DISPLAY off, suppressActiveSection=true turns CURRENT-PAGE off. targetVisuals = JSON array of visual names to scope the bookmark to those visuals (empty array clears the scope). Only the supplied options change.
| Name | Required | Description | Default |
|---|---|---|---|
| bookmark | Yes | bookmark name or displayName | |
| suppressData | No | suppress DATA (capture display only) | |
| targetVisuals | No | JSON array of visual names to scope to (omit = leave as-is, [] = clear) | |
| reportSessionId | Yes | ||
| suppressDisplay | No | suppress DISPLAY (capture data only) | |
| suppressActiveSection | No | suppress the CURRENT-PAGE switch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It explains what each flag does (suppressData turns DATA off, etc.), clarifies the partial update behavior ('Only the supplied options change'), and defines targetVisuals semantics. It does not discuss error handling or return values, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loads the main purpose, and every sentence adds necessary detail. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers all key parameters and the partial-update behavior. It omits context on reportSessionId and return values, but for a setter tool it is largely self-contained and understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the baseline is 3. The description adds meaningful conceptual mappings beyond the schema, such as linking suppressData to DATA and explaining targetVisuals as a JSON array. This deepens understanding, though reportSessionId remains unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource ('Set a bookmark's OPTIONS') and clearly enumerates the Data/Display/Current-page/Selected-visuals toggles. It distinguishes itself from sibling tools by focusing solely on bookmark options, avoiding confusion with set_bookmark_data_state or update_bookmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about what the tool does but never explicitly states when to use it versus alternatives like set_bookmark_data_state or update_bookmark. Usage is implied through the option names, yet no exclusions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_button_state_cfB
Measure-driven per-STATE button formatting: a measure returning a hex colour drives a button's fill/text/icon colour for a given state. state=default|hover|pressed|selected; target=fill|text|icon. button is the actionButton's visual name. colorMeasure = "Table[Measure]".
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| state | No | default | hover | pressed | selected | default |
| button | Yes | the button visual name | |
| target | No | fill | text | icon | fill |
| colorMeasure | Yes | the colour measure, "Table[Measure]" | |
| reportSessionId | Yes | ||
| colorMeasureTable | No | the measure's table (if not embedded in colorMeasure) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral disclosure burden. It explains the input semantics well but does not disclose side effects such as whether existing button formatting is overwritten, whether changes are reversible, or any permissions required. As a mutation tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core purpose and then lists parameter semantics. It is dense but efficient, with no wasted words. Slightly more structure (e.g., separate sentences for each key concept) could improve readability, but it remains strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and key parameters, benefiting from high schema coverage. However, it omits usage guidance and behavioral side-effect disclosure, and with no output schema or annotations, it leaves the full operational context incomplete. It is adequate but not comprehensive for a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (86%), so the baseline is 3. The description clarifies the format of colorMeasure and the meaning of state/target, but these are largely already present in the schema. It adds minimal extra meaning beyond the structured field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Measure-driven per-STATE button formatting' where a measure's hex color drives fill/text/icon colors for a given state. It explicitly enumerates state and target values, distinguishing this from generic conditional formatting or other button-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for per-state button color formatting driven by a measure) but does not explicitly compare with alternative tools like set_conditional_formatting or set_web_url_cf. No exclusions or precise alternatives are given, making the usage context clear but not fully delimited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_calc_group_precedenceA
Set a calculation group's Precedence - when multiple calculation groups apply, the HIGHER precedence is evaluated last (outermost). Run on a table that is already a calculation group.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the calculation-group table | |
| sessionId | Yes | ||
| precedence | Yes | precedence value (higher applies last) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It correctly explains the effect on evaluation order and states a prerequisite, which adds useful context. However, it does not disclose potential validation errors, whether the operation is destructive, or what the return value is—gaps typical for a mutation tool without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences. The first explains the action and semantics, the second provides the prerequisite. No unnecessary words or repetition, and it is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with no output schema, this description covers the core meaning, the prerequisite, and the evaluation-order context. It does not describe return values or error behavior, but given the moderate complexity, the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with sessionId lacking a description. The description reinforces the meaning of 'precedence' by restating 'higher applies last', which matches the schema, but it adds no new parameter-level detail. The prerequisite about the table being a calculation group aligns with the table parameter description, providing some extra context, but sessionId remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Set' and resource 'calculation group's Precedence', and clarifies the key semantics: 'HIGHER precedence is evaluated last (outermost)'. This clearly distinguishes it from sibling tools like set_calc_item_ordinal or add_calculation_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: 'when multiple calculation groups apply' and a clear prerequisite: 'Run on a table that is already a calculation group'. It gives clear conditions but does not explicitly name alternatives or when-not-to-use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_calc_group_selection_expressionsA
Set a calculation group's NoSelectionExpression and/or MultipleOrEmptySelectionExpression - the DAX returned when no / multiple calc items are selected - with optional dynamic format strings. Needs compatibility level 1605+ (auto-bumped, reported back).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| noSelectionExpression | No | DAX run when NO calc item is selected (optional) | |
| noSelectionFormatString | No | dynamic format string for the no-selection expression (optional) | |
| multipleOrEmptyFormatString | No | dynamic format string for the multiple/empty expression (optional) | |
| multipleOrEmptySelectionExpression | No | DAX run when MULTIPLE or empty selection (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It discloses an important side effect: 'auto-bumped, reported back' regarding compatibility level. However, it does not mention whether existing expressions are overwritten, whether the operation is reversible, or any permission requirements. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, then adds the key prerequisite and behavioral note. No redundant words, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters (2 required), no output schema, and no annotations, the description gives a clear purpose and the compatibility constraint, but it omits how to identify the calculation group (likely via the table parameter), the exact effect of setting null values, and what 'reported back' means. The description is reasonably complete for an expert but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (4 of 6 params described). The description adds context to the parameters by explaining the NoSelectionExpression and MultipleOrEmptySelectionExpression concepts and noting optional dynamic format strings. However, it does not illuminate the required sessionId/table parameters, and the schema descriptions already cover the optional ones well, so the extra value is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb 'Set' and a specific resource: 'a calculation group's NoSelectionExpression and/or MultipleOrEmptySelectionExpression'. It further explains what these expressions are ('the DAX returned when no / multiple calc items are selected'), which distinguishes it from other calc-group tools like set_calc_group_precedence or set_calc_item_ordinal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool is relevant (setting expressions for no/multiple selection states) and a critical prerequisite ('Needs compatibility level 1605+'), but it does not explicitly mention alternative tools or when not to use this tool. Still, the guidance is clear enough for an experienced agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_calc_item_ordinalA
Set a calculation item's Ordinal - its display/sort order within the calculation group (lower shows first).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the calculation-group table | |
| ordinal | Yes | display order ordinal (lower first) | |
| itemName | Yes | the calculation item name | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the ordinal controls display order and that lower values show first, which is useful. However, it does not mention permissions, side effects on other items, or whether changes are saved immediately. Thus a score of 3 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler words. It front-loads the action and immediately explains the meaning of ordinal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the effect and meaning of the ordinal but does not address when this tool is preferable to update_calculation_item or what errors might occur. For a simple setter with no output schema and no annotations, it covers the essential domain info but lacks guidance on prerequisites and edge cases, hence 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 3 of 4 parameters (table, ordinal, itemName) at 75% coverage. The description adds the conceptual link that the ordinal belongs to a calculation item within a group, but it does not add new parameter-level details beyond the schema. The ordinal semantics are almost identical in both, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Set' and identifies the exact resource: 'a calculation item's Ordinal' and its purpose as 'display/sort order within the calculation group'. This clearly distinguishes it from other calc item tools like add/delete/update_calculation_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the context ('display/sort order within the calculation group') and implies when to use it, but it does not explicitly mention alternatives or when not to use it. The context is clear enough for a 4, but not a 5 due to lack of explicit sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_canvas_presetA
Set a page's canvas to a named PRESET: 16:9 (1280x720), 4:3 (1024x768), letter (816x1056), tooltip (320x240) or mobile (320x568). preset=custom needs width+height. Writes the section size + pageSize object.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| width | No | width in px (preset=custom) | |
| height | No | height in px (preset=custom) | |
| preset | Yes | 16:9 | 4:3 | letter | tooltip | mobile | custom | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool 'Writes the section size + pageSize object', which is a key behavioral effect. However, it does not mention whether the operation overwrites existing settings, requires specific permissions, or is reversible. The disclosure is partial but useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary action, and includes only necessary details: the preset list and the custom requirement. Every sentence contributes to understanding the tool's functionality and parameter usage, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description sufficiently covers the tool's core behavior for a mutation tool: what it sets (canvas preset), how to use custom dimensions, and what object it writes. Given the absence of an output schema, it does not need to explain return values. Minor omissions like mention of reportSessionId or page selection details are acceptable given the schema covers them, but the description could be slightly more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by enumerating the valid presets with their exact dimensions (e.g., '16:9 (1280x720)'), which is not fully captured in the schema's enum list. It also clarifies the relationship between 'preset=custom' and the width/height parameters. This supplements the 80% schema coverage effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set a page's canvas to a named PRESET'. It lists specific presets and dimensions, distinguishing it from sibling tools that handle other page or visual settings. The verb 'set' and the resource 'page's canvas' make the action and scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context for the 'custom' preset by noting it 'needs width+height', but it does not explicitly state when to use this tool versus alternatives like set_page_display or resize_page. The guidance is implied from the preset list but lacks explicit exclusionary or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_card_imageA
Set a hero/callout IMAGE on a cardVisual (the new card's image element). imageUrlOrPath = a local file (embedded) or an http(s)/data URL. fit = Fit|Fill|Normal. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | Fit|Fill|Normal | |
| page | Yes | page name or displayName | |
| visual | Yes | cardVisual name | |
| imageUrlOrPath | Yes | local image file or http(s)/data URL | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining side effects. It discloses that imageUrlOrPath can be a local file (embedded) or a URL, and mentions fit options, but does not mention permissions, reversibility, or impact on existing visuals. The instruction to verify in Desktop adds a practical note but not a full behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every phrase earns its place (target, parameter clarification, fit values, verification). No waste or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema or annotations, the description covers the core purpose and parameter meanings but misses broader context like prerequisites (must be a cardVisual), side effects on existing images, and whether the action is reversible. It is adequate for a simple setter but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents most parameters. The description mostly reiterates schema text (e.g., 'local file (embedded) or an http(s)/data URL' matches the schema). It does not add deeper meaning beyond the schema, such as accepted formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Set a hero/callout IMAGE on a cardVisual (the new card's image element).' It names the exact resource (cardVisual) and distinguishes from sibling tools like set_image_source or add_image by specifying the 'new card's image element' and 'hero/callout' context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cardVisual image setting but does not explicitly say when to use this tool versus alternatives. It includes a practical instruction 'Verify the render in Desktop' but lacks explicit exclusions or comparisons to similar visual tools, so it only vaguely guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_color_scaleA
Apply a GRADIENT colour scale to a visual property driven by a measure - the signature enterprise feature. e.g. colour a table value's background light->dark by [Total Sales]. objectName/propertyName presets: dataPoint/fill (chart bars/columns), values/backColor (table/matrix cell background), values/fontColor (text colour). Pass a centerColor for a 3-colour (diverging) scale. Data min/max is auto-computed. For DISCRETE colour bands by value range instead, use set_conditional_formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| measure | Yes | measure that drives the colour | |
| maxColor | No | hex colour for the high end | #16365C |
| maxValue | No | explicit data value for the high colour (omit for auto) | |
| metadata | No | for a TABLE/MATRIX column: the column's queryRef e.g. 'Dim_Product.Brand' so the colour scale targets that column's background. Omit for charts. | |
| midValue | No | explicit data value for the middle colour | |
| minColor | No | hex colour for the low end | #EAF1F7 |
| minValue | No | explicit data value for the low colour (omit for auto) | |
| pageName | Yes | ||
| objectName | No | dataPoint | values | (any formatting object) | dataPoint |
| visualName | Yes | ||
| centerColor | No | optional middle colour for a diverging scale | |
| measureTable | Yes | table that owns the measure | |
| propertyName | No | fill | backColor | fontColor | fill |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: data min/max is auto-computed, centerColor enables a diverging scale, and objectName/propertyName presets target specific visual elements. It does not explicitly mention reversibility, permissions, or potential side effects, but for a formatting tool these are generally inferred. The added detail goes well beyond a bare description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise despite carrying substantial detail. It front-loads the core purpose, then supplies examples and presets in a structured way. The phrase 'the signature enterprise feature' is slightly promotional but does not harm clarity. Overall, each sentence contributes useful information with minimal fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 14 parameters and no output schema, the description is remarkably complete. It covers the core action, provides example use cases, lists parameter presets, explains auto-computed min/max, describes diverging scales, and points to an alternative. It also notes when metadata should be omitted. This matches the completeness expected for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 79%, so the schema already explains most parameters. The description adds extra meaning for ambiguous parameters: it explains valid objectName/propertyName combos (e.g., 'dataPoint/fill', 'values/backColor'), notes that metadata is for table/matrix columns and should be omitted for charts, and clarifies the role of centerColor for diverging scales. This exceeds the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Apply a GRADIENT colour scale to a visual property driven by a measure.' It immediately distinguishes itself from set_conditional_formatting by noting that tool is for discrete colour bands, and it provides concrete examples of visual properties (dataPoint/fill, values/backColor, values/fontColor). This is a specific verb+resource+scope that differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it gives examples of when to use this tool (colouring a table value's background, chart bars, etc.) and explicitly points to an alternative for a different scenario: 'For DISCRETE colour bands by value range instead, use set_conditional_formatting.' This satisfies the 'when/when-not/alternatives' requirement at a high level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_data_categoryA
Set a column's data category so the report layer treats it specially, e.g. Address, City, Continent, Country, County, Latitude, Longitude, Place, PostalCode, StateOrProvince, WebUrl, ImageUrl, BarcodeText. (For format + category in one call use format_column.)
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| category | Yes | category, e.g. City | Latitude | WebUrl | ImageUrl | BarcodeText | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals the effect on the report layer ('treats it specially') but does not mention whether the change is persistent, destructive, or requires permissions. It also doesn't explain behavior on invalid category values or whether existing categories are overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack the purpose, examples, and an alternative reference with zero filler. The key information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata-setting tool, the description covers the core behavior, gives concrete category examples, and points to format_column for combined use. It lacks details on side effects or prerequisites, but the tool's low complexity makes the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only category has a description). The description compensates by providing a rich list of example categories, adding value beyond the schema. The other parameters (sessionId, table, column) are self-explanatory, so the lack of description for them is not a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'a column's data category', and explicitly explains the purpose: 'so the report layer treats it specially.' It also distinguishes the tool from siblings by listing example categories and cross-referencing format_column for combined operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit alternative: 'For format + category in one call use format_column.' This tells the agent when to choose this tool over format_column. It also gives context about the report layer behavior, implying this is for category-only updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_data_typeB
Set a column's data type. dataType = String | Int64 | Double | Decimal | DateTime | Boolean | Binary. A refresh is required for the change to take effect on imported data.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| dataType | Yes | String | Int64 | Double | Decimal | DateTime | Boolean | Binary | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses that a refresh is required for the change to take effect on imported data, which is key behavioral context. However, it omits other important traits such as whether the operation is destructive, reversible, or requires special permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It front-loads the core purpose and includes the critical refresh caveat in a compact format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter, the description is minimally adequate but not rich. It mentions the refresh behavior but does not explain the expected return value, error cases, or any prerequisites for using the tool. The lack of an output schema and annotations makes the description the sole source, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'dataType' is described). The description repeats the dataType enumerations already present in the schema but adds no meaning for 'sessionId', 'table', or 'column', whose names are self-explanatory but not formally defined. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a column's data type') and the resource (column). However, it does not distinguish this tool from the similar sibling 'change_column_type', so it misses the differentiation required for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The mention of a refresh requirement is a condition but does not help the agent choose between this tool and similar ones like 'change_column_type' or 'detect_column_types'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_flagsA
Set a column's modelling flags (any subset; omitted flags are left unchanged): isKey (the table's key column), isNullable, isUnique, alignment (Left | Center | Right | Default), encodingHint (Hash | Value | Default - the VertiPaq encoding preference).
| Name | Required | Description | Default |
|---|---|---|---|
| isKey | No | mark/unmark as the table key | |
| table | Yes | ||
| column | Yes | ||
| isUnique | No | values are unique | |
| alignment | No | Left | Center | Right | Default | |
| sessionId | Yes | ||
| isNullable | No | allow nulls | |
| encodingHint | No | Hash | Value | Default (VertiPaq encoding hint) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses a critical update pattern: "any subset; omitted flags are left unchanged." It also provides enum values for alignment and encodingHint. It does not mention permissions, return values, or failure modes, but the partial-update semantics is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action, lists all relevant flags, and includes enum values inline. Every part earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, the description provides enough context to invoke it correctly: the target resource, the allowed flags, and the partial-update behavior. It does not describe return values or prerequisites, but those are not essential for this simple setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so the description does not need to fully compensate. It largely restates the schema's per-parameter descriptions, but adds the useful context that omitted optional flags remain unchanged. It does not explain required parameters like sessionId, table, or column beyond what the schema requires.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Set a column's modelling flags." It then enumerates the exact flags (isKey, isNullable, isUnique, alignment, encodingHint), which clearly differentiates this tool from other set_* siblings by naming the precise domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose: an agent would use this when wanting to modify a column's modelling flags. However, there is no explicit guidance on when not to use it or which sibling tool to prefer for related column operations, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_olsA
Object-level security: set whether a role can SEE a column. permission = None (column hidden + inaccessible to the role), Read (visible), or Default (inherit).
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | role name | |
| table | Yes | table the column is on | |
| column | Yes | column to secure | |
| sessionId | Yes | ||
| permission | Yes | Default | None | Read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the meaning of each permission value: None (hidden + inaccessible), Read (visible), and Default (inherit). This is meaningful behavioral context beyond the schema. However, it does not describe side effects, reversibility, or what 'inherit' refers to, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's category ('Object-level security'), and no filler. Each clause adds distinct information: the action, the permission values, and their meanings. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with no output schema and no annotations, the description covers the essential behavior and permission semantics. It is complete enough for an agent to invoke correctly. Minor gap: it doesn't explain what 'Default' inherits from (e.g., table-level default), but given the tool's simplicity, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3. The description adds value by clarifying the permission parameter's semantics (None/Read/Default), which the schema only lists as strings. It does not add much for role, table, or column, but the permission clarification lifts the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Object-level security: set whether a role can SEE a column.' It identifies a specific verb (set), resource (column), and the security context (object-level), which distinguishes it from table-level security or generic column visibility tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. It does not mention alternatives like set_table_ols or set_column_visibility, nor does it explain prerequisites such as existing roles or table/column existence. The only implicit usage signal is the phrase 'Object-level security,' which is not enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_column_visibilityA
Hide or show a column in the field list. Hidden columns still work in DAX and relationships - use to hide keys/sort columns.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| hidden | Yes | ||
| sessionId | Yes |
TDQS
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 reveals that hidden columns still work in DAX and relationships – a key behavioral trait. It does not mention other side effects or prerequisites, but for a simple toggle this is valuable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action, the second adds critical context and a use case. Every word earns its place – no fluff, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool, the description covers purpose, key behavior, and intended use. It omits prerequisites or error handling, but these are less critical given the tool's simplicity and the presence of a sessionId common to the suite. The output is self-contained enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It gives indirect meaning to the 'hidden' parameter via 'hide or show' and the behavior note, but does not explicitly explain table, column, or sessionId. The parameter names are fairly self-explanatory, but the description adds little beyond what the schema already reveals.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Hide or show a column in the field list' – a specific verb, resource, and scope. It distinguishes itself from siblings like set_column_flags or set_visual_visibility by focusing on field list visibility, and adds the important nuance that hidden columns still work in DAX and relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context with 'use to hide keys/sort columns' and clarifies that hidden columns remain functional, which guides when to hide rather than delete. It does not explicitly name alternatives or exclusions, but the context 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.
set_conditional_formattingA
Apply DISCRETE rule-based BACKGROUND colour bands to a measure column in a table/matrix: each value in [min, max) renders its band colour. rules = JSON array of {min, max, color} (e.g. positive band #C6EFCE, negative band #e68f96). Writes the standard Power BI rule-based conditional-formatting structure (RuleDefinition rules with a >=min AND <max condition per band), NOT a gradient. For a smooth colour scale instead, use set_color_scale.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| rules | Yes | JSON array of {min, max, color} bands | |
| visual | Yes | table/matrix visual name | |
| measure | Yes | measure that drives the colour | |
| objectName | No | formatting object (default values for table/matrix) | values |
| measureTable | Yes | table that owns the measure | |
| propertyName | No | formatting property (default backColor) | backColor |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing the internal Power BI RuleDefinition structure ('>=min AND <max condition per band'), the [min, max) interval semantics, and the fact that it writes rule-based formatting rather than a gradient. It stops short of detailing overwrite behavior or permissions, but the implementation detail provided is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a parenthetical example, tightly packed with useful information. It front-loads the primary action, uses emphasis for key distinctions ('DISCRETE', 'NOT a gradient'), and avoids filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex (8 params, 6 required) with no output schema and no annotations, yet the description covers the core behavior, target visual type, rule structure, interval handling, and an alternative tool. Parameter descriptions in the schema handle most fields. Minor gaps like overwrite behavior and prerequisites don't undermine usefulness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (88%), so the baseline is 3. The description adds value by elaborating on the 'rules' parameter with a concrete JSON array format and color examples (#C6EFCE, #e68f96), and clarifies the interval semantics. It also reinforces that 'measure' drives the color. This goes beyond the bare schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Apply') and clearly identifies the resource ('BACKGROUND colour bands to a measure column in a table/matrix') and scope ('DISCRETE rule-based'). It explicitly distinguishes itself from set_color_scale by stating 'NOT a gradient', making it clear what this tool does and how it differs from a key sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by naming an alternative: 'For a smooth colour scale instead, use set_color_scale.' It also frames when to use this tool (for discrete bands) versus the alternative (smooth gradient), satisfying the when/when-not/alternatives requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cross_report_drillthroughA
Enable (or disable) CROSS-REPORT drill-through on a drill-through page so it can be a target from OTHER reports in the workspace. Writes the page pageBinding.referenceScope=CrossReport + flips the report useCrossReportDrillthrough setting. The page should already be set_page_type drillthrough with carried fields. Verify in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | the drill-through page name or displayName | |
| enable | No | true = enable cross-report, false = same-report only | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It reveals the exact settings written (pageBinding.referenceScope=CrossReport and useCrossReportDrillthrough) and advises verifying in Desktop, which adds meaningful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, front-loads the purpose, and each sentence adds value: purpose, implementation detail, and a prerequisite/verification note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, the description covers purpose, internal changes, and a prerequisite. It lacks error/edge-case handling details, but the provided information is sufficient for typical usage, making it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers two of three parameters with descriptions (page and enable), and the description reinforces their meaning through context. However, reportSessionId is left undocumented in both schema and description, so the description does not fully compensate for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables cross-report drill-through on a drill-through page, with a specific verb and resource. It also distinguishes this from sibling tools like set_page_type and set_drillthrough_fields by focusing on the cross-report targeting behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the page should already be set to drillthrough type with carried fields, implying when this tool is applicable. However, it does not explicitly name alternatives or when-not-to-use scenarios, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_custom_format_stringA
Set a measure's STATIC custom format string: a 3/4-section pattern positive;negative;zero;"text" with optional [Colour] codes and UNICHAR arrows (distinct from set_dynamic_format_string, the DAX-driven one). e.g. "[Green]▲ #,0;[Red]▼ #,0;0".
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the measure's table | |
| measure | Yes | the measure name | |
| pattern | Yes | the format pattern (3/4 sections separated by ;) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about the pattern structure (3/4-section, optional [Colour] codes, UNICHAR arrows) and gives an example. However, it does not state potential side effects such as overwriting an existing format, requirements for the measure to exist, or error handling behavior. While the format details are helpful, key behavioral traits remain unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that lead with the core purpose, provide the key syntactic details, and include a concrete example. No filler or redundancy. Every sentence earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description is complete enough for an agent to invoke the tool correctly. It defines the exact format pattern, gives a representative example, and distinguishes from the nearest sibling tool. The absence of output schema is acceptable for a setter tool, and the description covers all necessary input constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (table, measure, pattern are described, sessionId is not). The description adds significant meaning to the 'pattern' parameter by explaining the 3/4-section structure, optional codes, and providing an example. This goes beyond the schema's simple description. It also implicitly reinforces the 'measure' parameter by using 'measure's'. The uncovered sessionId is not addressed, but overall the description enhances parameter understanding meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set a measure's STATIC custom format string'. It also specifies the exact resource (measure) and the scope of the operation (format string), and explicitly distinguishes it from the sibling tool set_dynamic_format_string, which is the DAX-driven variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by contrasting with set_dynamic_format_string: 'distinct from set_dynamic_format_string, the DAX-driven one'. This tells the agent when to use this tool (for static format strings) and implicitly when to use the alternative (for DAX-driven formats). The example further clarifies the expected input format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_access_optionsA
Set Model.DataAccessOptions (any subset; omitted unchanged): fastCombine (ignore privacy levels for query folding IN this file - the in-file equivalent of disabling Privacy), legacyRedirects, returnErrorValuesAsNull. Needs compatibility level 1400+.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| fastCombine | No | ignore privacy levels in-file (fast combine) | |
| legacyRedirects | No | allow legacy redirects | |
| returnErrorValuesAsNull | No | return error values as null |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains that fastCombine ignores privacy levels in this file (in-file equivalent of disabling Privacy), that omitted parameters are unchanged, and that compatibility level 1400+ is required. It does not elaborate on return values or side effects beyond these, but the key behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action and resource, lists the options compactly, and closes with a necessary compatibility caveat. Every sentence contributes useful information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a setter with four parameters and no output schema, the description gives the essential purpose, parameter semantics, and an important prerequisite. It does not explain sessionId, but that is a common contextual element. It lacks details on return behavior or errors, but these are not expected for a mutation tool. Overall, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (three of four parameters described in schema). The description adds meaningful semantic nuance for fastCombine ('in-file equivalent of disabling Privacy'), which goes beyond the schema's simpler 'ignore privacy levels in-file' phrasing. For legacyRedirects and returnErrorValuesAsNull, the description repeats schema terms but does not add much; however, the fastCombine clarification earns a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets Model.DataAccessOptions and explicitly enumerates the three supported sub-options (fastCombine, legacyRedirects, returnErrorValuesAsNull). It distinguishes itself from siblings by focusing on the DataAccessOptions object and providing the in-file privacy context, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that any subset can be set and omitted options remain unchanged, giving clear usage intent. It also provides a critical precondition (compatibility level 1400+) and clarifies the semantic difference between fastCombine and globally disabling privacy, which aids in choosing when to use this tool. It stops short of explicitly mentioning alternatives or when not to use it, but it is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_barsA
Add DATA BARS to a measure column in a table/matrix: an in-cell bar whose length tracks the measure, with a positive colour and an optional negative colour. reverseDirection draws bars right-to-left; hideText shows the bar only (no value text); axisColor sets the zero-axis colour; minValue/maxValue pin the bar scale (omit for auto - the default fixes the old min==max bug where bars never rendered). Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | table/matrix visual name | |
| measure | Yes | measure that drives the bars | |
| hideText | No | show the bar only, hide the value text | |
| maxValue | No | explicit maximum bar value (omit for auto) | |
| minValue | No | explicit minimum bar value (omit for auto) | |
| axisColor | No | zero-axis colour hex (default #000000) | |
| measureTable | Yes | table that owns the measure | |
| negativeColor | No | optional negative bar colour hex e.g. #E81123 | |
| positiveColor | Yes | positive bar colour hex e.g. #1B8A4B | |
| reportSessionId | Yes | ||
| reverseDirection | No | draw bars right-to-left |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses parameter behaviors (reverseDirection, hideText, axisColor, minValue/maxValue) and even notes a bug fix for the min==max case. It does not cover side effects or reversibility, but provides substantial behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concisely structured: first sentence gives the primary purpose, second sentence lists parameter behaviors, and a final practical tip to verify in Desktop. Every sentence is informative with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavior and parameter effects, and the tip to verify in Desktop adds practical context. However, it does not explain prerequisites like needing an open session or how to locate the visual, though these are partially covered by the schema parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (92%), so baseline is 3. The description adds extra meaning by explaining how each parameter affects the visual (e.g., bars right-to-left, bar-only display, zero-axis colour) and the min/max bug fix, which is beyond the schema's default/type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds data bars to a measure column in a table/matrix, with a specific verb and resource. However, it does not explicitly distinguish this from sibling tools like add_svg_databar, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (for table/matrix visuals with measure columns) but provides no explicit alternatives or exclusions. There is no guidance on when to prefer this tool over similar bar-formatting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_colorA
Set a chart's data colour (the default series fill). For a branded single-measure chart, point this at a theme colour.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | hex colour e.g. #16365C | |
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clarifies what 'data colour' means (default series fill) but does not disclose side effects such as overwriting existing fills, whether changes are reversible, or if specific permissions or visual types are required. The mention of 'default series fill' adds some semantic value, but behavioral transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It leads with the primary action, adds a clarifying parenthetical, and finishes with a practical usage tip. Every part contributes value, making it well-structured and appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four required parameters, no output schema, and no annotations, the description is too sparse for full completeness. It explains what 'data colour' means but omits how to identify the visual (pageName/visualName), any prerequisites, expected effects, or return values. The description is not completely inadequate for a simple setter, but it leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'color' has a description). The description adds meaning for 'color' by explaining it as the default series fill and suggesting theme color usage, but it does nothing for reportSessionId, pageName, or visualName. These remain undocumented, and the description does not compensate for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Set a chart's data colour (the default series fill).' This explicitly distinguishes it from related sibling tools like set_theme_data_colors by clarifying that this targets the chart's data series fill, not theme-level colors. The parenthetical clarification adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'For a branded single-measure chart, point this at a theme colour.' This gives a concrete scenario and implies a recommendation, though it does not explicitly mention alternatives or when not to use the tool. It earns a 4 for giving relevant context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_coverageA
Set a partition's data coverage definition (DataCoverageDefinition) - a DAX boolean telling the engine which data a DirectQuery partition covers, so a hybrid Import+DirectQuery table can answer in-range queries from the cheaper imported partition. Defaults to the table's first partition.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| partition | No | partition name (optional; defaults to the first partition) | |
| sessionId | Yes | ||
| daxExpression | Yes | DAX boolean expression describing the partition's coverage, e.g. "'Sales'[OrderDate] >= DATE(2024,1,1)" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It reveals the default behavior (first partition) and the meaning of the DAX expression, but does not disclose side effects, permissions, or error behavior. It adds some value but has gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence that front-loads the action and rolls in the purpose and default behavior. No wasted words, though it could be split for readability without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a set operation without an output schema, the description covers what, why, and the default, which is largely sufficient. It omits prerequisites like requiring an existing partition or handling of invalid DAX, but these are implied by the domain. Complete enough for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with table and sessionId lacking descriptions. The description clarifies partition default and daxExpression purpose, but does not compensate for the undocumented sessionId and table params. Adds meaning but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Set') and resource ('partition's data coverage definition'), plus explains the DAX boolean and hybrid table context. This clearly distinguishes it from sibling tools like set_partition_m and set_partition_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use for hybrid Import+DirectQuery tables to let in-range queries use the cheaper imported partition. It implies when to use but does not explicitly mention alternatives or exclusions, which aligns with 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_labelsA
Show/hide data labels on a chart, with optional display units (None|Thousands|Millions|Billions|Auto) and decimal places.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | ||
| decimals | No | ||
| pageName | Yes | ||
| visualName | Yes | ||
| displayUnits | No | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It does convey the core mutation (show/hide) and the configurable units/decimals, but it does not mention reversibility, scope (only the identified visual), or whether units/decimals apply only when labels are shown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and object, no filler. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter, the description is almost adequate, but with no annotations or output schema it leaves some gaps: supported chart types, relationship between show and decimals/displayUnits, and effect on existing label formatting. Still, combined with the schema an agent can invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 0% of parameters, but the description maps 'show/hide' to show, lists allowed displayUnits values (None|Thousands|Millions|Billions|Auto), and explains decimals. This is valuable because the schema has no enums or descriptions; the required IDs remain self-explanatory by name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action ('Show/hide') on a specific resource ('data labels on a chart') and lists the configurable aspects. It does not explicitly differentiate from the many other set_* visual tools, but the resource and options are clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance is provided; it only implies that this is for toggling data labels on a chart. With dozens of sibling formatting setters, this does not help the agent decide when to choose this over set_visual_title or set_axis, but it is not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_sourceA
Create or update a first-class DataSource object (separate from raw M partitions). kind = Structured (modern Power Query - connectionDetails and credential are each a flat JSON object of key/value pairs, e.g. connectionDetails={"protocol":"tds","server":"srv","database":"db"}) or Provider (legacy - connectionString + provider + impersonation = Default | ImpersonateAccount | ImpersonateAnonymous | ImpersonateCurrentUser | ImpersonateServiceAccount | ImpersonateUnattendedAccount). Replaces a same-named data source in place.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Structured | Provider | |
| name | Yes | ||
| provider | No | (Provider) the OLE DB/provider name | |
| sessionId | Yes | ||
| credential | No | (Structured) flat JSON object of credential key/value pairs | |
| impersonation | No | (Provider) impersonation mode | |
| connectionString | No | (Provider) the connection string | |
| connectionDetails | No | (Structured) flat JSON object of connection-detail key/value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently states that the tool 'replaces a same-named data source in place' and explains the structured vs provider behavior with detailed field requirements. While it does not mention permissions, rate limits, or rollback behavior, it reveals the key mutating/replacement semantic and the two distinct configuration modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes value. It packs a lot of detail (kind distinctions, JSON requirement, impersonation enum, replacement behavior) without fluff. It is slightly long but appropriately so given the dual-mode nature of the tool. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, no-output-schema tool, the description covers the core behavior (create/update, replace-in-place, kind-specific parameters) and provides examples. It does not describe return values or error conditions, but with no output schema and a well-scoped purpose, it is adequately complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the input schema: it explains the 'kind' values, groups parameters by kind, specifies that connectionDetails and credential are flat JSON objects with an explicit example, and enumerates all impersonation modes (Default, ImpersonateAccount, etc.). This is more than the schema's terse descriptions provide, making the parameters actionable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Create or update a first-class DataSource object (separate from raw M partitions).' This clearly distinguishes the tool from siblings like set_data_coverage or set_data_labels by scoping it to DataSource objects, and it clarifies the two kinds (Structured vs Provider). The purpose is unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use Structured vs Provider kinds, including the parameter shapes for each (connectionDetails/credential vs connectionString/provider/impersonation). It does not explicitly name alternative tools or state when not to use this tool, but the context is strong enough that an agent can infer appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_detail_rowsA
Define drillthrough detail rows - the DAX table returned when a user drills into a measure value (or the table's default). Set measure for a per-measure definition, or omit it to set the table's default detail rows. daxTableExpression is a DAX table expression, e.g. "SELECTCOLUMNS('Sales', ...)".
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table (the measure's table, or the table whose default rows you're setting) | |
| measure | Yes | measure name for a per-measure definition; omit for the table default | |
| sessionId | Yes | ||
| daxTableExpression | Yes | DAX table expression returning the detail rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It explains the two modes and gives an example DAX expression, which is helpful. But it does not disclose potential side effects (e.g., overwriting existing detail row definitions), validation of the DAX expression, or whether the change is immediate or transactional. The core behavior is clear, but edge-case behavior is undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every clause contributes meaning. The example is illustrative without being verbose. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core operation and parameter semantics but omits important contextual details: the meaning of sessionId is not explained, and there are no caveats about validation, reversibility, or interaction with existing drillthrough settings. Given the tool has no annotations and no output schema, a slightly more thorough description would be expected, though the current text is not inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is 3. The description adds semantic value beyond the schema by explaining that a null measure sets the table default, and by providing an example DAX expression for daxTableExpression. It does not mention sessionId, but that parameter appears to follow standard session conventions and is not critical to understanding the tool's operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose with a specific verb ('Define drillthrough detail rows') and clearly explains the resource (DAX table returned on drillthrough). It distinguishes between per-measure and table-default modes, effectively differentiating from the sibling set_table_detail_rows by covering both use cases. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit instructions for when to include a measure (per-measure definition) versus omit it (table default). This gives clear context for the primary decision an agent must make. However, it does not explicitly mention alternative tools like set_table_detail_rows or state when to prefer this tool over that sibling, so exclusions are missing but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_display_folderA
Set the display folder for a measure or a column - groups fields into folders in the field list (e.g. 'Key Measures', 'Time Intelligence'). Use a backslash for nested folders, e.g. 'Sales\\Margins'.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the table the measure/column lives on | |
| folder | Yes | folder path (empty string clears it) | |
| target | Yes | the measure or column name | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds useful behavioral details like the backslash syntax for nested folders and the grouping purpose, but it does not disclose side effects (e.g., whether empty string clears the folder, any persistence behavior, or error conditions). It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the action and followed by a concrete example. Every sentence contributes to understanding the operation and the folder path syntax, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with 4 required parameters and no output schema, the description provides enough context to understand the operation, including the folder hierarchy example. It does not cover the clearing behavior (empty string) in the description, but that appears in the schema. Overall, it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters with descriptions. The description adds contextual meaning by clarifying the folder concept and nesting syntax, and identifies target as measure/column. It does not map all parameters to the description, but it complements the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set the display folder') and the target ('a measure or a column'), with examples of use. It distinguishes this from sibling tools by focusing specifically on display folder assignment, which is unique among the 'set_*' tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining what display folders are and how to structure them with backslashes, but it does not explicitly state when to choose this tool over alternatives or describe any preconditions or exclusions. It provides clear context but no comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_drilldownA
Set DRILL-DOWN behaviour on a visual with a drillable (hierarchy/multi-level) axis: expandToNextLevel (a click expands to the next level rather than drilling) and drillOnClick (single-click drills). Seeds the saved drill state (expansionStates). Set at least one toggle.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name (from list_visuals) | |
| drillOnClick | No | single-click drills down | |
| reportSessionId | Yes | ||
| expandToNextLevel | No | expand to the next level on click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses that the tool seeds 'the saved drill state (expansionStates)' and explains the effect of each toggle. This goes beyond the input schema. It does not mention whether prior expansion states are overwritten or failure modes, but the disclosed side effect is significant and useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loaded with the primary purpose. The first sentence states the action and target. The second explains the toggles. The third discloses the side effect and a usage constraint. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity setter tool with no output schema and no annotations, the description covers the essential aspects: what it does, the toggles, the state it modifies, and a requirement. It does not explain return values or error behavior, but given the input schema and the tool's simplicity, it is reasonably complete. Sibling differentiation is implicit but effective.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 80% of parameters (page, visual, drillOnClick, expandToNextLevel). The description adds conceptual meaning to the two boolean toggles by explaining their behavioral difference: 'expandToNextLevel (a click expands to the next level rather than drilling)' and 'drillOnClick (single-click drills)'. This clarifies the semantics beyond the terse schema descriptions. reportSessionId is not described in the description, but the schema covers the others adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set DRILL-DOWN behaviour on a visual with a drillable (hierarchy/multi-level) axis'. It specifies the verb (Set), the resource (drill-down behaviour on a visual), and the specific context (drillable axis). It also distinguishes from sibling tools like set_drillthrough by explicitly naming drill-down rather than drillthrough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: on visuals with a drillable hierarchy/multi-level axis. It also includes a usage constraint: 'Set at least one toggle'. However, it does not explicitly mention alternatives or exclusions (e.g., when not to use this tool vs. set_drillthrough), which would make guidance more complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_drillthrough_fieldsA
Wire the CARRIED FIELDS of a DRILL-THROUGH page: fields = JSON array of {table,field}. Each becomes a drill-through page filter (so right-clicking that field elsewhere drills through to this page filtered to the value). keepAllFilters toggles the 'keep all filters' switch. Replaces any existing drill-through fields. Pair with set_page_type drillthrough / add_drillthrough.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | the drill-through page name or displayName | |
| fields | Yes | JSON array of {table,field} carried fields | |
| keepAllFilters | No | keep all incoming filters on drill-through | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, and it fully discloses key behaviors: each field becomes a drill-through filter, keepAllFilters toggles a switch, and 'Replaces any existing drill-through fields' explicitly signals the destructive/replacement nature. This goes beyond the schema and provides critical expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each dense with meaningful information. The structure is front-loaded with purpose, then details parameters, and ends with pairing guidance. No fluff or redundant restating of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 params and no output schema, the description fully explains what the tool does, how it interacts with page, fields, keepAllFilters, and how it fits with sibling tools. It covers replacement behavior, filter application, and usage pairing, making invocation unambiguous. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, slightly below the high threshold. The description enriches parameter understanding: it clarifies the 'fields' JSON structure as '{table,field}' and explains its filter effect, and defines keepAllFilters behavior. It adds value beyond the schema descriptions without fully covering reportSessionId, but that is a common session context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Wire') and clearly identifies the resource ('CARRIED FIELDS of a DRILL-THROUGH page'). It explains the mechanism (fields become page filters) and distinguishes this tool from siblings by explicitly pairing it with set_page_type drillthrough / add_drillthrough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides effective usage context: 'Pair with set_page_type drillthrough / add_drillthrough' indicates complementary tools and when this is appropriate. It lacks explicit alternatives or 'when not to use', but the pairing guidance and clear semantics offer sufficient direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dynamic_format_stringA
Set a dynamic (DAX-driven) format string on a measure OR a calculation item, so the displayed format changes with context (e.g. currency vs percent, or scaling units). Provide measure for a measure, or calculationItem (with its calculation-group table) for an item.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table (the measure's table, or the calculation-group table) | |
| measure | Yes | measure name; omit if targeting a calculation item | |
| sessionId | Yes | ||
| daxExpression | Yes | DAX expression returning the format string | |
| calculationItem | Yes | calculation-item name; omit if targeting a measure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the effect (context-dependent formatting), gives examples, and clarifies the table parameter semantics. However, it does not disclose whether setting the format string overwrites an existing one, whether permissions are required, or what happens if both measure and calculationItem are provided/null. This is a moderate level of transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: two sentences that state purpose, give examples, and provide usage instructions. No redundant information or fluff, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality and parameter usage but lacks important contextual details for a mutation tool without annotations. It does not mention prerequisites (e.g., measure/calculation item must already exist), potential errors, or whether the operation is destructive or reversible. The tool is moderately complex with 5 parameters, so this is a noticeable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema's parameter descriptions. It explains that 'measure' and 'calculationItem' are mutually exclusive ('Provide measure for a measure, or calculationItem...'), and clarifies that 'table' should be the measure's table or the calculation-group table. This helps disambiguate parameter usage beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Set a dynamic (DAX-driven) format string on a measure OR a calculation item'. It uses a specific verb and resource, and explains the effect ('displayed format changes with context') with examples. This distinguishes it from sibling tools like set_custom_format_string by emphasizing the dynamic, DAX-driven nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when a dynamic format string is needed, and it provides explicit usage instructions for the two modes ('Provide measure for a measure, or calculationItem (with its calculation-group table) for an item'). It does not explicitly mention alternatives or when not to use it, but the 'dynamic (DAX-driven)' qualifier implies the distinction from static format setters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_extended_propertyA
Set a typed extended property on any model object: type = String | Json. objectType = model | table | column | measure | hierarchy | partition. Pass the object's table for column/measure/hierarchy/partition. Replaces a same-named property. Extended properties are structured metadata (e.g. the ParameterMetadata tag on field-parameter columns).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | property name | |
| type | No | String | Json (default String) | String |
| table | No | the object's table (required for column/measure/hierarchy/partition) | |
| value | Yes | property value (a JSON string when type=Json) | |
| sessionId | Yes | ||
| objectName | Yes | the object's name | |
| objectType | Yes | model | table | column | measure | hierarchy | partition |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden, and it does well by stating that it 'Replaces a same-named property' and that 'Pass the object's table' is required for child object types. It clearly implies mutation and gives a prerequisite, though it omits details about return values, errors, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at three sentences, each earning its place: the first states the function and types, the second covers object scope and the table requirement, and the third explains replacement behavior and gives an example. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and an output schema, the description is remarkably complete for a setter tool. It covers the action, parameter relationships, replacement behavior, and a motivating use case. It doesn't discuss edge cases or return values, but those are less critical for a setter, so the slight omission is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 86% of parameters, including type defaults and objectType choices. The description reinforces the link between objectType and table and clarifies that value is a JSON string when type=Json, but much of this is already present in the schema. It adds no new meaning for sessionId, so it falls at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set a typed extended property on any model object,' which names a specific action and resource. It then enumerates allowed types (String | Json) and object types (model | table | column | measure | hierarchy | partition), and gives a concrete example (ParameterMetadata tag), making the tool's purpose unmistakable and distinguishing it from siblings like set_annotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining that extended properties are structured metadata and offering a real-world example (ParameterMetadata on field-parameter columns), which implies when the tool is appropriate. However, it does not explicitly compare it to alternative tools or state when not to use it, so it stops short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_field_value_cfA
FORMAT BY FIELD VALUE conditional formatting on a table/matrix column: a measure that returns a hex/CSS colour drives the column's background, font or icon colour DIRECTLY (not a rule/gradient - the measure's returned colour IS the colour). target=background|font|icon. colorMeasure = "Table[Measure]" (or pass colorMeasureTable). column = the column's queryRef e.g. 'Dim_Product.Brand'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| column | Yes | the column's queryRef, e.g. Dim_Product.Brand | |
| target | Yes | background | font | icon | |
| visual | Yes | table/matrix visual name | |
| colorMeasure | Yes | colour measure, e.g. Fact[Colour] or just the measure name with colorMeasureTable | |
| reportSessionId | Yes | ||
| colorMeasureTable | No | table that owns the colour measure (if not in colorMeasure) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the direct color application behavior and parameter roles, which is helpful. But it does not mention whether existing conditional formatting is overwritten, what happens if the measure returns an invalid color, or any prerequisites such as the visual needing to be a table/matrix. More behavioral detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, with three sentences covering purpose, mechanism, and parameter formats. The first sentence front-loads the core purpose and key distinction. It is not as tight as a two-sentence example, but every sentence earns its place with useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description provides substantial context: the tool's purpose, how it works, and parameter formats. It covers the essential behavior and the main parameters (target, colorMeasure, column). It could add preconditions or failure behavior, but for a formatting tool with this complexity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the baseline is 3. The description adds meaningful parameter semantics beyond the schema: it explains that colorMeasure takes 'Table[Measure]' or can use colorMeasureTable, and it gives a concrete example for the column queryRef. It also clarifies the meaning of the target parameter (background|font|icon) in context. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets conditional formatting on a table/matrix column based on a measure's returned color. It explicitly distinguishes from rule/gradient formatting by emphasizing the measure's returned color IS the color. This differentiates it from sibling tools like set_gradient_color or set_color_scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use when you want a measure to directly drive the column's background, font, or icon color. It explicitly contrasts with rule/gradient approaches, giving an implicit when-not-to-use. However, it does not name specific alternative tools, so it stops short of full guidance with explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_filter_paneA
Show/hide and expand/collapse the FILTER PANE. Omit page to set it report-wide; pass page to override one page. visible=false hides the pane entirely; expanded=false collapses it. Set at least one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page name or displayName (omit = report-wide default) | |
| visible | No | show the filter pane | |
| expanded | No | expand (vs collapse) the filter pane | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It explains the effect of visible=false and expanded=false, and states the 'Set at least one' constraint, but does not disclose what happens to the other property when only one is specified (e.g., does it remain unchanged?), nor any persistence or side effects. This is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, and every clause provides useful information. There is no repetition or fluff, earning a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers the core behavior and parameter usage. Since there is no output schema, return values are not expected. However, it lacks explicit handling of edge cases like page being null vs omitted, or the effect of setting only one boolean. Overall, it is reasonably complete for a state-setting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 75% of parameters, and the description adds limited extra meaning: it reinforces the page semantics (already in the schema) and adds the 'Set at least one' constraint, which is not in the schema. However, the descriptions of visible and expanded in the schema are essentially equivalent to the description's phrasing, so the added value is minimal. The reportSessionId parameter remains undocumented in both.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Show/hide and expand/collapse the FILTER PANE,' a specific verb+resource statement that clearly distinguishes from siblings like set_visual_visibility or hide_filter. It also explains the scope (report-wide vs page), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete guidance on when to use the tool: to control filter pane visibility and expansion. It explains page scope options ('Omit page to set it report-wide; pass page to override one page') and the boolean semantics for visible and expanded. It does not explicitly mention alternatives or when-not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_filter_restatementA
Set a filter card's RESTATEMENT (custom display label) and/or its lock/hide flags on a matching filter (by table[field]) at a scope=visual|page|report. displayName overrides the card's auto label; isHiddenInViewMode / isLockedInViewMode toggle hide/lock. For scope=visual pass page+visual; scope=page pass page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page (scope=visual|page) | |
| field | Yes | the field to match | |
| scope | Yes | visual | page | report | |
| table | Yes | table that owns the filter field | |
| visual | No | visual (scope=visual) | |
| displayName | No | custom card label (the restatement) | |
| reportSessionId | Yes | ||
| isHiddenInViewMode | No | hide the card in view mode | |
| isLockedInViewMode | No | lock the card in view mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It explains parameter effects (displayName overrides label, flags toggle hide/lock) but omits critical traits: what happens if no matching filter is found, whether null values clear or leave existing settings unchanged, and any side effects or permissions required. This is significant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the core purpose and then explaining parameter semantics and scope-specific requirements. Every sentence adds value without redundancy, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool, the description covers the main operation and scope logic but leaves gaps: no handling for missing matches, no mention of how null flags/displayName behave, and no reference to sibling tools that focus solely on lock/hide. Given the high schema coverage and no output schema, this is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so baseline is 3, but the description adds meaningful context beyond the schema: it clarifies that displayName is the restatement, that lock/hide flags toggle specific states, and that page/visual requirements depend on scope. This helps disambiguate parameter combinations, earning an above-baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set a filter card's RESTATEMENT ... and/or its lock/hide flags on a matching filter (by table[field]) at a scope=visual|page|report.' This provides a specific verb, resource, matching criteria, and scope, distinguishing it from generic filter tools. It also explains the effect of the primary parameters without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some context on parameter usage ('For scope=visual pass page+visual; scope=page pass page') but does not explicitly state when to use this tool over alternatives like lock_filter or hide_filter, nor when not to use it. It implies usage based on the operation but lacks exclusions or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_font_color_rulesA
Apply DISCRETE rule-based FONT-COLOUR bands to a measure column in a table/matrix: each value in [min, max) renders its band text colour. Same rule structure as set_conditional_formatting, applied to the text colour instead of the background. rules = JSON array of {min, max, color}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| rules | Yes | JSON array of {min, max, color} bands | |
| visual | Yes | table/matrix visual name | |
| measure | Yes | measure that drives the colour | |
| measureTable | Yes | table that owns the measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behavior: discrete bands, interval semantics [min, max), and scope (measure column in table/matrix). It does not mention overwrite behavior or how to clear rules, but the core effect is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, and every sentence provides distinct value: purpose, sibling differentiation, and rule format. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is quite complete: it explains the operation, target, rule format, and interval behavior. It does not cover edge cases like overlapping rules or error handling, but those are not essential for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), and the description adds important meaning to the 'rules' parameter by explaining the [min, max) interval behavior and the JSON structure. This goes beyond the schema's brief description, making the parameter semantics clearer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Apply DISCRETE rule-based FONT-COLOUR bands') with a clear target ('measure column in a table/matrix'). It distinguishes itself from the sibling tool set_conditional_formatting by explicitly noting it applies to text colour instead of background.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for font-color formatting by referencing the same rule structure as set_conditional_formatting but for text colour. It gives a comparative alternative but does not explicitly state when not to use it or list other alternatives like gradient color or icon rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_forecastA
Set a FULL forecast on a line chart (the forecast object: length/units/ignore-last/confidence/seasonality) - more complete than add_analytics_line forecast, which only sets the band. units = Point|Day|Month|Year. confidenceInterval e.g. 0.95. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| units | No | Point|Day|Month|Year | |
| length | Yes | forecast length | |
| visual | Yes | line-chart visual name | |
| ignoreLast | No | points to ignore at the end | |
| seasonality | No | seasonality (points per cycle) | |
| reportSessionId | Yes | ||
| confidenceInterval | No | confidence interval e.g. 0.95 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the specific fields being set (length, units, ignore-last, confidence, seasonality) and warns to verify the render in Desktop, implying a rendering caveat. However, it does not mention side effects like overwriting an existing forecast or reversibility, though it does state the prerequisite of a line chart.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, conveying the core action, the parameter list, the alternative comparison, and a verification tip in just two sentences. There is no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a setter with 8 parameters and no output schema, the description covers the essential behavior, parameter meanings, the primary alternative, and a verification step. It could be more complete by mentioning error conditions or whether it overwrites existing forecasts, but it is nearly sufficient for the intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the baseline is 3. The description adds explicit allowed values for units ('Point|Day|Month|Year') and an example for confidenceInterval ('0.95'), enhancing the schema's descriptions. It also clarifies the meaning of ignore-last indirectly through the parenthetical list, but the schema already covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a FULL forecast'), the target ('a line chart'), and the composition of the forecast object (length/units/ignore-last/confidence/seasonality). It also explicitly distinguishes itself from the sibling add_analytics_line, which only sets the band, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts with add_analytics_line, noting that set_forecast is more complete and that the alternative only sets the band. This gives direct guidance on when to use this tool over that sibling. It also adds a practical instruction to verify the render in Desktop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_global_wildcard_defaultsA
Set the theme's GLOBAL WILDCARD defaults ("":{"":[...]}) - house-style formatting for every card of every visual in one shot. props = JSON { cardName: {prop:value} | [{prop:value}] }, merged into any existing defaults. The card card uses a "$id":"default" quirk - supply such a body verbatim to target it.
| Name | Required | Description | Default |
|---|---|---|---|
| props | Yes | JSON map of cardName -> property map / array, e.g. {"title":{"fontColor":"#16365C"},"border":[{"show":true,"radius":8}]} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does disclose two important nuances: the merge behavior ('merged into any existing defaults') and the '$id':'default' quirk for targeting the card card. However, it stops short of describing side effects, reversibility, permission requirements, or what happens to existing defaults in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, information-packed sentences with no filler. Each sentence earns its place: the first states purpose, the second explains the props format, and the third highlights a critical special case. Front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is mostly complete: it explains the purpose, the props structure, the merge behavior, and a potential quirk. Minor gaps include the lack of reportSessionId description and no mention of error handling or return behavior, but these are standard for session/context parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 'props' with an example, but the description adds meaningful semantics by explaining the JSON structure ({ cardName: {prop:value} | [{prop:value}] }) and the quirk. 'reportSessionId' is left undocumented in both schema and description, which is a gap given the 50% coverage, but the props explanation compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Set'), identifies the resource ('theme's GLOBAL WILDCARD defaults'), and clarifies scope ('every card of every visual in one shot'). The wildcard concept distinguishes it from other theme-set tools (e.g., set_theme_data_colors, set_theme_structural_colors) even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for one-shot global house-style formatting via the phrase 'in one shot', but it does not explicitly state when to use this tool over alternatives or provide exclusion criteria. The 'merged into any existing defaults' hint gives some context but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_gradient_colorA
Set a measure-driven GRADIENT-STOP saturation colour on a card that set_color_scale does not target (treemap/funnel/map dataPoint fill). minColor/maxColor (and optional centerColor for a 3-stop ramp) drive the fill by the measure; min/center/max set explicit stop values. card defaults to dataPoint.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| min | No | ||
| card | No | formatting card (default dataPoint) | dataPoint |
| page | Yes | page name or displayName | |
| center | No | ||
| visual | Yes | visual name (treemap/funnel/map) | |
| measure | Yes | measure that drives the colour | |
| maxColor | Yes | high-end colour hex | |
| minColor | Yes | low-end colour hex | |
| centerColor | No | optional centre colour hex (3-stop) | |
| measureTable | Yes | table that owns the measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility and does well by explaining the core behavior: colors are driven by a measure, minColor/maxColor are endpoints, min/center/max set explicit stop values, and centerColor is optional for a 3-stop ramp. However, it does not disclose potential side effects like overwriting existing formatting or validation rules, which prevents a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences, front-loaded with the primary action and target. The second sentence explains the parameter logic, and the third notes the default. Every sentence adds distinct value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 params, no output schema, no annotations), the description covers the key non-obvious aspects: target visuals, exclusive use case, and parameter relationships. It does not mention return values or errors, but for a setter tool this is acceptable and the description is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, but the description adds significant relational meaning not present in the schema: it connects minColor/maxColor to the measure-driven fill, defines min/center/max as the stop values, and clarifies centerColor's optional role. This helps the agent correctly populate parameters beyond their individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a measure-driven GRADIENT-STOP saturation colour') and the exact resource (a card not targeted by set_color_scale, e.g., treemap/funnel/map dataPoint fill). It explicitly distinguishes this tool from the sibling set_color_scale, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description directly references the alternative tool set_color_scale and indicates that this tool is for cases that tool does not cover ('that set_color_scale does not target'), giving clear guidance on when to use it. It also specifies the default card value (dataPoint), helping with parameter decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hierarchy_propertiesA
Set hierarchy-level properties (any subset): displayFolder, hidden (show/hide the hierarchy), hideMembers = Default | HideBlankMembers (hide blank members of the hierarchy).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| hidden | No | hide (true) or show (false) the hierarchy | |
| hierarchy | Yes | ||
| sessionId | Yes | ||
| hideMembers | No | Default | HideBlankMembers | |
| displayFolder | No | display folder for the hierarchy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the effect of each property: hidden toggles visibility, hideMembers accepts specific enum-like values ('Default' or 'HideBlankMembers'), and displayFolder sets a folder. The note 'any subset' indicates partial updates are possible, which is valuable behavioral context. However, it does not disclose side effects, error conditions, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the operation ('Set hierarchy-level properties'), and it efficiently lists properties and their meanings without redundancy. Every part contributes value, and it is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward setter tool, the description covers the key properties and their semantics. The schema provides parameter names and types, and the description adds the 'any subset' nuance. It does not explicitly state that the operation modifies the model or requires an existing hierarchy, but given the simplicity and clear property semantics, it is sufficiently complete for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes hidden, hideMembers, and displayFolder, and the description largely restates these, adding limited new meaning. The important addition is 'any subset', which clarifies that parameters are optional and can be set independently. The required parameters (sessionId, table, hierarchy) are not explained in the description, but they are standard contextual fields. With 50% schema coverage, the description does not fully compensate for the undocumented required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting hierarchy-level properties. It enumerates the specific properties (displayFolder, hidden, hideMembers) and distinguishes this from sibling tools that target other objects (e.g., set_measure_properties, set_level_properties). The verb 'Set' and the resource 'hierarchy' make 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'hierarchy-level properties' provides clear context for when to use this tool, implying it is for hierarchy objects rather than measures, columns, or other entities. It does not mention alternatives explicitly, but the context is sufficient for an agent to disambiguate from siblings. No exclusions or when-not-to-use guidance is provided, but the scope is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_icon_rulesA
Apply DISCRETE rule-based ICONS to a measure column in a table/matrix: each value in [min, max) maps to an icon. rules = JSON array of {min, max, color}. glyphs = optional comma-separated icon glyph names (one per band, e.g. ArrowDown,ArrowSideways,ArrowUp) - when given, each band uses that glyph instead of being colour-keyed. iconSet picks the glyph family (e.g. ThreeArrowsColored, ThreeFlags, ThreeTrafficLights1). layout = left|right|icon-only (where the icon sits relative to the value). Verify in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| rules | Yes | JSON array of {min, max, color} bands | |
| glyphs | No | optional comma-separated glyph names, one per band | |
| layout | No | left | right | icon-only | |
| visual | Yes | table/matrix visual name | |
| iconSet | No | optional icon-set family, e.g. ThreeArrowsColored | |
| measure | Yes | measure that drives the icons | |
| measureTable | Yes | table that owns the measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It explains the interval-based mapping ('each value in [min, max) maps to an icon'), the behavior of glyphs ('each band uses that glyph instead of being colour-keyed'), and the layout option. It also notes 'Verify in Desktop', indicating a post-change verification step. It does not mention whether existing rules are overwritten, but it provides meaningful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose sentence, followed by concise explanations of each parameter. It's a single paragraph that is relatively dense but every sentence contributes; no unnecessary fluff. Length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema or annotations, the description covers all key aspects: the rule structure, optional glyphs, icon family, and layout. It mentions the target (table/matrix measure column) and adds the 'Verify in Desktop' note. It lacks information about whether the operation replaces or merges existing rules, and doesn't specify return values, but overall it is comprehensive for a formatting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 89% of parameters, but the description enhances understanding by explaining rules format (JSON array of {min, max, color} with interval semantics), providing example glyphs (ArrowDown,ArrowSideways,ArrowUp), and clarifying iconSet and layout values. This adds significant value beyond the schema's terse descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Apply DISCRETE rule-based ICONS to a measure column in a table/matrix', specifying the resource (measure column) and the distinct approach (discrete rules with [min,max) intervals). It differentiates from siblings like set_color_scale or set_data_bars by focusing on icons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context ('to a measure column in a table/matrix') and explains the functionality, but it does not explicitly address when to use this tool versus alternatives like set_font_color_rules or set_data_bars. No 'when not to use' guidance or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_image_sourceA
Re-source an EXISTING image visual: rewrite its sourceFile to a new image (add_image only creates new ones). imageUrlOrPath = a local file (embedded) or an http(s)/data URL. Preserves the visual's current scaling.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | the image visual's name | |
| imageUrlOrPath | Yes | local image file or http(s)/data URL | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It states the mutation effect ('rewrite its sourceFile'), accepted input forms, and a preservation detail ('Preserves the visual's current scaling'). This is more transparent than typical mutation tools, though it does not mention permissions or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by key source-type and scaling details. Every clause earns its place, with no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential context: existing visual, source format, and scaling preservation. It lacks explicit prerequisites (e.g., active report session) or return/error behavior, but for a simple update operation it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% with descriptions for page, visual, and imageUrlOrPath. The description adds marginal detail like '(embedded)' for imageUrlOrPath and 'sourceFile' terminology, but does not explain reportSessionId. The schema already handles most parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Re-source an EXISTING image visual: rewrite its sourceFile to a new image.' It clearly distinguishes from the sibling tool add_image by noting 'add_image only creates new ones.' This makes the tool's purpose unambiguous and differentiates it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames when to use this tool versus add_image: 'add_image only creates new ones,' implying set_image_source is for existing visuals. It also gives concrete guidance on accepted URL/file types ('local file (embedded) or an http(s)/data URL'), which helps the agent decide if this tool fits the input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_incremental_refreshA
Attach a basic incremental-refresh policy to a table: keep a rolling window of data and only refresh the most recent increment. Needs RangeStart/RangeEnd M parameters - this creates them if absent (then point the table's M partition at them to bind the date range). Granularity = Day | Month | Quarter | Year.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| pollingExpression | No | optional DAX polling expression to detect changes (real-time / hybrid) | |
| incrementalPeriods | Yes | how many recent incremental periods to refresh each run | |
| rollingWindowPeriods | Yes | how many rolling-window periods of history to keep | |
| incrementalGranularity | Yes | incremental granularity: Day | Month | Quarter | Year | |
| rollingWindowGranularity | Yes | rolling-window granularity: Day | Month | Quarter | Year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It discloses a key side effect (creating RangeStart/RangeEnd parameters if absent) and that it binds the M partition to them. However, it does not mention whether an existing incremental-refresh policy is overwritten, permissions required, or reversibility, leaving gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—three sentences—with the main purpose front-loaded in the first sentence. Every sentence adds value: purpose, side-effect/prerequisite, and allowed granularity values. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description covers the primary purpose, the key side effect of creating M parameters, and the granularity options. It lacks edge-case details like prerequisites for table types or behavior with existing policies, but overall it provides sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71% (5 of 7 parameters have descriptions), but the description adds semantic meaning beyond the schema by explaining the overall mechanism—how rollingWindowPeriods and incrementalPeriods relate to the 'rolling window' and 'most recent increment' concepts. It also clarifies granularity values, though these are already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Attach a basic incremental-refresh policy to a table'. It further explains the rolling-window behavior and granularity options, distinguishing it from sibling tools like refresh_table or set_refresh_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives contextual guidance by mentioning the prerequisite RangeStart/RangeEnd M parameters and that they are created if absent, but it does not explicitly state when to use this tool over alternatives or when not to use it. The usage context is implied rather than directly differentiated from other refresh-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_isavailableinmdxA
Set Column.IsAvailableInMDX. Setting it false on high-cardinality, non-attribute columns saves memory and processing. GUARD: it is kept TRUE on any SortByColumn target (flipping it false breaks the sort with 'invalid column ID'). Pass table+column for one column; pass table alone to set a whole table; or bulkHeuristic=hiddenAndKeys (with no table/column) for a safe model-wide pass over hidden/key columns.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | table (omit with bulkHeuristic for a model-wide pass) | |
| value | Yes | the value to set (false to disable MDX availability) | |
| column | No | column (omit to set the whole table) | |
| sessionId | Yes | ||
| bulkHeuristic | No | hiddenAndKeys for a model-wide pass over hidden/key columns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the critical side-effect of flipping false on SortByColumn targets (invalid column ID error) and explains the memory/processing benefit. However, it does not mention any permissions, reversibility, or return behavior, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: a clear opening, a practical rationale, a distinct GUARD note, and usage modes. It is slightly long but every sentence provides value; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a property setter with no output schema and no annotations, the description covers purpose, usage, mode selection, and a critical guard. It lacks details on error behavior, permissions, or return values, but these are less critical for a straightforward setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, but the description adds significant meaning beyond the schema. It explains how table/column/bulkHeuristic interact ('Pass table+column for one column; pass table alone to set a whole table; or bulkHeuristic=hiddenAndKeys'), which is not evident from the property descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set Column.IsAvailableInMDX', a clear verb+resource statement. It further explains the purpose (saving memory/processing) and distinguishes this from other set_* siblings by naming the specific MDX availability property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (false on high-cardinality, non-attribute columns), includes a specific GUARD about SortByColumn targets that would break the sort, and describes three invocation modes (column, table, or bulkHeuristic) with clear conditions for each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_kpiA
Attach a KPI to a measure: a target to compare against and a status expression (typically returns -1/0/1 for bad/neutral/good) that drives a traffic-light indicator. statusGraphic picks the indicator set (default 'Three Circles Colored').
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table the measure is on | |
| measure | Yes | measure to attach the KPI to | |
| sessionId | Yes | ||
| statusGraphic | No | indicator graphic set (optional; default 'Three Circles Colored') | |
| statusExpression | Yes | DAX status expression returning e.g. -1/0/1 | |
| targetExpression | Yes | DAX target expression, e.g. [Sales Target] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the only source. It explains the behavior (attaching a KPI, how status expressions drive indicators) but does not disclose side effects such as whether existing KPIs are overwritten, permission requirements, or reversibility. This is a moderate level of behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no redundant wording; every clause adds useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterized setter with no output schema or annotations, the description conveys the core purpose, key expression semantics, and default graphic. It omits session-related details and side effects but is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 5/6 params; description adds meaningful context for targetExpression (DAX target to compare), statusExpression (returns -1/0/1 for traffic light), and statusGraphic (default 'Three Circles Colored'), which goes beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Attach a KPI to a measure') and explains the target/status expression semantics, clearly distinguishing it from general measure property setters like set_measure_properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: when you need to attach a KPI with target/status expressions. It does not explicitly name alternatives or exclusions, but the purpose statement effectively guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_legendB
Show/hide a chart legend and set its position (Top|Bottom|Left|Right|TopCenter|... ).
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | ||
| pageName | Yes | ||
| position | No | Top | |
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the primary actions but does not reveal side effects, prerequisites (e.g., requiring an existing visual), or any validation behavior for position values. This leaves the agent with limited insight into the tool's runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately communicates the tool's purpose. It contains no fluff or redundancy and is easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple setter with no output schema or annotations, the description covers the core action but lacks important context such as valid position values (only partially listed), behavior when the visual does not exist, or whether changes are persisted. This is acceptable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It provides example values for the position parameter and implicitly clarifies the show parameter. However, it adds no meaning for the required pageName, visualName, or reportSessionId parameters, which are only identifiable by their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Show/hide a chart legend and set its position.' It is distinct from sibling tools like set_visual_title or set_axis, though it does not explicitly reference alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any exclusions or prerequisites mentioned. The description simply states what the tool does without contextual or conditional information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_level_propertiesA
Set a hierarchy LEVEL's properties (any subset): ordinal (its order within the hierarchy), description, and/or newName (rename the level). NOTE: hide-blank-members and display folder are hierarchy-wide - set those with set_hierarchy_properties.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ||
| table | Yes | ||
| newName | No | rename the level to this name | |
| ordinal | No | ordinal/order within the hierarchy | |
| hierarchy | Yes | ||
| sessionId | Yes | ||
| description | No | description text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds the partial-update behavior ('any subset') and distinguishes between level-level and hierarchy-level properties. However, it does not disclose permissions, side effects, or validation behavior, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose, followed by a useful exclusionary note. No redundant phrasing or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple setter, covering the main fields and pointing to set_hierarchy_properties for related settings. However, it omits return value, prerequisites, and error handling, and the required parameters are still unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, with just newName, ordinal, and description having descriptions. The description adds the 'any subset' semantic and explains ordinal's meaning, but does not clarify required parameters like sessionId, table, hierarchy, and level, which remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Set a hierarchy LEVEL's properties (any subset): ordinal (its order within the hierarchy), description, and/or newName (rename the level).' This clearly identifies the verb, resource, and specific properties, and distinguishes it from set_hierarchy_properties for hierarchy-wide settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The NOTE explicitly says 'hide-blank-members and display folder are hierarchy-wide - set those with set_hierarchy_properties,' providing a clear alternative and when-not-to-use context. It also implies this tool is for level-specific property updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_lineage_tagA
Set the LineageTag (a stable identity that survives schema sync / git merge across renames) on a model object. objectType = model | table | column | measure | hierarchy | partition | relationship; pass the object's table for column/measure/hierarchy/partition. Needs compatibility level 1540+ (auto-bumped, reported back).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | the lineage tag (any stable id, e.g. a GUID) | |
| name | Yes | the object's name | |
| table | No | the object's table (for column/measure/hierarchy/partition) | |
| sessionId | Yes | ||
| objectType | Yes | model | table | column | measure | hierarchy | partition | relationship |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It usefully discloses the compatibility-level side effect ('auto-bumped, reported back') and explains the tag's persistence across renames/merges. It does not mention overwrite behavior, permissions, or reversibility, leaving significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the core purpose, then cover parameter relationship and compatibility side effect. No filler; every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key operational nuances: object types, the conditional table requirement, and the auto-bump/reporting of compatibility level. It doesn't describe the return value or error scenarios, but for a targeted setter tool this is mostly adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents the parameters. The description adds context about LineageTag semantics and the compatibility-level requirement, but the parameter-level guidance (objectType values, when to pass table) largely repeats the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set the LineageTag') and the target ('on a model object'), and defines what a LineageTag is ('stable identity that survives schema sync / git merge across renames'). The object types are enumerated, so an agent can distinguish this from related tag tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit context for when to use: setting LineageTag on model objects, including the conditional rule 'pass the object's table for column/measure/hierarchy/partition.' It does not name an alternative or state when not to use, so it misses explicit exclusions, but the selection context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_list_bufferA
Perf heuristic: wrap a referenced list/table in List.Buffer / Table.Buffer to cache it for repeated reads (complements set_query_buffer). kind = list | table. referenceExpr is the raw M reference to buffer. Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | list | table (default list) | list |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) | |
| referenceExpr | Yes | the raw M list/table reference to buffer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing side effects. It states 'Appends one step to the table's M query' and labels itself a 'Perf heuristic', providing some behavioral insight. However, it does not disclose permanence, reversibility, or potential interactions with repeated calls, which is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the primary purpose ('Perf heuristic'), followed by parameter hints and a side-effect note. Every clause earns its place, with no redundant or unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the core operation and side effect but lacks explicit usage boundaries, prerequisites, or what happens to the M query on repeated invocations. It is adequate but not comprehensive for a mutation tool with 5 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description adds some meaning by explaining 'kind = list | table' and 'referenceExpr is the raw M reference to buffer', but these largely mirror schema descriptions. It does not compensate for undocumented parameters like sessionId, table, or partitionName, which remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool wraps a referenced list/table in List.Buffer/Table.Buffer, a specific action with a clear resource. It also distinguishes itself from sibling set_query_buffer by noting it 'complements' that tool, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context as a 'perf heuristic' for repeated reads and explicitly mentions complementing set_query_buffer, implying when to use it. However, it does not explicitly state when to prefer this over set_query_buffer or list exclusions, leaving some room for interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_map_conditional_formattingA
Set measure-driven conditional FILL on a filledMap/azureMap filled layer (dataPoint fillColor). Pass rules = JSON array of {min,max,color} bands for discrete CF, OR minColor+maxColor (and optional centerColor) for a gradient. target defaults to fill. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| rules | No | JSON array of {min,max,color} bands (discrete); omit for gradient | |
| target | No | fill (default) | fill |
| visual | Yes | filled-map visual name | |
| measure | Yes | measure that drives the colour | |
| maxColor | No | gradient high colour hex | |
| minColor | No | gradient low colour hex (use with maxColor) | |
| centerColor | No | gradient centre colour hex (3-stop) | |
| measureTable | Yes | table that owns the measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It explains the mechanics (fill color, target default) and adds a verification tip, but it does not disclose whether existing formatting is overwritten, any side effects, or prerequisites beyond the visual type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose sentence, usage mode sentence, target default, and verification tip. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 params, no annotations, no output schema), the description covers the core mechanics well but omits important context such as error handling, interaction with existing formatting, and prerequisites beyond the visual type. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (90%), but the description adds value by clarifying the mutually exclusive alternatives (rules OR minColor+maxColor) and explicitly stating the target default. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Set measure-driven conditional FILL') and specific resource ('filledMap/azureMap filled layer (dataPoint fillColor)'), distinguishing it from sibling conditional formatting tools like set_slicer_conditional_formatting or set_field_value_cf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (on filled map visuals) and explains the two modes (discrete rules vs gradient). However, it does not explicitly mention alternatives or when not to use it, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_measure_propertiesA
Set a measure's metadata that update_measure does not cover: hide/show it (hidden), set its description, and/or rename it (newName). Any omitted property is left unchanged. Use update_measure for the DAX / format string / display folder. A rename with propagate=true (the default) rewrites every [Measure] reference model-wide - other measures, calc columns/tables, RLS filters, calc items, KPI/format-string/detail-rows expressions - atomically, and the report's bindings too when reportSource is given. propagate=false renames the object only.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| hidden | No | hide (true) or show (false) the measure | |
| measure | Yes | ||
| newName | No | rename the measure to this name | |
| propagate | No | with newName: rewrite every DAX reference model-wide (and report bindings when reportSource is given); false = rename the object only | |
| sessionId | Yes | ||
| description | No | description for self-service users | |
| reportSource | No | optional report to rewrite on a rename: a reportSessionId (open_report), a pbirSessionId (read_pbir), or a PBIR .pbix/PBIP folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: omitted properties remain unchanged, renames propagate atomically across the model and reports, and propagate=false renames only the object. This is highly transparent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose, when-to-use, and behavioral details. Each sentence carries necessary information, though it could be split into bullets for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of rename with propagation and report rewriting, the description covers all critical aspects: what properties are set, update semantics, propagation behavior, and alternative tools. It is fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, so description adds needed meaning. It explains hidden, description, newName, and adds detail on propagate and reportSource beyond the schema. However, table/measure/sessionId are left to self-evident naming, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a measure's metadata (hidden, description, newName) and explicitly distinguishes it from update_measure. It specifies the exact resources and actions, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance: 'Use update_measure for the DAX / format string / display folder.' It also explains when propagate and reportSource are relevant, covering when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_mobile_positionA
Place one visual on the phone (mobile) layout at x,y,width,height on the 320-wide phone canvas (a second layouts entry). Use for precise mobile control. mobileFormat (optional) is a set_visual_format-shaped JSON { vcObjects/objects } of MOBILE-SPECIFIC formatting overrides (e.g. a smaller title or hidden legend on phone) stamped onto the mobile layout entry.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| width | Yes | ||
| height | Yes | ||
| pageName | Yes | ||
| visualName | Yes | ||
| mobileFormat | No | optional JSON of mobile-specific formatting overrides { vcObjects/objects } | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool operates on a 320-wide phone canvas, creates a second layouts entry, and explains how mobileFormat overrides are stamped. This adds meaningful behavioral context beyond what a simple 'set position' would imply. It does not explicitly state whether existing position is overwritten, but the term 'Place' inherently suggests setting coordinates. The detail about the canvas width is especially valuable for coordinate calculations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence front-loads the primary action and scope, while the second efficiently explains the only complex parameter (mobileFormat). Every phrase earns its place, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and no output schema or annotations, the description covers the essential context: canvas dimensions, the separate mobile layout entry, and the optional formatting override. It does not explain prerequisites (e.g., visual must exist) or return behavior, but these are not critical for a placement tool. The reference to 'set_visual_format-shaped JSON' assumes knowledge of another tool, but the example mitigates this. Overall, it is fairly complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, so the description must compensate. It does provide substantial meaning for mobileFormat (a set_visual_format-shaped JSON of mobile-specific overrides with an example), and the mention of '320-wide phone canvas' gives context for x/y/width/height values. However, it does not explain pageName, visualName, or reportSessionId beyond their names, which are likely standard. It partially compensates for low coverage but does not fully describe all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Place one visual on the phone (mobile) layout at x,y,width,height on the 320-wide phone canvas'. This specific verb+resource scope distinguishes it from siblings like set_visual_position (which likely targets the desktop layout) and auto_mobile_layout (which automates placement). Mentioning 'a second layouts entry' further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use for precise mobile control' gives clear context for when to use this tool, implying that other tools (e.g., auto_mobile_layout) are suited for automatic placement. It does not explicitly list alternatives or exclusions, but the contrast with automation is evident. This is clear enough for an AI agent to choose it over siblings for manual mobile positioning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_mobile_visibilityA
Show or HIDE a visual on the PHONE (mobile) layout only - its desktop visibility is unchanged. visible=false hides it from the phone view. Seeds a mobile layout entry mirroring the desktop position if none exists.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | visual name (from list_visuals) | |
| visible | Yes | true = show on phone, false = hide | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key side effect: 'Seeds a mobile layout entry mirroring the desktop position if none exists,' and clarifies that desktop visibility is unchanged. It does not mention reversibility or error conditions, but the essential behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and each sentence adds essential information. It is concise without being under-specified, and the side effect is naturally integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param tool with no output schema and no annotations, the description provides sufficient context: mobile-only scope, desktop unaffected, and the automatic seeding behavior. It does not mention prerequisites like an open report session, but the session ID parameter implies that, and the description is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters, leaving reportSessionId undocumented. The description adds meaning for the visible parameter (false hides) and explains the mobile layout scope, but it does not compensate for the missing reportSessionId semantics. It mainly restates what the schema already says, adding little new parameter-specific value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows or hides a visual specifically on the phone/mobile layout only, using a specific verb ('Show or HIDE') and resource ('visual'). It explicitly distinguishes from desktop visibility and mentions the mobile-only scope, which differentiates it from generic visibility tools like set_visual_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use for mobile-only visibility changes, leaving desktop visibility unaffected. It implies the tool is for mobile layout adjustments but does not explicitly name alternative tools like set_visual_visibility or set_mobile_position, though the mobile-only wording effectively excludes their use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_model_settingsA
Set model-level settings (any subset; omitted settings unchanged): discourageImplicitMeasures (force explicit measures - a best practice), defaultMode = Import | DirectQuery | Dual | DirectLake | Push | Default, directLakeBehavior = Automatic | DirectLakeOnly | DirectQueryOnly, culture (model locale, e.g. en-US).
| Name | Required | Description | Default |
|---|---|---|---|
| culture | No | model culture/locale, e.g. en-US | |
| sessionId | Yes | ||
| defaultMode | No | Import | DirectQuery | Dual | DirectLake | Push | Default | |
| directLakeBehavior | No | Automatic | DirectLakeOnly | DirectQueryOnly | |
| discourageImplicitMeasures | No | discourage implicit measures (force explicit measures) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the partial-update semantics ('omitted settings unchanged') and defines valid values, which helps avoid destructive overwrites. However, it omits other behavioral details such as whether the change is immediate, requires a transaction/commit, or has side effects like triggering a data refresh for storage-mode changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that leads with the action and scope, then compactly lists parameters with their allowed values. Every clause earns its place, and there is no redundant repetition of the tool name or obvious padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity of the tool (5 parameters, 4 settings with enums) and no output schema, this description is remarkably complete: it covers all relevant settings, valid values, and the partial-update behavior. The only minor gap is that the required sessionId parameter is not mentioned in the description, but its role is likely self-explanatory from the schema and the broader tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (80%), and the description adds value by explicitly restating the enum values, explaining 'discourageImplicitMeasures' as 'force explicit measures - a best practice', and giving a concrete culture example. The phrase 'omitted settings unchanged' clarifies the null/default semantics implied by the schema, which is valuable beyond the structured parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Set model-level settings' as a clear verb+resource combination, and enumerates the exact settings (discourageImplicitMeasures, defaultMode, directLakeBehavior, culture). It is easily distinguished from sibling set_* tools, which target measures, columns, visuals, etc., by the model-level scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the use case: updating model-level settings, with the key qualifier that 'any subset; omitted settings unchanged' tells the agent when it can safely call this without affecting other settings. It does not explicitly name alternatives or exclusions, but the model-level scope is self-evident against the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_query_groupA
Put a shared expression or a table partition into a query group (display folder). objectType = expression | partition. For a partition, name is the table name (uses its first partition) or 'Table/Partition'. Creates the query group if it does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the shared-expression name, or 'Table' / 'Table/Partition' | |
| sessionId | Yes | ||
| objectType | Yes | expression | partition | |
| queryGroupFolder | Yes | the query group folder to put it in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses key behaviors: it creates the query group if absent, and for partitions it uses the first partition or a specific path. These are valuable beyond the schema, though it omits whether existing group membership is replaced or appended.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loaded with the core purpose. It repeats the objectType enum that is already in the schema, which is a minor redundancy, but every sentence otherwise contributes useful context. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple assignment tool, the description covers main inputs and the auto-create behavior. However, it does not explain whether the object is moved between groups or if multiple groups are supported, nor does it mention error conditions or permissions. Given no output schema, some additional context would be helpful but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers most parameters (name, objectType, queryGroupFolder) with 75% coverage. The description adds the 'uses its first partition' nuance for the name parameter, but otherwise repeats schema info. It does not explain sessionId, but that is a common pattern. Schema does the heavy lifting, with marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Put a shared expression or a table partition into a query group') with explicit resource types and destination. It also disambiguates from sibling tools like add_query_group by focusing on assigning existing objects rather than just creating groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool (for assigning expressions/partitions to display folders) and provides important usage details like objectType values and partition naming conventions. It does not explicitly name alternative tools or exclusions, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_backgroundC
Set a page's background colour for a clean, professional canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | hex colour e.g. #F5F7FA | |
| pageName | Yes | ||
| transparency | No | 0 = opaque, 100 = fully transparent | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden of behavioral disclosure. It only states that the tool sets a background colour, omitting whether it overwrites existing settings, any required permissions, or the effect of the optional transparency parameter. The mutating nature 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that gets to the point without wasted words. Its brevity is appropriate for a simple setter, though it sacrifices informative detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters, no output schema, and no annotations, the description is not complete enough. It doesn't explain parameter meanings, expected outcomes, or when to use it relative to similar tools, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what the schema already provides. With schema coverage at only 50% (color and transparency have descriptions; reportSessionId and pageName do not), the description fails to compensate, leaving the required parameter semantics incompletely specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Set) and resource (a page's background colour), making the core function clear. However, it doesn't explicitly differentiate from sibling tools like set_visual_background or set_page_wallpaper, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to choose this tool over alternatives such as set_visual_background or set_page_wallpaper. There are no prerequisites, exclusions, or context hints beyond the basic action, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_displayA
Set a page's DISPLAY OPTION (how the canvas fits the screen: FitToPage|FitToWidth|ActualSize) and/or its VISIBILITY (AlwaysVisible|HiddenInViewMode - hide the page from viewers). Both optional; set at least one.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visibility | No | AlwaysVisible | HiddenInViewMode | |
| displayOption | No | FitToPage | FitToWidth | ActualSize | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It clearly explains the meaning of each value (e.g., HiddenInViewMode hides the page from viewers) and the constraint that at least one setting must be provided. It does not detail side effects or permissions, but for a simple setter, the described behavior is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and resource, uses parentheses for enum lists, and includes the 'set at least one' constraint without waste. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description covers the essential behavioral aspects: what can be set, allowed values, and the required constraint. It does not discuss reportSessionId or differentiate from closely related siblings, but overall it provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with descriptions for page, visibility, and displayOption. The description adds context by explaining the visibility values and reiterating the display option enums. However, it does not explain reportSessionId, which is a required parameter lacking schema description, leaving a meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a page's display option and/or visibility, enumerating exact allowed values for each. It distinguishes itself from the sibling set_page_visibility by covering both display option and visibility, and by noting both are optional but at least one must be set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you need to set display option, visibility, or both. It does not explicitly name alternatives like set_page_visibility for visibility-only cases, leaving some ambiguity about tool selection among the many sibling set_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_tab_orderA
Set a page's KEYBOARD TAB ORDER with explicit HIDE: orderedVisuals (comma-separated) get sequential tab order; hidden (comma-separated) get tabOrder -1 (removed from the tab sequence). Visuals in neither list keep their order. Set at least one list.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| hidden | No | comma-separated visual names to remove from tab order | |
| orderedVisuals | No | comma-separated visual names in tab order | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behaviors: orderedVisuals get sequential tab order, hidden visuals get tabOrder -1, visuals in neither list retain their order, and at least one list must be set. This goes beyond the schema descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and every clause adds value. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for a moderately complex tool: it explains the behavior for all parameter combinations and the required condition. While it doesn't mention return values or error cases, the lack of an output schema and the tool's simplicity make this adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters with descriptions, but the tool description adds meaningful semantics: it explains the effect of orderedVisuals vs hidden on tabOrder values and the constraint of setting at least one list. This enriches the parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('a page's KEYBOARD TAB ORDER'), clearly distinguishing it from sibling tools like set_tab_order by specifying page-level keyboard navigation. The HIDE semantics further clarify its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to configure keyboard tab ordering for visuals on a page, but it does not explicitly state when to use it over alternatives (e.g., set_tab_order) or provide exclusions. There is no explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_typeA
Set a page's TYPE: standard | tooltip | drillthrough. tooltip sets the small tooltip canvas (320x240) and flags the page as a report-page tooltip; drillthrough flags it as a drill-through target. Pair tooltip with set_visual_tooltip_page. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| type | No | standard | tooltip | drillthrough | standard |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that tooltip sets a 320x240 canvas and flags the page as a report-page tooltip, and drillthrough flags it as a target. It does not mention side effects like overwriting the current type or requiring a report session, but the key behaviors are revealed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all informative and front-loaded. It states the core purpose immediately, then adds behavioral details and practical pairing advice with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple page-type setter with no output schema or annotations, the description covers the essential behavioral context (canvas size, flag behavior, pairing tip). It lacks explicit information about return values or side effects, but the tool is simple enough that this is a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers page and type but not reportSessionId (67% coverage). The description enriches the type parameter with concrete explanations of each valid value and their consequences. It adds no detail for reportSessionId, but the most meaningful parameter receives substantial semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: 'Set a page's TYPE' with explicit valid values (standard, tooltip, drillthrough). It distinguishes itself from sibling page-related tools by explaining the specific effects of tooltip (320x240 canvas, report-page tooltip flag) and drillthrough (drill-through target).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: explains when to use the tooltip type and instructs pairing with set_visual_tooltip_page. It also advises verifying the render in Desktop. However, it does not explicitly contrast with sibling tools like set_drillthrough or add_drillthrough, so it lacks a full when/not-to-use matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_visibilityA
Hide or show a report page (the tab). A hidden page stays in the file and keeps working, but viewers in the Power BI Service do not see its tab - use it to keep a page out of a published report. hidden=false shows it again.
| Name | Required | Description | Default |
|---|---|---|---|
| hidden | No | ||
| pageName | Yes | page name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does well. It discloses that hidden pages remain in the file and functional, that viewers in Power BI Service do not see the tab, and that hidden=false reverts the visibility—offering clear behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. Every sentence adds value: the first states the action, the second explains the effect and reversible nature. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with no output schema, the description is sufficiently complete: it explains the operation, the impact on viewers, and the use case. The only minor gap is the undocumented reportSessionId, but this is a common session identifier and does not severely hinder usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%; only pageName has a description. The description clarifies the hidden parameter's semantics ('hidden=false shows it again') but does not explain reportSessionId, leaving a required parameter under-documented. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: 'Hide or show a report page (the tab).' It also explains the distinction between hiding and deleting, which helps differentiate it from page deletion or reordering tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'use it to keep a page out of a published report.' It implies the appropriate context (publishing) and the effect on viewers, but does not explicitly mention alternative tools for other visibility types (e.g., visuals, mobile).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_wallpaperA
Set the page WALLPAPER (the grey margin OUTSIDE the canvas), distinct from set_page_background (which colours the canvas area). color = hex, transparency = 0-100. Writes the page outspace object.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| color | No | wallpaper colour hex | |
| transparency | No | transparency 0-100 | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool 'Writes the page outspace object', which indicates a mutation, but it does not explain whether this is an additive update to specific properties or an overwrite of the entire outspace object, what happens when color/transparency are null, or any side effects (e.g., whether existing wallpaper settings are replaced). The behavioral implications of a page outspace write are not fully disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, then providing a key distinction, parameter hints, and the underlying effect. Every sentence earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter tool with no output schema and no annotations, the description covers the primary purpose, the key distinction from the main alternative, and the underlying write operation. It lacks details on null handling and validation, but given the tool's apparent simplicity, it is reasonably complete. The main gap is the absent reportSessionId explanation, but this is likely a shared convention across tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 75% of parameters (page, color, transparency), and the description adds little beyond reiterating 'color = hex, transparency = 0-100', which is largely redundant. The description does add context by linking the operation to 'the page outspace object', giving some meaning to the parameters' effect, but it does not compensate for the undocumented reportSessionId parameter. With schema coverage high, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('page WALLPAPER') with a clear definition: 'the grey margin OUTSIDE the canvas'. It explicitly distinguishes itself from the sibling tool set_page_background by stating that set_page_background 'colours the canvas area', eliminating ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to use this tool versus the most similar alternative, set_page_background, by explaining the difference between wallpaper (outer margin) and background (canvas). It also notes that it 'Writes the page outspace object', implying the operation affects the page-level outspace. However, it does not discuss other potential alternatives or specifically state 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.
set_partition_mA
Replace a table's Power Query (M) partition expression - e.g. to repoint a table at new source data.
| Name | Required | Description | Default |
|---|---|---|---|
| m | Yes | the full M let-expression | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It indicates a mutation via 'Replace' but does not disclose side effects (e.g., overwriting existing expression, impact on refresh), prerequisites, or reversibility, which is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the verb 'Replace' and the object, followed by a brief clarifying example. There is no wasted wording, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the core purpose but lacks behavioral context. With no annotations, no output schema, and limited parameter explanation, it is minimally viable but does not cover side effects, return values, or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%. The description adds context for 'table' and 'm' by framing them as 'a table's M partition expression' and connecting to 'new source data'. It does not elaborate on sessionId or beyond the schema's own descriptions, providing moderate added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'Replace' and the resource 'a table's Power Query (M) partition expression'. The example 'repoint a table at new source data' distinguishes it from sibling partition tools like list_partitions, refresh_partition, or set_partition_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example provides a concrete scenario (repointing at new source data), implying when to use the tool. However, it does not explicitly state when not to use it or compare with alternatives, relying on the user to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_partition_modeA
Set a partition's storage mode: Import | DirectQuery | Dual | DirectLake. Defaults to the table's first partition. Use Dual + a DirectQuery partition with set_data_coverage to build a hybrid (Import + DirectQuery) table. (Switching to DirectLake/DirectQuery may also need the matching partition source kind; this flips the Mode flag.)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Import | DirectQuery | Dual | DirectLake | |
| table | Yes | ||
| partition | No | partition name (optional; defaults to the first partition) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the default partition behavior and the nuance that the tool 'flips the Mode flag' but may require additional source kind changes. However, it does not mention potential side effects like refresh implications or error conditions if the partition doesn't exist, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no redundancy. It front-loads the core action and parameters, then adds the default and a caveat in a compact way. Every sentence contributes useful information, and the mention of 'Mode flag' is a nice shorthand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward setter with 4 parameters and no output schema. The description covers the purpose, default behavior, the hybrid scenario, and a key caveat about source kind. It does not cover possible error conditions or return behavior, but for this simple mutation tool the description is adequately complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (mode and partition have descriptions; table and sessionId do not). The description adds meaning to the mode values by naming them and clarifies the partition default explicitly ('Defaults to the table's first partition'), reinforcing and extending the schema's description. It also explains the hybrid use case involving set_data_coverage, which helps parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a clear resource ('a partition's storage mode') and enumerates the exact allowed values (Import | DirectQuery | Dual | DirectLake). It also differentiates from related tools by focusing on the Mode flag and explicitly mentioning the complementary tool set_data_coverage for hybrid tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: states the default behavior (defaults to the table's first partition) and a specific use case (build a hybrid table using Dual + DirectQuery with set_data_coverage). It also warns about the need to match the partition source kind when switching to DirectLake/DirectQuery, which helps the agent decide when and how to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_pbir_bookmarkA
Overwrite an existing PBIR bookmark's explorationState in place (keeps its GUID name). hiddenVisuals = JSON array of the visual GUID names to hide on the bookmark's page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the bookmark GUID name to overwrite | |
| page | Yes | page GUID name or displayName the bookmark activates | |
| displayName | Yes | bookmark title | |
| hiddenVisuals | No | JSON array of visual GUID names to hide | [] |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key mutation behavior ('overwrite in place') and explains the hiddenVisuals parameter. However, it does not mention potential side effects, error behavior (e.g., if bookmark does not exist), or permissions required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. The first states the core purpose, the second explains the key parameter. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple update tool, but no output schema and no annotations mean it should disclose more about error conditions, prerequisites (e.g., bookmark must exist), or return behavior. The description covers the main action but leaves these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so baseline is 3. The description adds extra meaning for hiddenVisuals by specifying it is a JSON array of visual GUID names to hide on the bookmark's page. It also clarifies 'name' as a GUID name. This adds value beyond the schema without repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Overwrite') and resource ('existing PBIR bookmark's explorationState'), and clarifies the in-place nature ('keeps its GUID name'). This clearly distinguishes it from sibling tools like add_pbir_bookmark or delete_bookmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states this tool operates on an existing bookmark ('existing'), which implies it is for updates rather than creation. However, it does not explicitly name alternatives (e.g., add_pbir_bookmark), so usage guidance is clear but without explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_pbir_visual_formatA
Set ONE formatting property on a PBIR visual, merged into its objects tree via the shared encoder. card = the formatting object (e.g. legend, dataLabels, title, background). bucket = objects (data cards) | visualContainerObjects (chrome). value is a SCALAR (true/false, a number, 'text', '#RRGGBB') encoded by property kind, OR (when valueIsJson=true) a pre-shaped structured PBI JSON value written verbatim (a measure-bound expr {"measure":"T[M]"}, a FillRule, an image, gradient stops).
| Name | Required | Description | Default |
|---|---|---|---|
| card | Yes | formatting object/card id, e.g. legend|dataLabels|title|background | |
| page | Yes | page GUID name or displayName | |
| value | Yes | the value: a scalar by default, or structured PBI JSON when valueIsJson=true | |
| bucket | No | objects | visualContainerObjects | objects |
| visual | Yes | visual GUID name | |
| property | Yes | property id, e.g. show|fontSize|labelColor|fontColor | |
| valueIsJson | No | set true to parse value as a JSON node written verbatim (the Wave M nested-object behaviour) | |
| pbirSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well. It discloses the merging behavior ('merged into its objects tree'), explains the two value modes (scalar vs. JSON verbatim), and gives concrete examples (measure-bound expr, FillRule, image, gradient stops). It does not mention error handling or permissions, but the core 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense yet concise, with no filler. It front-loads the core purpose, then defines the key terms (card, bucket, value) in a logical flow. Every sentence adds value, and the examples are efficiently packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 8 parameters and no output schema, the description covers the tricky parts: the merging behavior, valueIsJson handling, and the distinction between bucket types. It does not describe return values or error scenarios, but those are not implicit requirements for a property-setting tool. Slight gap: it could mention what the tool doesn't do (e.g., not for bulk updates) explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, and the description significantly enriches the parameters. It clarifies 'card' as a formatting object with examples, 'bucket' as objects vs. visualContainerObjects, and 'value' with scalar/JSON modes and concrete JSON node examples. This goes well beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's specific action: 'Set ONE formatting property on a PBIR visual, merged into its objects tree via the shared encoder.' It distinguishes itself from generic formatting tools by emphasizing the singular property scope and the merging mechanism. The examples 'legend, dataLabels, title, background' ground the abstract card concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: for setting exactly one formatting property at a time, with detailed guidance on card and bucket semantics. It does not explicitly name alternative tools for multi-property changes, but the 'ONE' emphasis and the card/bucket explanation effectively communicate its intended scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_personalizationA
Turn PERSONALISATION (inline exploration) on/off. scope=report sets the report-level allowInlineExploration setting (viewers can re-jig visuals for themselves). scope=page sets the per-page personalizeVisual toggle (perVisualPersonalize).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page name (required for scope=page) | |
| scope | No | report | page | report |
| reportSessionId | Yes | ||
| perVisualPersonalize | No | per-visual personalise toggle (scope=page) | |
| allowInlineExploration | No | allow inline exploration (scope=report) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full responsibility for behavioral disclosure. It explains the viewer-facing impact ('viewers can re-jig visuals for themselves') and the two toggles, but does not mention potential side effects, permission requirements, or reversibility. This is moderate transparency but leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and each sentence earns its place by explaining a different scope. It is concise, clear, and free of unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, mostly optional) and no output schema, the description covers the essential behavior and scope distinctions. It does not explicitly mention that reportSessionId is required or that page is required for scope=page, but those are documented in the schema, so the agent can rely on that. Overall, it is sufficiently complete for a toggle tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes each parameter, so baseline is 3. The description adds value by clarifying the meaning of the settings (e.g., 'inline exploration' and 'viewers can re-jig visuals') and explicitly linking scope to the relevant parameter. This goes beyond mere schema descriptions and helps the agent understand the functional impact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to turn PERSONALISATION (inline exploration) on/off. It further differentiates between report-level and page-level scopes, providing distinct actionable meanings for each. This is a specific verb+resource combination that distinguishes it from other set_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use each scope: scope=report for report-level allowInlineExploration, and scope=page for per-page personalizeVisual toggle. It does not explicitly mention alternatives or exclusions, but the scope-specific instructions effectively guide the agent on usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_play_axisA
Bind a field to a scatter chart's PLAY AXIS (a data binding: the Play projection role). field = "Table.Column". Animates the scatter over the field's values. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| field | Yes | the play field as Table.Column | |
| visual | Yes | scatter-chart visual name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the binding behavior, the animation effect ('Animates the scatter over the field's values'), and a caveat ('Verify the render in Desktop'). It does not mention side effects like overwriting existing play axis or permissions, but the core 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences, front-loaded with the main purpose, followed by behavioral detail and a verification note. Every sentence contributes value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 required params, no output schema, no annotations), the description provides the essential operational context: what it does, the animation effect, and a Desktop verification step. It lacks error handling or prerequisite details, but for a binding operation it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes 3 of 4 parameters with useful descriptions (page, field, visual), and the description reinforces the field format ('Table.Column') already present in the schema. The description adds little beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Bind a field to a scatter chart's PLAY AXIS', specifying the verb, resource, and scope. It distinguishes the tool from similar siblings like set_axis by explicitly mentioning the PLAY AXIS role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for binding a field to a scatter chart's play axis, with the animation effect described. However, it does not explicitly name alternatives or exclusions, so guidance leans on implied usage rather than explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_plot_area_imageA
Set a chart's PLOT-AREA background image (the plotArea image object). imageUrlOrPath = a local file (embedded into the report) or an http(s)/data URL. scaling = Fit|Fill|Normal. transparency 0-100 optional. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | chart visual name | |
| scaling | No | Fit|Fill|Normal | Fit |
| transparency | No | 0-100 image transparency | |
| imageUrlOrPath | Yes | local image file or http(s)/data URL | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It adds useful context: local files are embedded, scaling and transparency parameters are explained, and a Desktop verification step is recommended. However, it does not mention whether setting the image overwrites an existing image, reversibility, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main verb and resource. It concisely covers the key parameters and a verification note without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, it is fairly complete but lacks some context: it doesn't state what happens if the plotArea image object doesn't exist, whether the change persists in the report session, or what errors might occur. The 'Verify the render in Desktop' note is helpful but ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the baseline is 3. The description adds value by clarifying imageUrlOrPath (local file embedded vs URL), explaining scaling options (Fit|Fill|Normal), and noting transparency is optional (0-100). This enriches the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set a chart's PLOT-AREA background image' with a specific verb and resource. It distinguishes from sibling tools like set_visual_background or set_page_background by explicitly naming the plotArea image object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool compared to alternatives. It does not mention exclusions or when to prefer a different image-setting tool. The only hint is the parameter explanation, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_qna_phrasingA
Author an LSDL Q&A phrasing into the model's linguistic metadata - the way to teach Q&A a concept like 'happy customers'. phrasingType = Verb | Adjective | Noun | PreModifier | Preposition | Attribute | Name | DynamicNoun. phrasingJson is the LSDL phrasing definition as a JSON object. FLAG: the linguistic phrasing schema is large and is stored verbatim, not validated.
| Name | Required | Description | Default |
|---|---|---|---|
| culture | No | culture/locale (optional; defaults to the model culture) | |
| sessionId | Yes | ||
| phrasingJson | Yes | the LSDL phrasing definition as a JSON object | |
| phrasingName | Yes | a name for the phrasing/relationship | |
| phrasingType | Yes | Verb | Adjective | Noun | PreModifier | Preposition | Attribute | Name | DynamicNoun |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It includes a useful FLAG that the phrasing schema is large, stored verbatim, and not validated, which warns about input handling. However, it does not disclose side effects like overwriting existing phrasing, permission requirements, or error behavior, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise and includes an example plus a warning, but it is a bit loosely structured with a run-on sentence. It earns its place by explaining purpose, parameter types, and a key caveat, but could be tightened for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description covers purpose, key parameters, and a validation warning, which is useful. However, it does not explain how to construct a valid phrasingJson or what the result/response looks like, and the lack of sibling comparisons reduces completeness for an AI agent deciding among many set_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (4 of 5 parameters described), which meets the baseline of 3. The description repeats the phrasingType enum and phrasingJson meaning that is already in the schema, adding little new semantics. The FLAG about validation is more behavioral than parameter-focused, so no higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Author') and resource ('LSDL Q&A phrasing'), and clarifies it writes to the model's linguistic metadata. The example ('happy customers') makes the purpose concrete. This distinguishes it from siblings like set_synonyms by targeting the Q&A/linguistic context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the example of teaching Q&A a concept, but does not explicitly state when to use this tool versus alternatives such as set_synonyms or set_translation. There are no exclusions or direct comparisons to other linguistic metadata tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_query_bufferA
Power Query folding hint: wrap the table in Table.Buffer so it loads once into memory (stops re-evaluation and downstream folding). Appends Table.Buffer to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it states the action (wrap in Table.Buffer), the effect (loads once, stops re-evaluation and downstream folding), and the implementation detail (appends to M query). It lacks caveats like stale data or memory impact, but covers the core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the key idea ('Power Query folding hint') and then a specific action. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's action and effect, but lacks parameter semantics (3 params, low schema coverage) and any mention of prerequisites or side effects. It is adequate for a simple mutation but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only partitionName has a description), and the description adds no parameter details. It references 'the table' but doesn't explain sessionId or partitionName. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool wraps a table in Table.Buffer, with a specific verb ('wrap', 'appends') and resource ('the table's M query'). It also explains the purpose ('loads once into memory') and distinguishes it from related tools like set_stop_folding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is a 'Power Query folding hint' that stops re-evaluation and downstream folding, implying when to use it. It does not explicitly mention alternatives or exclusions, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_refresh_scheduleA
Set a published dataset's scheduled-refresh plan (PATCH .../refreshSchedule): enable/disable, the days, the local times and the time zone. Needs an AAD access token with the Power BI scopes (accessToken param or DAXOPS_PBI_TOKEN); never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | comma-separated days, e.g. "Monday,Wednesday,Friday" | |
| times | No | comma-separated 24h times, e.g. "07:00,16:30" | |
| enabled | Yes | enable (true) or disable (false) the schedule | |
| datasetId | Yes | dataset id | |
| accessToken | No | AAD access token with Power BI scopes; omit to use DAXOPS_PBI_TOKEN | |
| workspaceId | Yes | workspace (group) id | |
| localTimeZoneId | No | Windows time-zone id, e.g. "New Zealand Standard Time" |
TDQS
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 discloses authentication needs and that the token is never echoed, which is valuable safety context. It does not detail overwrite behavior or side effects, but the verb 'set' implies replacement of the existing plan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes essential auth caveat without extraneous text. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the schema fully documents parameters, and the description covers the main action and auth requirement. It does not mention return values or error scenarios, but with no output schema, these are not essential for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description groups the schedule components (enable/disable, days, times, timezone) but does not add syntactic details beyond what the schema already provides. This is adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Set' plus the resource 'scheduled-refresh plan' and explicitly names the components (enable/disable, days, times, timezone). It also includes the HTTP PATCH endpoint, which unambiguously distinguishes this from refresh_dataset and get_refresh_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for published datasets and requires an AAD token, which are important usage prerequisites. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_report_settingsA
Set REPORT-LEVEL behaviour toggles (ExplorationSettings). settings = a JSON object of toggle->value. Booleans: useStylableVisualContainerHeader, hideVisualContainerHeader, defaultFilterActionIsDataFilter (filter vs highlight on click), defaultDrillFilterOtherVisuals, useCrossReportDrillthrough, allowChangeFilterTypes, allowInlineExploration (personalise visuals), useEnhancedTooltips, useScaledTooltips. Enums: exportDataMode (AllowSummarized|AllowSummarizedAndUnderlying|None), pagesPosition (PagesPane|Bottom). Merges - untouched toggles are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes | JSON object of toggle -> value, e.g. {"defaultFilterActionIsDataFilter":true,"exportDataMode":"None"} | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on full burden and does well by disclosing merge semantics, listing valid boolean and enum values, and clarifying that untouched toggles are preserved. It lacks information on return values or permissions, but the mutation behavior is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence serves a purpose. It is front-loaded with the core purpose, then systematically organized into Booleans, Enums, and merge behavior, making it easy to parse without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no output schema or annotations, the description is largely complete: it covers all valid inputs and merge behavior, sufficient for an agent to invoke correctly. Minor omissions like how to obtain reportSessionId or what the response contains prevent a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only documents 'settings' with a brief example and leaves 'reportSessionId' unexplained. The description compensates extensively by enumerating all allowed toggle keys, enum options, and the merge behavior, adding substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets REPORT-LEVEL behavior toggles (ExplorationSettings), using a specific verb and resource. It distinguishes itself from sibling tools by emphasizing 'REPORT-LEVEL' and enumerating the exact toggles affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when changing report-level behavior toggles. It also implies exclusion of model-level settings via 'REPORT-LEVEL', but it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_rlsA
Set or update the row-level security (RLS) filter for a role on a table. The DAX boolean expression keeps only the rows it returns true for, e.g. "[Region] = USERPRINCIPALNAME()" or "'Sales'[Country] = "NZ"". Creates the table permission if absent.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | role name (create with add_role first) | |
| table | Yes | table the filter applies to | |
| sessionId | Yes | ||
| daxFilterExpression | Yes | DAX boolean filter expression |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing that the tool is an upsert ('set or update'), that the DAX expression keeps only rows returning true, and that it creates the table permission if absent. It does not mention authentication requirements or reversibility, but the key side effects are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a concise definition and an illustrative example. Every sentence contributes purpose, behavior, and context without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema or annotations, the description adequately covers the purpose, the DAX filter semantics, and the side effect of creating permissions. It does not mention prerequisites beyond the role existing (noted in schema) or what happens to an existing filter, but for a focused setter tool, the core context is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds meaningful semantics by explaining how the daxFilterExpression behaves ('keeps only the rows it returns true for') and providing concrete examples. This goes beyond the schema descriptions, which only label the parameters, though sessionId remains undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Set or update the row-level security (RLS) filter for a role on a table,' identifying the specific verb, target resource, and context. It differentiates from siblings like add_role or set_role_permission by focusing on the RLS filter and the filtering semantics, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what the tool does and mentions it creates the table permission if absent, but it does not explicitly say when to use it versus alternatives such as add_dynamic_rls or set_role_permission. It offers context but no exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_role_permissionB
Change a role's model-wide permission: Read | ReadRefresh | Refresh | Administrator | None.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| sessionId | Yes | ||
| modelPermission | Yes | Read | ReadRefresh | Refresh | Administrator | None |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and possible values, without mentioning prerequisites (e.g., role must exist), whether changes are immediate, side effects on existing sessions, or any return value. This is a material gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists the essential information without waste. Every word contributes to understanding the tool's core purpose and the permission options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the only source of guidance. It omits behavioral side effects, prerequisites, and parameter meanings beyond the permission enum, making it insufficient for an agent to confidently select and invoke the tool in all its nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, covering just modelPermission. The description adds the 'model-wide' qualifier but does not explain the role parameter (name vs. ID) or the required sessionId, leaving most parameters semantically underdocumented. It mostly duplicates the schema's enum description for modelPermission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Change' with a clear resource 'a role's model-wide permission' and enumerates the exact permission values. This distinguishes it from sibling tools like set_rls (row-level security) and add_role/remove_role, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys what the tool does and implies its usage context (changing model-wide role permissions), but it offers no explicit guidance on when to use it versus related tools like set_rls or add_role_member. The usage is implied rather than stated with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_selection_expression_behaviorA
Set the model-wide selection-expression behavior controlling which clients honour calc-group selection expressions: automatic | nonvisual | visual. Needs compatibility level 1605+ (auto-bumped, reported back). FLAG: stamped as a PBI_SelectionExpressionBehavior model annotation - the strongly-typed property is absent from this build.
| Name | Required | Description | Default |
|---|---|---|---|
| behavior | Yes | automatic | nonvisual | visual | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses two non-obvious behaviors: auto-bumping compatibility level (with report back) and that the change is stamped as a model annotation rather than a strongly-typed property. This adds meaningful transparency beyond a plain 'set' operation, though it stops short of covering reversibility or effect on existing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the purpose and then add critical technical context. Every sentence provides distinct value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's modest complexity (2 params, no output schema), the description covers purpose, allowed values, a version prerequisite, and a side effect (auto-bump, annotation stamp). It falls slightly short by not clarifying what 'reported back' means or the role of sessionId, but overall it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'behavior' is documented in the schema, and the description merely repeats the allowed values. 'sessionId' is completely undocumented in both schema and description, and the description adds no new parameter meaning or usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Set' and identifies the exact resource: 'model-wide selection-expression behavior controlling which clients honour calc-group selection expressions.' It also enumerates the value options, making the tool's scope clear and distinguishable from sibling set_calc_group_selection_expressions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite (compatibility level 1605+) and notes auto-bump behavior, but does not explicitly say when to use this tool over alternatives or mention exclusions. The distinction from related sibling tools is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_shapemap_custom_mapA
Set a custom TopoJSON/GeoJSON map on a shapeMap (the custom-map upload). topojsonOrGeojson = a local .json file (embedded), an http(s) URL, or an inline JSON string. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visual | Yes | shapeMap visual name | |
| reportSessionId | Yes | ||
| topojsonOrGeojson | Yes | local .json file, URL, or inline TopoJSON/GeoJSON |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains acceptable input formats and implies a desktop requirement via 'Verify the render in Desktop', but does not disclose whether the operation is destructive, overwrites existing maps, or requires specific permissions. Basic context is present but gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the main purpose front-loaded and supporting details in a parenthetical. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description covers the purpose, parameter formats, and a usage tip. While it does not explain the shapeMap concept or post-operation effects, it is reasonably complete for a setter tool. A slightly longer description mentioning the required report session or success criteria would improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description largely restates the topojsonOrGeojson parameter format, adding the word 'embedded' for local files. It does not add significant details about page or visual parameters beyond what the schema provides. The description adds marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a custom TopoJSON/GeoJSON map on a shapeMap, using a specific verb and resource. It distinguishes from sibling tools like set_azuremap_layer_source and set_map_conditional_formatting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates a specific use case ('the custom-map upload') and advises verifying the render in Desktop, but does not mention alternative tools or when not to use it. This provides clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_show_items_no_dataA
Toggle 'Show items with no data' for one field in a visual: categories with no rows still appear (e.g. all months even with zero sales). The field must already be projected on the visual. Writes the projection's showAll flag.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| show | No | true = show items with no data | |
| field | Yes | the field | |
| table | Yes | table that owns the field | |
| visual | Yes | visual name (from list_visuals) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the underlying action ('Writes the projection's showAll flag'), the toggle nature, and the visual outcome. This is transparent about the side effect. It doesn't mention reversibility or required permissions, but the mutation is stated explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences, front-loaded with the action, then prerequisites and an example. Every word adds value, with no wasted phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-field toggle with no output schema, the description covers the necessary context: what it does, the prerequisite, and the implementation detail. It does not explain return values or error cases, but for this simple tool the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), with five of six parameters described. The description adds context about the 'show' parameter by explaining the semantic effect, but does not detail each parameter. It effectively relies on the schema for parameter meaning, which is acceptable given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Toggle'), the target resource ('Show items with no data' for one field in a visual), and the specific behavior (categories with no rows still appear). It distinguishes itself from sibling tools by precision about the field-level toggle and the projection requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear precondition ('The field must already be projected on the visual') which guides when the tool can be used. It also explains the effect with an example, making the use case clear. It does not explicitly name alternative tools, but the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_slicer_conditional_formattingA
Apply measure-driven conditional formatting to a SLICER or button-slicer (generalises the table/matrix FillRule builders). target = fill|font|callout. rules = JSON array of {min,max,color} bands driven by the measure. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| rules | Yes | JSON array of {min, max, color} bands | |
| target | Yes | fill | font | callout | |
| visual | Yes | slicer visual name | |
| measure | Yes | measure that drives the colour | |
| measureTable | Yes | table that owns the measure | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It includes a useful instruction to 'Verify the render in Desktop', implying changes may not be immediately visible, and explains the target and rule format. However, it does not disclose whether existing formatting is overwritten, what happens on invalid input, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, uses a clear front-loaded purpose statement, and provides essential details in a few sentences. Every sentence adds value: purpose, target/rules syntax, and a verification note. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core operation, key parameters, and a post-requisite verification step. It is reasonably complete for a moderately complex tool, though it omits edge-case details like overwrite semantics or prerequisites on the slicer having a measure. Overall, it provides enough context for a competent agent to use the tool correctly in typical scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 86% of parameters with descriptions. The description repeats the target and rules formats (fill|font|callout and {min,max,color} bands) that are present in the schema, adding little new semantic information. Thus it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Apply measure-driven conditional formatting to a SLICER or button-slicer.' It further distinguishes itself from related tools by noting it 'generalises the table/matrix FillRule builders' and listing target options (fill|font|callout), making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the tool is for slicer/button-slicer conditional formatting, which contrasts with table/matrix builders. It gives a clear use case but does not explicitly mention when not to use it or name alternative tools, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_slicer_selectionA
TARGETED offline slicer fix: open a CLOSED .pbix, make a slicer SINGLE-SELECT (and optionally pre-select a default value), then write the .pbix back (DataModel preserved). Single-select writes the ground-truth objects.selection[0].properties.strictSingleSelect = true - Power BI's 'Single select', which forces exactly one item AND auto-picks the first available option when none is selected. THIS is the fix for a field-parameter axis that flat-lines: a field-parameter-bound chart only renders when its slicer is filtered to ONE option. Locate the slicer by its title (e.g. 'Chart Period'), config name, or its bound field (e.g. 'Brand Chart Axis'). default_value (optional) is written as a Categorical selection filter in the slicer's container so it opens on that specific value. The .pbix must NOT be open in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) | |
| slicer | Yes | the slicer: its title (e.g. 'Chart Period'), config name, or bound field (e.g. 'Brand Chart Axis') | |
| default_value | No | optional default value to pre-select (e.g. 'MonthYear') | |
| single_select | No | true = single-select (writes strictSingleSelect: forces one item, auto-picks the first if none) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it writes back to the .pbix with 'DataModel preserved', writes 'strictSingleSelect = true', auto-picks the first option when none is selected, and writes the default_value as a 'Categorical selection filter'. It also warns against the file being open in Power BI Desktop. These are substantive behavioral disclosures beyond the schema, making the tool's side effects and constraints clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with 'TARGETED offline slicer fix' and provides a clear sequence of actions. It is longer than necessary with repeated emphasis ('THIS is the fix', 'TARGETED'), but every sentence carries useful information about the operation, outcome, and constraints. It is well-organized and sufficiently concise for a complex mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, the exact mechanism of single-select, how default_value is applied, and the critical prerequisite that the .pbix must be closed. Given the tool has 5 parameters, no output schema, and no annotations, this is quite complete. It does not detail error cases or return values, but those are less critical for this type of offline mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters with descriptions, so the baseline is 3. The description adds meaning by explaining how default_value is written ('as a Categorical selection filter') and reinforcing the purpose of single_select in the context of field-parameter axes. This additional semantic context elevates it above baseline, but not to a 5 because the schema already handles the basics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'open a CLOSED .pbix, make a slicer SINGLE-SELECT (and optionally pre-select a default value), then write the .pbix back'. It identifies the specific resource (slicer in a .pbix) and the verb (set single-select). However, it does not distinguish itself from the sibling tool 'fix_slicer_single_select', which appears to have a nearly identical purpose, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'THIS is the fix for a field-parameter axis that flat-lines' and states the prerequisite 'The .pbix must NOT be open in Power BI Desktop'. It does not explicitly mention alternatives or provide when-not-to-use guidance, so it falls short of a 5, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_source_lineage_tagA
Set the SourceLineageTag (the SOURCE-side name a Direct Lake / composite model re-binds to after a schema refresh) on a model object. objectType = model | table | column | measure | hierarchy | partition | relationship; pass the object's table where needed. value = the source object's name. Needs compatibility level 1550+ (auto-bumped, reported back).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the object's name | |
| table | No | the object's table (for column/measure/hierarchy/partition) | |
| value | Yes | the SOURCE name to bind to (e.g. the lakehouse column/table name) | |
| sessionId | Yes | ||
| objectType | Yes | model | table | column | measure | hierarchy | partition | relationship |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It reveals that the compatibility level is auto-bumped and 'reported back', a side effect not evident from the schema. It also explains the value semantics and table requirement, but does not mention reversibility or permissions. This is reasonably transparent for a metadata-set operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the core purpose, then parameter explanations, then a compatibility note in three sentences. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, no annotations, no output schema), the description covers key aspects: what it sets, which object types are valid, the table condition, value definition, and compatibility requirement. It does not fully describe the return value or error handling, but the core usage is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3. The description largely restates what is already in the schema (objectType values, table usage, value meaning), adding only minor clarification like 'pass the object's table where needed'. No significant new semantic detail beyond the schema is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Set the SourceLineageTag' and identifies the resource as 'a model object', with precise semantics about the SOURCE-side name for Direct Lake/composite models after schema refresh. This distinguishes it from the sibling tool 'set_lineage_tag' by specifying the SOURCE direction and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use this tool (after a schema refresh, on Direct Lake/composite models) and a prerequisite (compatibility level 1550+, auto-bumped). It does not explicitly name alternatives or exclusions, but the specialized use case is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_stop_foldingB
Power Query folding hint: append Table.StopFolding to prevent the M engine folding any further operations into the data source's native query. Appends Table.StopFolding to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 explains the core behavior ('prevent the M engine folding any further operations') and what it does ('Appends Table.StopFolding to the table's M query'). However, it does not mention side effects, whether repeated applications accumulate, reversibility, or required permissions. The description gives the essential behavior but lacks deeper context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with the key phrase 'Power Query folding hint'. Every word contributes meaning, and it is appropriately sized for the tool's scope. It could add more detail without becoming bloated, but as written it is tight and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, no annotations, and minimal parameter documentation. The description provides the core purpose and effect but lacks guidance on when to use it relative to siblings, parameter semantics, or potential side effects. For a mutating tool with three parameters, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate. It references the 'table's M query', which implies the 'table' parameter is the target, but it does not explain 'sessionId' or the optional 'partitionName' beyond what the schema already provides. The description adds minimal value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: appends Table.StopFolding to a table's M query to prevent query folding. It specifies the verb ('append') and the resource ('the table's M query'), and explains the intent (prevent further folding). However, it does not explicitly distinguish this from related sibling tools like 'value_nativequery_folding' or 'add_table_view_folding'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to prevent the M engine from folding further operations into the data source's native query. It provides a clear context but offers no explicit exclusions, prerequisites, or references to alternative tools. The usage guidance is present but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_summarize_byA
Set a column's default summarization (the implicit aggregation used when the column is dropped on a visual). summarizeBy = Default | None | Sum | Min | Max | Count | Average | DistinctCount. Set None on key/ID columns so they are not silently summed.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| sessionId | Yes | ||
| summarizeBy | Yes | Default | None | Sum | Min | Max | Count | Average | DistinctCount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It explains the core effect (sets default summarization) and implys this is a metadata setting, but it does not mention whether it affects existing visuals, if it persists across sessions, or any side effects/reversibility. The description gives some context but lacks deeper behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action. The first sentence defines the tool; the second lists values and provides a practical tip. Every sentence earns its place, and there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple configuration tool with no output schema, the description covers the main purpose and a key use case. It does not mention expected return values (not required) or persistence details, but given the simplicity, it is reasonably complete. A small gap: what 'Default' means and how this interacts with existing visuals, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only summarizeBy has a schema description). The description adds value by repeating the allowed values and explaining the special use of None for key/ID columns. However, it does not clarify 'Default' or elaborate on table, column, or sessionId semantics. It partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set a column's default summarization' with a specific resource (a column). The parenthetical 'the implicit aggregation used when the column is dropped on a visual' adds precise scope, distinguishing it from other set_* tools that target different properties. It is specific, actionable, and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete usage tip: 'Set None on key/ID columns so they are not silently summed.' This tells the user when to use a particular value. However, it does not explicitly discuss when to avoid this tool or mention alternatives (e.g., set_aggregation), so it falls 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.
set_synonymsA
Add Q&A natural-language synonyms for a model object (so 'revenue'/'turnover' map to a 'Sales' measure). objectType = table | column | measure | hierarchy; pass the object's table for column/measure/hierarchy. synonyms is a comma-separated list. culture defaults to the model culture. NOTE: the Q&A linguistic schema is large and complex - this authors a flat per-entity synonyms list and merges into any existing schema; richer phrasings/relationships need a hand-authored schema.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | the object's table (required for column/measure/hierarchy) | |
| culture | No | culture/locale (optional; defaults to the model culture, e.g. en-US) | |
| synonyms | Yes | synonyms, comma-separated, e.g. "revenue,turnover,takings" | |
| sessionId | Yes | ||
| objectName | Yes | the object's name | |
| objectType | Yes | table | column | measure | hierarchy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool merges into an existing schema, creates a flat list, and has a default culture behavior. It also notes the complexity of the Q&A linguistic schema as a limitation. However, it does not mention potential side effects beyond merging, such as whether existing synonyms are overwritten, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative and reasonably concise, packed into two sentences with a note. Each sentence contributes value: purpose, parameter guidance, and a critical scope caveat. It could be slightly more front-loaded, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description covers the essential semantic context: what it does, how parameters work, and its limitations. It does not address return values, but that is often not needed for set-style operations. The description is sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), and the description mostly repeats what the schema already states (e.g., objectType values, comma-separated synonyms, culture default). It adds a small amount of context about the flat nature of the synonyms list, but overall provides little new meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds Q&A natural-language synonyms for a model object with a concrete example ('revenue'/'turnover' map to a 'Sales' measure). It specifies the relevant object types and the scope (flat per-entity list), but it does not explicitly name sibling tools like set_qna_phrasing, so it lacks direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives contextual usage guidance by explaining objectType-specific requirements (pass the table for column/measure/hierarchy) and notes the limitation that richer phrasings require a hand-authored schema. It implies when not to use the tool, but does not name a specific alternative tool, making it slightly short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_synonym_stateA
Author Q&A synonyms with an explicit State (Authored to make terms stick, Deleted to suppress an auto-generated term, Generated, Suggested) and optional Weight 0..1. objectType = table | column | measure | hierarchy; pass the object's table where needed. Extends set_synonyms (which only adds bare terms). NOTE: the Q&A linguistic schema is large; only flat per-entity terms with State/Weight are authored.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the object's name | |
| state | No | Authored | Deleted | Generated | Suggested | Authored |
| table | No | the object's table (for column/measure/hierarchy) | |
| weight | No | term weight 0..1 (optional) | |
| culture | No | culture/locale (optional; defaults to the model culture) | |
| synonyms | Yes | synonyms, comma-separated | |
| sessionId | Yes | ||
| objectType | Yes | table | column | measure | hierarchy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It explains the meaning of State values (e.g., 'Deleted to suppress an auto-generated term'), the optional Weight range, and the objectType/table requirements. However, it does not specify whether setting synonyms replaces or appends to existing ones, a meaningful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences cover purpose, key parameters, and a critical limitation. No fluff; every sentence earns its place. The structure is front-loaded with the core purpose and then expands with usage and scope notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description addresses the tool's purpose, parameter semantics, key state meanings, and the scope limitation (flat per-entity terms only). It does not mention return values, but there is no output schema, and the absence is typical. Given the 8-parameter schema with high coverage, this is adequate but could note whether the operation overwrites existing synonyms.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 88% of parameters, so baseline is 3. The description adds value by clarifying semantic intent: State values are explained ('Authored to make terms stick', 'Deleted to suppress'), Weight is specified as 0..1, and objectType values are enumerated. It also clarifies the table parameter's conditional need beyond the schema's label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool authors Q&A synonyms with an explicit State and optional Weight. It identifies the resource (Q&A synonyms) and distinguishes itself from sibling tool set_synonyms by noting it extends functionality with State/Weight support.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly references set_synonyms ('which only adds bare terms') as an alternative, implying when to use this tool (when State/Weight needed vs bare terms). It also provides usage nuances like passing the object's table for column/measure/hierarchy and notes the schema limitation to flat per-entity terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_detail_rowsA
Set a TABLE's default detail rows (Table.DefaultDetailRowsDefinition) - the DAX table returned when a user drills into a value of this table that has no per-measure detail rows. Distinct from the measure-level set_detail_rows. daxTableExpression is a DAX table expression.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| daxTableExpression | Yes | DAX table expression returning the detail rows |
TDQS
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 explain the semantic effect: it sets the default detail rows definition used when drilling into a table value with no per-measure rows. It also clarifies that daxTableExpression is a DAX table expression. However, it doesn't mention side effects like overwriting existing definitions, permissions, or error conditions, which would be helpful for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise at two sentences, front-loaded with the primary action. The inclusion of the distinct sibling and the explanatory clause about drilling is efficient. The final clause 'daxTableExpression is a DAX table expression' is slightly redundant with the schema, but overall the structure is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with no output schema, the description is fairly complete. It explains the purpose, the specific scenario in which the default applies, and the key parameter expression. It doesn't explain return values (not needed) or prerequisites like session validity, but such details are less critical for this type of operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only daxTableExpression has a description). The description mainly repeats that 'daxTableExpression is a DAX table expression' which adds no value beyond the schema. It does not explain 'sessionId' or 'table' parameters, leaving the agent to infer their meaning from names alone. This is a gap given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Set a TABLE's default detail rows (Table.DefaultDetailRowsDefinition)'. It specifies the resource (TABLE) and the specific property being set. It also distinguishes itself from the sibling tool set_detail_rows by calling out 'Distinct from the measure-level set_detail_rows', making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: 'the DAX table returned when a user drills into a value of this table that has no per-measure detail rows'. It also names the alternative set_detail_rows for measure-level detail rows, which gives an explicit alternative. However, it doesn't fully state 'when not to use' in absolute terms, only implying it via the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_olsA
Object-level security: set whether a role can SEE a whole table. permission = None (table hidden + inaccessible to the role), Read (visible), or Default (inherit). Creates the table permission if absent.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | role name | |
| table | Yes | table to secure | |
| sessionId | Yes | ||
| permission | Yes | Default | None | Read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that permission can be None, Read, or Default, and that the permission record is created if absent. However, it does not explicitly state whether existing permissions are overwritten, nor does it mention authorization requirements or effects on related settings. Some important behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, with the core purpose front-loaded and no filler. Every clause adds meaningful information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description sufficiently covers the essential aspects for invocation: role, table, permission semantics, and creation behavior. It does not describe return values, but no output schema exists, so that is acceptable. Minor gaps (e.g., update behavior if permission exists, error handling) prevent a 5, but overall it is complete enough for an agent to select and use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so description partially compensates. The permission parameter's values are explained in detail ('None (table hidden + inaccessible)', 'Read (visible)', 'Default (inherit)'), adding semantic meaning beyond the schema's simple list. The 'table' parameter is clarified as 'whole table'. Role and sessionId remain straightforward, but the description adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting table-level object security for a role. It explicitly mentions 'whole table' to distinguish from column-level security (set_column_ols sibling), and defines the permission values. The verb 'set' and resource 'table' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (table-level OLS) and explains the permission options. However, it does not explicitly name alternatives or exclusions, although 'whole table' implicitly contrasts with column-level security. A direct mention of when not to use (e.g., for column-level) would have earned a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_privateA
Set Table.IsPrivate - a private table is hidden from ALL clients (stronger than hide), the right setting for internal helper / staging tables.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| isPrivate | Yes | true to make the table private (hidden from all clients) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It successfully explains the core effect (hidden from all clients, stronger than hide) but omits details about permissions, reversibility, or any side effects on existing connections. This is adequate for a simple setter but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and key distinction. No wasted words; every clause adds value. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 scalar params, no output schema), the description covers purpose and usage context well. However, the lack of parameter explanation for sessionId and the absence of any behavioral notes beyond the flag itself prevent a perfect score. It is nearly complete but could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only isPrivate has description). The tool description does not compensate for the undocumented table and sessionId parameters. The name implies the table target, but sessionId is unexplained, and no parameter-specific guidance is provided beyond the isPrivate description in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting the Table.IsPrivate property. It distinguishes this from merely 'hide' by explaining that private is stronger and hidden from ALL clients, making its purpose unambiguous and differentiating it from sibling tools like set_table_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is the right setting for internal helper/staging tables. It implicitly contrasts with 'hide' but does not explicitly name an alternative tool, leaving some room for interpretation. However, the context is sufficient for an AI agent to understand when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_visibilityA
Hide or show a whole table in the field list (e.g. hide a bridge/parameter table).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| hidden | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the primary behavior (toggling visibility in the field list) and the example adds context. However, it does not mention potential side effects, permissions, or persistence of the change, which would be valuable for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose and an example without any filler. Every word earns its place, and the structure is ideal for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and lack of annotations, output schema, and parameter descriptions, the description covers the main function but leaves gaps: sessionId is unaddressed, and parameter semantics are under-specified. It is sufficient for basic selection but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly covers 'table' and 'hidden' ('hide or show') but does not explain the exact meaning of 'hidden' (e.g., true=hidden) or clarify what 'table' refers to (name, ID). Moreover, 'sessionId' is entirely absent from the description, leaving the parameter unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Hide or show a whole table in the field list.' It distinguishes itself from sibling visibility tools (e.g., set_column_visibility, set_visual_visibility) by focusing on entire tables and provides a concrete example (bridge/parameter table).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool via the example 'hide a bridge/parameter table,' giving clear context. However, it does not explicitly state when not to use it or name alternative tools for column/visual visibility, so it lacks full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tab_orderA
Set the KEYBOARD TAB ORDER of a page's visuals: visualOrder = comma-separated visual names in the order a keyboard user tabs through them. Writes each visual's layouts[0].position.tabOrder. Visuals not listed keep their order.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| visualOrder | Yes | comma-separated visual names in tab order | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the side effect of writing each visual's layouts[0].position.tabOrder and explains that visuals not listed keep their order. This adds meaningful behavioral detail beyond just stating 'set'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and includes a concrete spec for the key parameter. Every sentence earns its place with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema, the description explains what it does, how it works, and the effect on unlisted visuals. It does not discuss error handling or prerequisites, but given the simplicity, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly defines visualOrder as a comma-separated list of visual names, adding valuable format detail not in the schema. While reportSessionId has no description in either schema or description, the other two parameters are well covered, giving a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as setting the keyboard tab order of a page's visuals, using a specific verb and resource. It distinguishes itself from the sibling tool set_page_tab_order by explicitly focusing on visual-level tab order, and provides the exact data format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for keyboard accessibility, setting the order a keyboard user tabs through visuals. It does not explicitly mention alternatives or when not to use, but the context is strong enough to guide appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_template_columnA
Patch properties of an existing column in a closed .pbit template's model - data type, format string, hidden flag, sort-by column and default summarisation - editing the DataModelSchema JSON on disk with no Power BI Desktop. Any omitted property is left unchanged. Fails if the column does not exist. Written back in place (with a .bak guard).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | table that owns the column | |
| column | Yes | column name | |
| dataType | No | data type, e.g. int64, decimal, double, string, dateTime, boolean (omit to keep) | |
| isHidden | No | hide (true) or show (false) the column (omit to keep) | |
| pbitPath | Yes | path to the closed .pbit template | |
| summarizeBy | No | default summarisation, e.g. none, sum, count, average, min, max (omit to keep) | |
| formatString | No | format string, e.g. "#,0" or "0.0%" (omit to keep) | |
| sortByColumn | No | sort-by column name (omit to keep) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states that it writes back in place with a .bak guard, fails if the column does not exist, leaves omitted properties unchanged, and works without Power BI Desktop. This comprehensively covers the mutation, side effects, error behavior, and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the core purpose and scope, the second explains omission behavior, and the third covers error handling and write-back safeguard. Every sentence contributes distinct value with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, this description covers the purpose, target resource, method of editing, prerequisites, side effects (in-place write with backup), error condition (column not found), and parameter behavior. It is sufficient for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 8 parameters (100% coverage). The description adds valuable cross-cutting semantics: 'Any omitted property is left unchanged', which clarifies the effect of null/default values across all optional parameters. It also enumerates the property types, reinforcing schema meaning without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Patch properties of an existing column in a closed .pbit template's model', listing the exact property types and the editing mechanism ('editing the DataModelSchema JSON on disk'). This distinguishes it from sibling set_* tools by emphasizing the offline template context and combined property patching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: for closed .pbit templates requiring on-disk JSON editing without Power BI Desktop. It does not explicitly name alternatives (e.g., set_column_data_type, set_summarize_by) or state when not to use it, but the context is clear enough for an agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_textbox_contentA
Set RICH multi-run text on a textbox (add_textbox is single-run). runs = JSON array of {text, fontFamily?, fontSize?, color?, bold?, italic?, url?} - each becomes a styled run on one paragraph; url makes a run a hyperlink. bulleted=true renders the paragraph as a bullet. Replaces the textbox's current content.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| runs | Yes | JSON array of {text, fontFamily?, fontSize?, color?, bold?, italic?, url?} | |
| visual | Yes | the textbox visual's name | |
| bulleted | No | render as a bulleted paragraph | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it replaces existing content, each run becomes a styled run on one paragraph, url makes a run a hyperlink, and bulleted=true renders as a bullet. This effectively communicates the destructive and formatting behavior, though it does not cover edge cases like empty runs or undoability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, then delivers the important details about the runs format, hyperlink behavior, bulleted option, and replacement semantics. Every sentence earns its place; no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with moderate complexity (multi-run JSON, styling, hyperlink, bullet), the description gives enough context for an agent to invoke it correctly: it identifies the resource type, the run structure, and the key behaviors. It lacks explanation of reportSessionId, but that is common across siblings and may be inferred. No output schema exists, so return value descriptions are unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (4/5 parameters have descriptions), so the baseline is not automatically 3. The description adds meaning beyond the schema by explaining that 'runs' is a JSON array where each element becomes a styled run on one paragraph, that 'url' creates a hyperlink, and that 'bulleted=true' renders as a bullet. It does not explain reportSessionId, but the main structured parameters are enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set RICH multi-run text on a textbox') and the resource (textbox), and distinguishes it from a sibling tool ('add_textbox is single-run'). The verb 'Set' with the resource 'textbox' is specific, and the phrase 'Replaces the textbox's current content' further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative add_textbox and contrasts it with 'single-run', giving the agent a clear choice between the two. However, it does not provide more exhaustive 'when-to-use' guidance beyond this distinction, nor does it mention any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_cf_colorsA
Set the report theme's CONDITIONAL-FORMATTING gradient stops: min / center / max / null. Each is a hex colour; supply at least one. Run generate_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | maximum (high) hex | |
| min | No | minimum (low) hex | |
| nul | No | null (blank) hex | |
| center | No | center (mid) hex | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden of behavioral disclosure. It mentions the prerequisite of generate_theme and the minimum-input constraint, but does not describe side effects like overwriting existing stops, validation of hex values, or whether changes are destructive. The operational guardrail is helpful, but richer context (e.g., effect on unset stops) would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, and no wasted words. The structure efficiently conveys the target, the parameter group, and the prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with no output schema, the description covers essential context: what it does, the parameter semantics, and a prerequisite. It doesn't mention exact hex format or error handling, but the schema and sibling context fill those gaps modestly. Overall, it is adequately complete for guided invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover each parameter as 'hex', giving 80% coverage. The description adds value by clarifying that every parameter is a hex color and that at least one must be supplied, which is not apparent from individual defaults. It also maps 'null' to the 'nul' parameter, aiding correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting the report theme's conditional-formatting gradient stops, and identifies the specific resource (report theme) and scope (CF gradient stops). It distinguishes from sibling tools by naming the exact CF aspect, unlike set_theme_data_colors or set_theme_structural_colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite ('Run generate_theme first') and states the requirement to supply at least one color. While it doesn't explicitly compare to alternatives, the context is enough to understand when to use it. Sibling theme setter tools exist, but the description's specificity helps differentiate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_data_colorsA
Set the report theme's DATA COLOURS (the categorical palette). colors = comma-separated hex. Run generate_theme / apply_report_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | Yes | comma-separated hex colours, e.g. #16365C,#2E86AB,#5BC0BE | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose safety and side effects, but it only states the operation and a prerequisite. It doesn't explain consequences of setting colors, validation behavior, or whether the change is reversible/overwrites existing palette.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary purpose. The technical detail ('comma-separated hex') and prerequisite each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and an undocumented reportSessionId parameter, the description leaves critical context gaps. While the tool is simple, a mutation tool should mention expected state, error behavior, or return value; it only notes the prior theme requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 50% of parameters, and the description only restates the colors format already present in the schema. It provides no additional meaning for reportSessionId, which remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Set the report theme's DATA COLOURS (the categorical palette)' – a specific verb+resource. It differentiates from sibling theme tools (structural, text, cf, sentiment colors) by explicitly naming the categorical palette scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to 'Run generate_theme / apply_report_theme first', providing a clear precondition for use. It doesn't explicitly contrast with alternative theme-color setters, but the context of data colours is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_sentiment_colorsA
Set the report theme's SENTIMENT colours: good / neutral / bad (the KPI sentiment ramp). Each is a hex colour; supply at least one. Run generate_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| bad | No | bad (negative) hex | |
| good | No | good (positive) hex | |
| neutral | No | neutral hex | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does reveal that this is a mutating operation, that colors are hex values, and that a partial update is possible (at least one color). However, it omits potential side effects, such as whether unspecified colors are reset to defaults, or how invalid hex values 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, parameter format, minimum input requirement, and a prerequisite. Every phrase earns its place with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, prerequisite, and parameter semantics for a simple setter tool. It does not describe return values, but no output schema exists, and for a straightforward mutation this is acceptable. Some minor gaps remain (e.g., hex representation details), but overall it is sufficient for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the three color parameters with terse descriptions ('bad (negative) hex', etc.), giving 75% coverage. The description adds value by clarifying the hex format and the requirement to supply at least one of the optional parameters, which is not obvious from the schema defaults (all null).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb-resource pair ('Set the report theme's SENTIMENT colours') and differentiates this tool from sibling theme setters (e.g., set_theme_data_colors, set_theme_structural_colors) by naming the exact colors (good/neutral/bad) and the KPI sentiment ramp. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete prerequisite ('Run generate_theme first') and an immediate usage constraint ('supply at least one). It does not explicitly discuss alternatives or when not to use this tool, but the focus on sentiment colors makes the appropriate use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_structural_colorsA
Set the report theme's STRUCTURAL colours. colors = JSON object with any of: firstLevelElements, secondLevelElements, thirdLevelElements, fourthLevelElements, background, secondaryBackground, tableAccent (foreground is an alias of firstLevelElements). Each value is a hex colour; only supplied keys change. Run generate_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | Yes | JSON object of structural key -> hex | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that only supplied keys change (partial update), foreground is an alias for firstLevelElements, and values are hex colors. It also requires generate_theme to run first, which is a valuable precondition. However, it does not cover permissions or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three sentences that each add necessary information: purpose, parameter structure, and prerequisite. It is front-loaded and free of any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with two parameters and no output schema, the description is largely complete, covering the target, parameter details, and execution order. A minor gap is the lack of explicit explanation for reportSessionId, but the name and generate_theme reference make it sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description significantly enriches the 'colors' parameter by listing all accepted keys, explaining the alias, and noting that only supplied keys change—none of which is in the schema's brief description. It does not explicitly explain reportSessionId, but its purpose is clear from the name and the generate_theme prerequisite.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets the report theme's STRUCTURAL colors, using a specific verb and resource. It distinguishes itself from sibling tools like set_theme_data_colors and set_theme_sentiment_colors by explicitly focusing on structural colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite ('Run generate_theme first') which indicates when this tool should be used. It does not explicitly mention alternatives, but the STRUCTURAL qualifier implicitly differentiates it from sibling theme color setters, giving clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_text_classA
Set/merge one theme TEXT CLASS: class = callout|title|header|label or a secondary class (largeTitle|semiboldLabel|largeLabel|smallLabel|lightLabel|boldLabel|largeLightLabel|smallLightLabel). Any subset of fontFace / fontSize / color. Merges - untouched props are kept. Run generate_theme first.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | colour hex | |
| fontFace | No | font face, e.g. Segoe UI Semibold | |
| fontSize | No | font size in pt | |
| textClass | Yes | the text class name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses merge semantics ('untouched props are kept') and the prerequisite, adding useful behavioral context beyond what the schema shows. It stops short of error behavior or validation details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense clauses provide clear action, valid values, merge behavior, and prerequisite with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema or annotations, the description covers the essential usage, merge behavior, and prerequisite, though it omits error handling and validation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, and the description enriches the textClass parameter by listing valid values and explains the optional fontFace/fontSize/color subset, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Set/merge one theme TEXT CLASS'), enumerates valid class names, and distinguishes it from sibling theme tools that target colors or structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite ('Run generate_theme first') and clarifies partial updates, giving clear context for when to use. However, it does not explicitly name alternative tools or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tooltip_field_bindingA
Bind a TOOLTIP PAGE to specific fields so it only shows when hovering those fields. fields = JSON array of {table,field}. Writes the tooltip page's pageBinding {type=Tooltip, parameters}. The page should already be set_page_type tooltip. Verify in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | JSON array of {table,field} to bind the tooltip to | |
| tooltipPage | Yes | the tooltip page name or displayName | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It reveals the core side effect ('Writes the tooltip page's pageBinding {type=Tooltip, parameters}') and the dependency on prior setup, which is helpful. However, it does not disclose whether existing bindings are overwritten, what happens on failure, or any permissions required, leaving some behavioral uncertainty for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using three sentences that each deliver distinct information: what the tool does, the format of the key parameter, and the required prerequisite/validation. It is front-loaded and avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the essential context: the action, the param format, the underlying write operation, the necessary precondition, and a verification step. While it lacks alternative tool guidance and side-effect warnings, it is sufficiently complete for an agent to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 'fields' and 'tooltipPage' with descriptions identical to the tool description's parameter notes. The description adds no extra parameter meaning beyond what the JSON schema provides, and the 'reportSessionId' parameter remains undocumented. Since schema coverage is only 67%, a more compensating description would have been better, but it does not make things worse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb 'Bind' plus the resource ('TOOLTIP PAGE') and the exact behavior ('to specific fields so it only shows when hovering those fields'). This clearly distinguishes it from related siblings like set_visual_tooltip_page or set_page_type, which operate at a different level or purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit prerequisites ('page should already be set_page_type tooltip') and a validation step ('Verify in Desktop'). This tells the agent when it is appropriate to use the tool and what to check, though it does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_totalsB
Show/hide totals on a table and subtotals on a matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | ||
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does specify that the tool works on tables and matrices and differentiates totals from subtotals, which is useful. However, it does not disclose side effects, persistence, or reversibility, though the toggle nature implies reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded. It contains no filler or redundancy, every word contributes to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4 parameters and no schema descriptions or annotations, the description is too sparse to allow an agent to correctly invoke the tool. It does not clarify that the operation applies to a specific visual identified by visualName and pageName, nor does it explain the role of the boolean 'show' parameter. The output schema is absent, so return behavior is also unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameters. It does not explain what 'show' means, how visualName and pageName relate to the target visual, or what reportSessionId is for. The description adds no value beyond the parameter names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show/hide') and the resource ('totals on a table and subtotals on a matrix'). It also distinguishes between table and matrix, which is specific enough to differentiate from sibling tools that deal with other visual properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to toggle totals/subtotals on a table or matrix), but it does not explicitly state conditions for use or mention alternatives. There is no guidance on exclusions or prerequisites beyond the implicit target types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_translationA
Set a translated Caption, Description or DisplayFolder for a model object in a culture. objectType = table | column | measure | hierarchy | model. For a column/measure/hierarchy, also pass its table. Run add_culture first.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | the object's table (required for column/measure/hierarchy) | |
| value | Yes | the translated text | |
| culture | Yes | culture/locale, e.g. fr-FR | |
| property | Yes | Caption | Description | DisplayFolder | |
| sessionId | Yes | ||
| objectName | Yes | the object's name (the model name for objectType=model) | |
| objectType | Yes | table | column | measure | hierarchy | model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses the need for a culture to exist and table for certain object types, but doesn't state behavior like overwriting existing translations or error outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, and includes necessary conditions. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the core usage: what to set, object types, table requirement, and prerequisite. It doesn't detail edge cases or return values, but the core is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 86% of parameters. The description adds the allowed objectType values, the meaning of property (Caption/Description/DisplayFolder), and the condition for table, which goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets a translated Caption, Description, or DisplayFolder for a model object, with specific object types and the need for a table for some types. This is a specific verb+resource and distinguishes it from deletion or add-culture tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('Run add_culture first') and a conditional instruction ('For a column/measure/hierarchy, also pass its table'). It doesn't mention alternatives or when-not to use, but the context is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_backgroundA
Set a visual's BACKGROUND (typed convenience over set_visual_format). show/color/transparency all optional. transparency 0 = opaque, 100 = fully transparent (an OVERLAY background, which clear_visual_styling preserves).
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| show | No | ||
| color | No | hex colour e.g. #FFFFFF | |
| visual | Yes | ||
| transparency | No | 0 = opaque, 100 = fully transparent | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds valuable context about transparency semantics (0=opaque, 100=fully transparent) and that it creates an OVERLAY background preserved by clear_visual_styling. But it doesn't disclose whether setting show=false clears existing backgrounds or how it interacts with current settings, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary purpose. Every phrase adds value (optionality, transparency semantics, preservation by clear_visual_styling). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with no output schema, the description covers purpose, key parameters, transparency edge case, and its relationship to clear_visual_styling. It doesn't mention error conditions or permission needs, but given the tool's low complexity, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It clarifies that show/color/transparency are all optional and explains the transparency scale and OVERLAY behavior, adding meaning beyond the schema. The required params (reportSessionId, page, visual) are self-explanatory context, so this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set a visual's BACKGROUND' with a specific verb and resource. It also distinguishes itself from the sibling tool set_visual_format by calling itself a 'typed convenience over set_visual_format', making its niche clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions it's a typed convenience over set_visual_format, implying when to use this tool over the general one. References clear_visual_styling behavior, providing context. However, it doesn't explicitly state exclusions like 'do not use if you need to change other visual properties'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_borderA
Set a visual's BORDER (typed convenience over set_visual_format). show/color/radius all optional.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| show | No | ||
| color | No | hex colour e.g. #E6E9EF | |
| radius | No | corner radius in px | |
| visual | Yes | ||
| reportSessionId | Yes |
TDQS
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 reveals that show/color/radius are optional, implying that omitted parameters may be left unchanged, which is useful. It also hints that this is a convenience wrapper around set_visual_format. However, it does not disclose potential side effects, return values, or whether changes require a refresh. For a mutation tool, this is minimal but not completely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and to the point: one sentence with a parenthetical. It efficiently conveys the essence without fluff. However, it is somewhat fragmented and could benefit from a brief clarification about the 'optional' behavior, yet it still earns high marks for conciseness because every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple setter with no output schema and no annotations. The description provides enough to understand what it does and how it relates to set_visual_format, but it lacks critical contextual details: what is a 'visual' in this context, how the report session works, and what happens if no optional properties are provided. The absence of any error-handling or return behavior information further reduces completeness. It is adequate for a narrow tool but leaves gaps for an agent to safely invoke it without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (color and radius have descriptions). The description adds that show/color/radius are all optional, which is helpful for understanding that any subset can be set. But it says nothing about the required parameters ('reportSessionId', 'page', 'visual'), which are critical for identifying the target visual. It also does not elaborate on the format or behavior of these fields beyond the schema. It partially compensates for the coverage gap but leaves the core identifiers unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set a visual's BORDER'. It distinguishes itself from the general set_visual_format by calling itself a 'typed convenience over set_visual_format', thus telling the agent this is a specialized setter for border properties only. The optional parameters (show/color/radius) are explicitly listed, making the scope very clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by referring to set_visual_format as the more general alternative: use this when you specifically want to set the border. However, it doesn't explicitly state when not to use it or mention other alternatives like set_visual_background. The guidance is clear enough for a focused tool but lacks explicit exclusions or comparison to other visual setters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_display_modeA
Set a visual's DISPLAY STATE on the page: normal (default), hidden, spotlight (dim everything else), maximize, or focus. Writes singleVisual.display.mode. Note: spotlight/focus are live states that may need a bookmark to persist in Desktop; normal removes the override.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | normal | spotlight | maximize | focus | hidden | |
| page | Yes | page name or displayName | |
| visual | Yes | visual name (from list_visuals) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the underlying property being modified, explains the effect of spotlight (dims everything else), and notes a persistence caveat for live states. This is strong behavioral transparency, though it could mention error conditions or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the action ('Set a visual's DISPLAY STATE'). Every phrase adds value: the mode enumeration, the underlying property name, and the persistence note. No redundant or tangential content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a setter with four required parameters and no output schema, the description covers the core behavior, all mode options, and an important persistence caveat. It does not explain return values or failure scenarios, but these are less critical for this type of tool given the reasonably rich schema and clear intent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (75%) since three of four parameters are described. The description adds semantic value to the 'mode' parameter by explaining what each mode does (e.g., spotlight dims everything else, normal removes the override), which goes beyond the bare enum list in the schema. The 'reportSessionId' parameter remains underdescribed, but the overall param handling is solid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting a visual's display state on a page, listing the specific modes (normal, hidden, spotlight, maximize, focus). It also identifies the underlying property being written (singleVisual.display.mode), which distinguishes it from sibling tools that modify other visual properties or visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to change display mode) and provides a caveat about spotlight/focus needing bookmarks to persist in Desktop, along with the note that 'normal' removes the override. However, it does not explicitly compare with alternative tools like set_visual_visibility or set_visual_format, or specify 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.
set_visual_fieldsA
Replace the field bindings of an EXISTING visual - change which columns/measures a table/matrix/chart shows WITHOUT deleting it (preserves position, formatting, conditional formatting). bindings = JSON array of {role,table,field,kind}. Roles: tableEx/card=Values; matrix/pivotTable=Rows/Columns/Values; charts=Category/Y/Y2/Series/X/Size. Clears the sort - re-apply with set_visual_sort.
| Name | Required | Description | Default |
|---|---|---|---|
| bindings | Yes | JSON array of {role,table,field,kind} | |
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it preserves position, formatting, conditional formatting, and clears sort—an important side-effect. It also explains the bindings format and role mappings by visual type, which is rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and every sentence adds value—including the bindings format, role details, and the sort side-effect with a pointer to a sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (JSON bindings, multiple visual types, side-effect), the description is complete: it explains roles for table/card, matrix/pivotTable, and charts, and warns about sort clearing. No output schema exists, but the tool's action is straightforward and fully described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes 'bindings' (25% coverage). The description significantly enhances this parameter by defining it as a JSON array of {role,table,field,kind} and detailing role names per visual type. The other parameters (pageName, visualName, reportSessionId) are self-explanatory and need no extra explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Replace' and the resource 'field bindings of an EXISTING visual', and distinguishes from siblings like delete_visual and change_visual_type by emphasizing that it does NOT delete the visual and preserves formatting and position.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: use for existing visuals when you want to change fields without deleting, and it explicitly notes that sort is cleared and suggests re-applying with set_visual_sort. However, it does not explicitly contrast with bulk_bind_visuals or other alternatives for bulk operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_formatA
Set ANY formatting on a visual (TOTAL customizability) - the universal styling engine. formatJson e.g. { "vcObjects": { "title": {"show":true,"text":"My Title"}, "background": {"show":true,"color":"#FFFFFF","transparency":100} }, "objects": { "legend": {"show":false} } }. Each property is encoded by kind (show->bool, text->text, transparency/fontSize->number, color/fontColor->colour, alignment/position->enum; otherwise inferred: boolean->bool, number->number, #RRGGBB->colour, else text) and MERGED in - untouched objects/properties and any selector are preserved. Returns the objects/properties changed.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| strict | No | when true, REJECT (do not apply) if validation finds unknown cards/properties or type mismatches; default false (apply + warn) | |
| visual | Yes | visual name or displayName | |
| formatJson | Yes | JSON: { vcObjects:{obj:{prop:value}}, objects:{obj:{prop:value}} } | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses key behaviors: properties are merged (preserving untouched objects/properties), types are inferred by kind, and the return value is the changed properties. It does not mention strict-mode behavior or error handling, but the schema covers 'strict'. The description adds significant context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy due to the inline JSON example and type inference list, but it is front-loaded with the core purpose and every sentence adds value. The structure is logical: purpose, example, encoding rules, merge behavior, return value. It is dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, flexible tool with 5 parameters, no output schema, and no annotations, the description covers the essential usage, merge behavior, type encoding, and return value. It omits strict-mode details but those are in the schema. Overall, it is complete enough for a power user to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, with reportSessionId undocumented. The description enriches formatJson with a concrete JSON example and explains type inference rules (show->bool, text->text, etc.), which are absent from the schema. It also clarifies merge semantics. This goes well beyond the baseline for well-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set ANY formatting on a visual', providing a specific verb and resource. Labeling it the 'universal styling engine' clearly distinguishes it from narrower sibling tools like set_visual_title or set_visual_property. The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the go-to tool for any visual formatting ('universal styling engine', 'TOTAL customizability'). It gives clear context for when to use it, though it does not explicitly mention alternatives or exclusions. This is slightly above implied usage because the 'universal' phrasing sets expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_format_selectorA
Set a SELECTOR-SCOPED formatting entry on a visual so a card targets a data scope: a single series, a category, the grand total/subtotal, or a wildcard/conditional scope. Unlocks per-series colours, per-category formatting and total/subtotal formatting. bucket=objects|vcObjects. properties = JSON {prop:value} (encoded like set_visual_format). selector = JSON: {"data":[{"scopeId":...},{"roles":["Series"]},{"dataViewWildcard":{"matchingOption":0}}]} | {"metadata":"Table.Field"} | {"total":true}. Updates the matching selector entry in place without clobbering the default card.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| bucket | Yes | objects | vcObjects | |
| object | Yes | formatting object/card name, e.g. dataPoint | labels | values | |
| strict | No | when true, REJECT (do not apply) if validation finds an unknown card/property or type mismatch; default false (apply + warn) | |
| visual | Yes | visual name (from list_visuals) | |
| selector | Yes | JSON selector spec (data / metadata / total) | |
| properties | Yes | JSON object of prop -> value | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses it 'updates the matching selector entry in place without clobbering the default card', which is a key behavioral trait. It also explains the effect (unlocks per-series colors, etc.). It doesn't mention permissions or failure modes, but this is adequate given the detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated, with each sentence adding functional information. It uses a clear, structured flow, though it is somewhat technical and could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, no output schema), the description provides essential syntax for all key aspects, including selector formats, bucket choices, and update behavior. It lacks some edge-case details (e.g., unsupported visual types), but overall it is thorough enough for an agent to act.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (88%), and the description adds important meaning for the complex parameters: it clarifies bucket values ('objects|vcObjects'), properties encoding ('encoded like set_visual_format'), and provides concrete JSON examples for selector. This goes beyond the schema's generic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Set a SELECTOR-SCOPED formatting entry on a visual'. It further explains the target data scopes (series, category, total/subtotal, wildcard) and the unlocked formatting capabilities, distinguishing it from generic formatting tools like set_visual_format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by explaining it targets selector-scoped formatting and explicitly references sibling set_visual_format for encoding. However, it doesn't explicitly state when not to use it or list alternative tools, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_interactionsA
Set how a SOURCE visual affects a TARGET visual when a data point is selected (edit interactions). interaction = filter | highlight | none. sourceVisual/targetVisual are visual names (from list_visuals). Writes a { source, target, type } override in the page config (type: 1=filter, 2=highlight, 3=none). Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| interaction | Yes | filter | highlight | none | |
| sourceVisual | Yes | the visual whose selections drive the interaction | |
| targetVisual | Yes | the visual that is affected | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden of explaining side effects. It explicitly states that it 'Writes a { source, target, type } override in the page config' and provides the numeric type mapping. It also advises to 'Verify the render in Desktop,' adding practical behavioral context. It doesn't cover permission requirements or reversibility, but the key behavioral trait is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—three sentences—and every sentence provides valuable information. It front-loads the core purpose, then adds parameter details and a verification tip. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description fully covers what the tool does, how to use it, what parameters mean, and the side effect (write config override). It even gives a practical follow-up ('Verify the render in Desktop'). This is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the schema: it explains the allowed values for interaction (filter | highlight | none), the mapping to numeric types, and the origin/purpose of sourceVisual/targetVisual (visual names from list_visuals). This is especially useful despite the schema already covering 80% of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource: 'Set how a SOURCE visual affects a TARGET visual when a data point is selected.' This clearly distinguishes it from other visual-related tools like set_visual_property or set_visual_format, which target different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by specifying the exact use case (editing interactions). It also tells users that source/target visuals come from list_visuals. However, it does not explicitly mention alternatives or exclusions, 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.
set_visual_positionA
Set a visual's POSITION/size. Updates BOTH the visualContainer x/y/width/height AND the config layouts[0].position so the move sticks. All of x/y/width/height optional.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| page | Yes | ||
| width | No | ||
| height | No | ||
| visual | Yes | ||
| reportSessionId | Yes |
TDQS
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 provides useful context by revealing that it updates two underlying representations (visualContainer and config layout) and that all coordinate parameters are optional. However, it does not explain the effect of null values, whether partial updates are allowed, or any side effects beyond the dual update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, consisting of two sentences that immediately convey the core action and key detail about what is updated. Every word adds value, and it is front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no annotations, and no output schema, but the description is relatively brief. It covers the main behavior and optionality of the geometry parameters, but it omits important context such as null handling, units, and whether the tool returns a result. For a mutation tool with this complexity, the description leaves enough unanswered questions to be considered merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It clarifies that x/y/width/height are optional and correspond to position/size, but it leaves reportSessionId, page, and visual unexplained. The description adds some meaning beyond the bare schema but does not fully compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Set') and resource ('a visual's POSITION/size'). It distinguishes itself by explaining that it updates BOTH the visualContainer x/y/width/height AND the config layouts[0].position, which sets it apart from sibling tools like resize_visual or move_visual that may only address one aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting or adjusting visual position and size, and the mention of 'so the move sticks' suggests a specific need to persist changes. However, it does not explicitly state when to use this tool over alternatives like resize_visual or move_visual, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_propertyA
Set ANY visual formatting property (the universal escape hatch). objectName/propertyName are Power BI formatting ids e.g. labels/show, legend/position, categoryAxis/showAxisTitle, valueAxis/start, dataPoint/fill. kind = text|number|bool|color|raw. target = objects (data formatting) or vcObjects (container: title, background, border).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | text|number|bool|color|raw | text |
| value | Yes | the value, e.g. true, Top, 12, #16365C | |
| target | No | objects|vcObjects | objects |
| pageName | Yes | ||
| objectName | Yes | formatting object id, e.g. labels, legend, categoryAxis, dataPoint, title | |
| visualName | Yes | ||
| propertyName | Yes | property id, e.g. show, position, fontSize, color, labelDisplayUnits | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains the meaning of objectName/propertyName, kind, and target, but does not disclose potential side effects (e.g., overriding existing settings), validation behavior, or whether changes are immediately applied or require a refresh.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, dense with examples and parameter semantics, with no fluff. Every clause adds useful information, and the structure front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, no output schema, no annotations), the description covers most key semantics and provides realistic formatting examples. It lacks details on error handling or return values, but the escape-hatch nature makes this acceptable. The sibling list reinforces its role as a generic setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, and the description adds significant value by providing concrete Power BI formatting id examples (labels/show, legend/position) and explaining target distinctions. It clarifies the 'kind' enum values and gives example values, going beyond the schema's terse descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('ANY visual formatting property') while explicitly positioning it as 'the universal escape hatch.' This clearly distinguishes it from sibling tools like set_visual_format or set_visual_border, which target specific properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'universal escape hatch' phrasing implies use when no dedicated setter exists, and examples of object/property pairs clarify the target domain. However, it does not explicitly name alternatives or state when NOT to use it, leaving a slight gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_sortA
Set the SORT ORDER of an EXISTING visual (table/matrix/chart): order its query by a field, asc or desc. kind=column|measure. Use descending=true to sort a ranking by sales/value so the top performers lead and blank-rank/zero rows fall to the bottom (the fix for 'blanks at the top'). The field should be one already shown in the visual.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | column|measure | measure |
| field | Yes | field (column or measure) to sort by | |
| table | Yes | table that owns the sort field | |
| pageName | Yes | ||
| descending | No | true = descending (largest first), false = ascending | |
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose behavioral traits: it modifies the visual's query order, describes the effect of descending=true on blank/zero rows, and emphasizes the field must already be in the visual. It does not detail side effects or reversibility, but for a sort operation this is adequate, earning a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loads the main purpose. It efficiently conveys key constraints and a usage tip, though the 'kind=column|measure' sentence could be more naturally integrated. No unnecessary filler, so it earns a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema and no annotations, the description covers purpose, key parameter behavior, a common pitfall fix, and a prerequisite. It doesn't address error handling or persistence, but these are less critical for a sorting operation. Overall, it is sufficiently complete for an agent to select and invoke correctly, earning a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 57%, and the description adds meaning for 'kind' and 'descending' (e.g., kind=column|measure and the behavior of descending). It also clarifies 'field' should be an existing visual field. However, the context parameters (reportSessionId, pageName, visualName, table) are left to the schema with no additional explanation, so the description does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the sort order of an existing visual (table/matrix/chart) by a field, ascending or descending. It distinguishes from sibling tools by specifying it operates on a visual's query order, not on data rows or columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, including a specific use case (sorting rankings by sales/value to push blanks to the bottom) and a prerequisite (field must already be shown in the visual). However, it does not explicitly mention alternative tools or when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_titleA
Set a visual's TITLE (typed convenience over set_visual_format). All params after page/visual are optional - set only what you want. Preserve a custom title by passing show=false on an overlay, or set custom text. Use this to restore a title clear_visual_styling must never destroy.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | ||
| show | No | ||
| text | No | ||
| visual | Yes | ||
| fontSize | No | ||
| alignment | No | left|center|right | |
| fontColor | No | hex colour e.g. #16365C | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does a good job: it explains the tool is a convenience wrapper, that only specified params are set, and describes the overlay/custom-title behavior. It also notes the interplay with clear_visual_styling, which is useful behavioral context beyond the bare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding distinct value: purpose, optionality, and preservation behavior. No redundant text, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the essential usage pattern, optionality, and special relation to clear_visual_styling. It doesn't specify return values or error behavior, but for a tool with this complexity it's sufficiently complete for an agent to use it correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only alignment and fontColor have descriptions). The description helps clarify the core optional parameters show and text ('show=false', 'set custom text'), but doesn't address fontSize, alignment, or fontColor, leaving gaps for these parameters. It partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a visual's TITLE and frames it as a 'typed convenience over set_visual_format', which distinguishes it from the broader set_visual_format sibling. It also references clear_visual_styling, giving it a distinct role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions that all params after page/visual are optional and provides specific guidance on preserving a custom title via show=false or custom text. It names set_visual_format as an alternative and clear_visual_styling as a related tool, though it could be more explicit about when to choose this over the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_tooltip_pageA
Point a visual's hover TOOLTIP at a report-page tooltip (instead of the default data tooltip). Writes the visualTooltip {type='ReportPage', section=} on the visual. The tooltip page should already be flagged with set_page_type tooltip. Verify the render in Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName the visual is on | |
| visual | Yes | visual name | |
| tooltipPage | Yes | the tooltip page (name or displayName) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It mentions that it writes the visualTooltip property and emphasizes the prerequisite and verification step. However, it doesn't disclose side effects (e.g., overwriting existing tooltip settings), error behavior, or how to revert to the default tooltip.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, and includes all essential information without redundancy. Each sentence adds value: the action, the technical detail, and the prerequisite/verification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema and no annotations, the description covers the purpose, the exact property written, the prerequisite, and a verification step. It doesn't explain failure modes or revert options, but the core usage is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds meaning beyond the schema by explaining the role of tooltipPage as the target page and clarifying that page is the visual's containing page. It also ties the parameters to the visualTooltip structure with section=<tooltip page>. The one undocumented parameter (reportSessionId) is self-evident as a session identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool points a visual's hover tooltip at a report-page tooltip instead of the default data tooltip. It uses specific action terms and identifies the target resource, distinguishing it from related tools like set_tooltip_field_binding or add_tooltip_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite: the tooltip page must already be flagged with set_page_type tooltip. It also advises verifying the render in Desktop. While it doesn't explicitly list alternative tools, the 'instead of the default data tooltip' gives context on when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_visibilityA
Show or hide a visual in the base layout (display.mode). Use list_visuals to get names.
| Name | Required | Description | Default |
|---|---|---|---|
| hidden | Yes | ||
| pageName | Yes | ||
| visualName | Yes | ||
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It explains the effect (visibility toggle in the base layout) and the display.mode context, but does not mention persistence, reversibility, or potential side effects. For a simple setter this is moderately adequate, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and followed by a practical tip. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a setter tool with 4 required params, zero schema coverage, and no output schema, the description is too thin. It provides the key prerequisite (list_visuals) but does not explain the purpose of all parameters or mention return behavior. The reference to display.mode adds nuance, but the overall completeness for a modestly complex operation is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates only partially. It implies the 'hidden' boolean controls visibility and mentions visualName via list_visuals, but reportSessionId and pageName are left unexplained. With four required parameters, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show or hide a visual'), the resource (visual), and adds scope ('in the base layout (display.mode)'). This distinguishes it from sibling tools like set_visual_display_mode or set_mobile_visibility, and the mention of display.mode adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It instructs the user to call list_visuals to get names, providing a clear prerequisite and context for usage. It does not explicitly state when not to use this tool or name alternatives, but the prerequisite and scope provide a solid rationale for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visual_z_orderA
Set a visual's z (stack) order explicitly. Updates BOTH the container z and the config layouts position so the order sticks. Higher z renders on top.
| Name | Required | Description | Default |
|---|---|---|---|
| z | Yes | z order (higher = on top) | |
| page | Yes | page name or displayName | |
| visual | Yes | visual name | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses meaningful behavior: it updates both the container z and config layouts position, and that the setting 'sticks.' It does not cover permissions, error cases, or rollback, but for a simple setter this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, fully front-loaded with the primary purpose. Every sentence contributes: purpose, key behavior, and ordering semantics. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with four parameters and no output schema, the description covers the essential semantics and behavioral nuance. It is slightly incomplete in not referencing when to prefer this over similar sibling tools (e.g., bring_to_front/send_to_back), but overall it provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds little beyond what is already in the schema. It reinforces the z-order meaning ('Higher z renders on top') and explains why both locations are updated, but it does not clarify reportSessionId or add details beyond the existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Set a visual's z (stack) order explicitly.' It goes beyond a generic setter by explaining the dual-update behavior ('Updates BOTH the container z and the config layouts position'), which differentiates it from other visual manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: it is for explicitly setting z-order rather than using relative commands like bring_to_front or send_to_back. However, it does not explicitly name alternatives or define when not to use it, so guidance is present but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_web_url_cfA
WEB URL conditional formatting on a table/matrix column: a measure that returns a URL string makes the cell a clickable link. urlMeasure = "Table[Measure]" (or pass urlMeasureTable). column = the column's queryRef.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| column | Yes | the column's queryRef, e.g. Dim_Product.Brand | |
| visual | Yes | table/matrix visual name | |
| urlMeasure | Yes | URL measure, e.g. Fact[Link] | |
| reportSessionId | Yes | ||
| urlMeasureTable | No | table that owns the URL measure (if not in urlMeasure) |
TDQS
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 the core effect (clickable links) and input format, but it does not disclose potential side effects like overwriting existing conditional formatting rules or prerequisites such as the visual requiring a valid table/matrix structure. It explains the mechanism but misses edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long: the first delivers the purpose and mechanism, the second clarifies parameter usage. Both sentences contribute directly to understanding, with no redundant or filler content, making it appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core concept and highlights key parameters, but it omits practical prerequisites like ensuring the target visual is a table/matrix and that the specified column exists. It also does not mention what the tool returns. For a tool with six parameters and moderate complexity, this is minimally sufficient but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptive names and examples for all parameters with 83% coverage. The description repeats the format for urlMeasure and column but adds no new meaning beyond what the schema already contains. Given the high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's specific function with 'WEB URL conditional formatting on a table/matrix column' and explains the mechanism ('a measure that returns a URL string makes the cell a clickable link'). This distinguishes it from sibling conditional formatting tools such as set_field_value_cf, set_color_scale, and set_icon_rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by specifying that it applies to a table/matrix column and gives formatting instructions for urlMeasure and column, but it does not explicitly state when to choose this tool over alternatives or any exclusions. The usage guidance is implied rather than direct, so it leaves some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skip_rowsA
Power Query Remove Top Rows: drop the first N rows. Appends Table.Skip to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | number of rows to skip from the top | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It reveals it 'Appends Table.Skip to the table's M query', indicating a mutation, but doesn't mention reversibility, permissions, or side effects on previous query steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose, no irrelevant details. The structure is efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a mutation tool with no annotations and no output schema, it omits information about return values, error handling, and the exact effect on the table in the model. It also doesn't clarify the table parameter's format or partition behavior beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 50% description coverage. The description clarifies that count is the N rows to drop, and table is implied as the target. However, sessionId and partitionName are not explained beyond the schema's default description for partitionName.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'drop the first N rows', using a specific verb and resource, and the reference to Table.Skip distinguishes it from siblings like remove_bottom_rows for bottom rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through 'drop the first N rows', but no explicit alternatives or when-not-to-use guidance is provided. It doesn't mention other row-removal tools like keep_top_rows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sort_column_byA
Sort a column by another column (e.g. Month by MonthSort) so visuals order chronologically/logically instead of alphabetically.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | ||
| sessionId | Yes | ||
| sortByColumn | Yes | column to sort by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action and desired result but omits that this modifies the model's column sort order (a mutation), potential side effects on visuals, permission requirements, or reversibility. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that leads with the verb and object, includes a concrete illustrative example, and contains no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus schema cover the core function and parameters for a simple tool, but the lack of annotations and behavioral details (e.g., persistence, side effects) leaves gaps. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only sortByColumn has a description). The description's example clarifies the relationship between column and sortByColumn, but does not explain table or sessionId. It partially compensates for the low coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Sort a column by another column' with a concrete example (Month by MonthSort), making the tool's purpose unambiguous. It distinguishes from sibling tools like sort_rows or set_visual_sort by focusing on model-level column sort-order rather than row or visual sorting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to achieve chronological/logical ordering instead of alphabetical) through the example, providing clear context. However, it does not explicitly mention alternative tools or exclusions, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sort_rowsA
Power Query Sort Rows: sort by one or more columns. Appends Table.Sort to the table's M query. sorts is comma-separated as column[:direction], e.g. "Region:Ascending,Sales:Descending". direction = Ascending | Descending (default Ascending).
| Name | Required | Description | Default |
|---|---|---|---|
| sorts | Yes | sort keys as column[:direction], comma-separated | |
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool appends Table.Sort to the M query, which is a useful behavioral detail. However, it does not address reversibility, error handling, or whether existing sorts are replaced, leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It opens with the purpose, then provides the mechanism (M query append) and concrete format example, with no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple sort operation with no output schema, the description covers the primary syntax, behavior, and parameter format. It does not explicitly explain sessionId/table, but these are standard in the context of the sibling tools. The description is sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 50% of parameters (only sorts has a description). The description adds significant value by explaining the sort key format, allowed directions, and default direction with an example. However, it does not clarify what 'table' or 'sessionId' mean, which would help in a multi-tool environment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: sorting rows in a Power Query table by one or more columns. The verb 'sort' and resource 'rows' are specific, and the description distinguishes it from sibling tools like 'sort_column_by' (which sorts a column in a visual) and filtering tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys when to use this tool (to sort table rows in Power Query) and provides example syntax. It does not explicitly mention alternative tools or when not to use it, but the context is clear enough for an agent to select it for sorting operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_columnA
Power Query Split Column: split a text column into N new columns. Appends Table.SplitColumn (+ the matching Splitter.*) to the table's M query, emitting parts output columns named .1 .. .N. by = delimiter (arg is the delimiter, e.g. ","), positions (arg is comma-separated zero-based positions, e.g. "0,5"), or lengths (arg is comma-separated repeated lengths, e.g. "3,3"). parts is the number of output columns (default 2).
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | delimiter | positions | lengths | |
| arg | Yes | the delimiter, the positions, or the lengths (see description) | |
| parts | No | number of output columns to produce (default 2) | |
| table | Yes | ||
| column | Yes | the column to split | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It is transparent about appending Table.SplitColumn to the M query and naming output columns, but it omits important side effects such as whether the original column is removed, error handling behavior, and impact on query folding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear summary and then logically presents implementation details. Every sentence adds value without redundancy, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core transformation logic is thoroughly explained, but with no output schema, the description does not fully clarify return behavior beyond column naming. It also lacks discussion of side effects, error cases, and the role of standard parameters like partitionName. Given the moderate complexity, the description is adequate for the primary operation but incomplete for full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description enriches the parameter semantics by explaining the `by` modes with illustrative examples (`','`, `'0,5'`, `'3,3'`) and clarifying the `parts` default value. This goes beyond the schema's terse descriptions, even though standard parameters like `sessionId` and `table` are not mentioned (schema coverage is 71%).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'split a text column into N new columns', specifying the verb, resource, and output. It distinguishes itself from the sibling split_column_to_rows by focusing on columns rather than rows, even if not explicitly naming the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed guidance on when to use each of the three modes (delimiter, positions, lengths) with concrete examples. It does not, however, state when not to use this tool or suggest alternative tools like split_column_to_rows for row-based splitting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_column_to_rowsA
Power Query Split Column into Rows: split a text column on a delimiter so each part becomes its own row. Appends Table.SplitColumn (into a list) + Table.ExpandListColumn to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column to split into rows | |
| delimiter | Yes | the delimiter to split on, e.g. "," | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
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 that it appends specific M query functions to the table's existing query, which is useful context. However, it does not mention side effects, reversibility, permission requirements, or how it interacts with existing query steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant or extraneous information. The first sentence defines the operation, the second explains the underlying M query changes, making it concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description explains the core splitting logic and the M query modification, but it leaves gaps about the required parameters (table, sessionId) and the broader effects on the existing query chain. It's adequate for a simple data transformation but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, leaving table and sessionId without descriptions. The description adds no clarification for these parameters and only repeats the column and delimiter concepts already present in the schema. It fails to compensate for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: splitting a text column on a delimiter so each part becomes its own row. It specifies both the operation (split column into rows) and the technical implementation (appends Table.SplitColumn + Table.ExpandListColumn), making it distinct from sibling tools like split_column (likely columns) and unpivot_columns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you want to split a column into rows, but it does not explicitly state when to choose this tool over alternatives. It provides no exclusions or mention of sibling tools, only a clear functional definition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_excel_to_csvA
Stream a large Excel worksheet to a CSV on disk (memory-bounded - does NOT load the workbook into RAM). ALWAYS use this for big Excel files (tens of MB / 100k+ rows) and then load the CSV with Csv.Document(), because Power Query's Excel.Workbook() parses the whole workbook into memory and crashes the mashup engine. Returns row/column counts and the output path.
| Name | Required | Description | Default |
|---|---|---|---|
| xlsxPath | Yes | absolute path to the source .xlsx/.xlsm | |
| sheetName | No | worksheet name (omit for the first sheet) | |
| outCsvPath | No | output .csv path (omit to write next to the source) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behavioral traits: streaming, memory-bounded, does NOT load the workbook into RAM, and returns row/column counts and output path. This provides a solid behavioral profile, though it omits details like overwrite behavior or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a distinct purpose: purpose+key trait, usage guidance, and return values. No redundant phrases, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (1 required param, no output schema, no annotations), yet the description covers purpose, performance characteristics, usage context, and return values. It is sufficient for an agent to select and invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal param-specific meaning (e.g., 'output path' aligns with outCsvPath), but mostly relies on the schema. No extra syntax or format details are provided beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it streams a large Excel worksheet to a CSV on disk with a specific verb and resource. It distinguishes itself from Excel.Workbook() by highlighting memory-bounded behavior, and also mentions the return values (row/column counts and output path), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to ALWAYS use this tool for big Excel files (tens of MB / 100k+ rows) and explains why—Excel.Workbook() parses the whole workbook into memory and crashes the mashup engine. It also names the alternative and recommends loading the CSV with Csv.Document(), providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stamp_vertipaq_statsA
Read the storage DMVs and write each column's VertiPaq stats as Vertipaq_* annotations (Vertipaq_TotalSize / Vertipaq_DictionarySize / Vertipaq_Cardinality - the semantic-link-labs scheme) so the numbers persist in the model definition for offline review. Read of the live engine; writes annotations.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses that the tool performs both a read (from live DMVs) and a write (annotations to the model definition). It specifies the exact annotations written and the persistence purpose. It lacks details on whether it overwrites existing annotations or potential performance impacts, but the core 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and purpose. The second sentence clarifies the read/write behavior. There is no redundant filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description provides the essential context: what it does, why, and the effect on the model definition. It does not mention return values or elaborate on side effects, but the core operation is well-covered. It is reasonably complete for an agent to select and invoke the tool properly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, sessionId, with a 0% description coverage. The description does not mention or explain sessionId at all. While the parameter is likely a common session identifier, the description adds no meaning beyond the name, and given the low coverage, it should have been explained or contextualized.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it reads storage DMVs and writes VertiPaq stats as specific Vertipaq_* annotations per column. It names the exact annotations (Vertipaq_TotalSize, Vertipaq_DictionarySize, Vertipaq_Cardinality), distinguishing it from generic annotation tools like set_annotation and from read-only stats tools like column_statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: persist stats for offline review in the model definition. It also notes the tool reads from the live engine and writes annotations, implying that it should be used when a persistent record of VertiPaq settings is needed. However, it does not explicitly mention alternatives or when not to use it, so it misses a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_dax_traceA
Start an Analysis Services server trace on the session's engine capturing QueryEnd, VertiPaq SE QueryEnd, VertiPaq SE CacheMatch and DAXEvaluationLog events (DAXEvaluationLog is dropped automatically on engines that reject it). Run the queries to profile, then stop_dax_trace to collect. One trace per session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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 adds useful context: the trace captures specific events, DAXEvaluationLog is automatically dropped on engines that reject it, and there is a one-trace-per-session limit. However, it does not disclose potential performance impact, required permissions, or what happens if a trace already exists, leaving gaps in full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, then the workflow and a key caveat. Every sentence carries useful information with no redundancy. It is well-structured and highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (one parameter) and no output schema, the description provides substantial context: the exact events captured, the workflow with stop_dax_trace, the automatic drop behavior, and the one-trace-per-session limit. It does not describe the return value or how stop_dax_trace identifies the trace, but for a start-trace tool this is largely sufficient and leaves only minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (sessionId) with 0% description coverage. The description only indirectly refers to it via 'the session's engine', implying sessionId identifies the session, but it does not explain how to obtain or format sessionId, nor any constraints. This provides marginal value but insufficient to compensate for the absence of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts an Analysis Services server trace with a specific verb ('Start'), a resource ('Analysis Services server trace'), and enumerates the exact events captured. It differentiates from siblings by naming the companion stop_dax_trace, and the scope is explicit ('on the session's engine'). This is a specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage workflow: start the trace, run queries to profile, then stop_dax_trace to collect. It also notes a key constraint ('One trace per session'). However, it does not explicitly mention alternative tools or when not to use this tool, though the companion stop_dax_trace is named enough to establish a paired pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_dax_traceA
Stop the session's DAX trace and return the structured events plus the Server Timings arithmetic: total query ms, storage-engine ms (sum of subclass-0 VertiPaq scans), formula-engine ms (query minus SE, floored at 0 because SE threads run in parallel), SE query count and cache matches.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It reveals detailed computational behavior: total query ms, storage-engine ms from subclass-0 VertiPaq scans, formula-engine ms with a floor at 0 due to parallel SE threads, SE query count, and cache matches. This is exceptional transparency and even explains the reason behind the floor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that packs multiple metrics and a rationale into one clause. Every word is informative, but the complex structure could be improved by splitting into two sentences for readability. It is not overly long and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description thoroughly explains return values and the arithmetic behind them. It does not cover sessionId sourcing or potential error conditions, but overall it provides sufficient contextual detail for the tool's core functionality and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single 'sessionId' parameter with no description (0% coverage). The tool description never mentions 'sessionId' explicitly, only referring to 'the session', leaving the parameter's meaning and origin to be inferred. With no schema description, the tool description should have clarified this parameter but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Stop' and the resource 'session's DAX trace', and goes further to describe the detailed output (structured events and Server Timings metrics). It effectively distinguishes itself from sibling tools such as start_dax_trace and dax_benchmark by focusing on stopping and returning results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies clear usage context: it stops the session's DAX trace, which presupposes a running trace (likely started with start_dax_trace). It does not explicitly mention alternatives or exclusions, but the context is unambiguous and sufficient for selecting the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strip_evaluateandlogA
Remove EVALUATEANDLOG wrappers. Pass table+measure for one measure, or omit both to strip every measure in the model (clean-up after debugging).
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | table (omit to strip the whole model) | |
| measure | No | measure (omit to strip the whole model) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the scope of the operation (targeted vs whole model) but does not state whether the operation is destructive, reversible, or requires any permissions. For a mutation tool, this leaves significant behavioral transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and contains no redundant information. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the core modes of operation but lacks information on edge cases (e.g., passing only table or only measure), return values, or safety considerations. With no output schema and no annotations, a bit more detail on effects and edge cases would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description adds crucial semantics by explaining that table and measure must be used together or both omitted. This pairing logic is not present in the schema and directly compensates for the partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' with a clear object 'EVALUATEANDLOG wrappers' and states the two modes of operation (targeted measure or whole model). It distinguishes itself from the sibling tool inject_evaluateandlog by clearly being the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'clean-up after debugging' and explains when to pass table+measure vs omit both. It does not explicitly name alternatives, but the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
style_pageA
One-shot 'make it beautiful' pass: apply a consistent card style (fill, rounded corners, shadow, header) to every DATA visual on a page (skips textboxes/shapes). Pair with set_page_background for a clean canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| shadow | No | drop shadow on/off | |
| pageName | Yes | ||
| background | No | hex card fill e.g. #FFFFFF | #FFFFFF |
| showHeader | No | show the visual header bar | |
| borderColor | No | hex border colour e.g. #E6E9EF | #E6E9EF |
| cornerRadius | No | corner radius in px, e.g. 8 | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses that it skips non-data visuals and performs a bulk 'one-shot' pass, which is useful. However, it omits side effects like overwriting existing styles, reversibility, or any destructive implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence introduces the action and scope, the second adds a complementary pairing tip. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and lack of annotations/output schema, the description covers the key behavior and scope well. It could add more about side effects or prerequisites, but for a styling operation it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so baseline is 3. The description maps to four parameters (fill, rounded corners, shadow, header) and adds intent, but doesn't describe the required IDs or all parameters like borderColor. It doesn't fully compensate for the undocumented required params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies a consistent card style to every DATA visual on a page, with specific attributes (fill, rounded corners, shadow, header). It distinguishes from siblings like style_visual (individual) and set_page_background (page background).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions pairing with set_page_background, and clarifies scope (every DATA visual) and exclusions (skips textboxes/shapes). Provides clear context for when to use, though it doesn't explicitly name alternative tools for individual styling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
style_visualA
Give one visual the modern 'floating card' look: background fill, rounded corners, drop shadow, and hide the header. e.g. background=#FFFFFF, cornerRadius=8, shadow=true, showHeader=false, borderColor=#E6E9EF.
| Name | Required | Description | Default |
|---|---|---|---|
| shadow | No | drop shadow on/off | |
| pageName | Yes | ||
| background | No | hex card fill e.g. #FFFFFF | |
| showHeader | No | show the visual header bar | |
| visualName | Yes | ||
| borderColor | No | hex border colour e.g. #E6E9EF | |
| cornerRadius | No | corner radius in px, e.g. 8 | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It names the specific visual properties that will be modified (background, corner radius, shadow, header, border color), which is useful. However, it does not disclose that it overrides existing style settings, whether unspecified properties are left unchanged, or any side effects, leaving behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence plus an example, with no unnecessary words. It front-loads the purpose and then immediately provides a concrete illustration, making every element earn its place. This is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and no annotations, the description is fairly complete for the styling task. However, it omits important contextual details such as whether unspecified properties retain their current values, what the tool returns, and potential error conditions. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so the baseline is moderate. The description adds context by providing a realistic example (background=#FFFFFF, cornerRadius=8, shadow=true, showHeader=false, borderColor=#E6E9EF) that shows how parameters combine to achieve the card look. However, it does not explain the required parameters (reportSessionId, pageName, visualName), which are self-evident, and the schema already describes the styling parameters individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific, actionable outcome: giving a visual a modern 'floating card' look with concrete properties (background fill, rounded corners, drop shadow, header hiding). This distinguishes it from generic styling tools and sibling tools like set_visual_background that handle only one property. The example further clarifies the expected effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case—apply a floating card style to a single visual—but does not explicitly state when to use this tool versus alternatives like set_visual_background or set_visual_format. No when-not-to-use or alternative references are provided, leaving the guidance largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_slicerA
Add a slicer to a SYNC GROUP so its field stays in sync across pages (slicers sharing a groupName sync). groupName defaults to the slicer's bound field. fieldChanges/filterChanges control what syncs (both default true). The slicer must also be PLACED on each page (use clone_visual) for it to appear there - this wires the sync, not the placement.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName the slicer is on | |
| groupName | No | sync group name (omit = use the slicer's field name) | |
| fieldChanges | No | sync the field selection | |
| slicerVisual | Yes | the slicer visual name (from list_visuals) | |
| filterChanges | No | sync the filter state | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses default behaviors (groupName falls back to field name, fieldChanges/filterChanges default true) and clearly explains the relationship between this tool and clone_visual. This is rich behavioral context beyond simple 'what it does'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, then key nuances. Every sentence earns its place: purpose, sync mechanism, defaults, and the placement caveat. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema, the description covers purpose, usage, defaults, and an essential prerequisite. It leaves no significant ambiguity about how to invoke it correctly, and the placement caveat is crucial for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), but the description adds meaningful context not explicit in the schema: it explains that groupName defaults to the slicer's bound field and that fieldChanges/filterChanges control what syncs with defaults. This adds value beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add a slicer to a SYNC GROUP') and the purpose ('so its field stays in sync across pages'). It clearly distinguishes this from siblings like add_slicer and set_slicer_selection by focusing on sync group behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: explains that slicers sharing a groupName sync, defaults for groupName, and the critical caveat that the slicer must also be placed on each page via clone_visual. This names the alternative tool and clarifies the boundary between wiring the sync and placement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tidy_slicer_layoutA
ONE-CALL conservative slicer cleanup for a CLOSED .pbix. Give ONLY the .pbix path (tidies EVERY page) or the .pbix + a page name (tidies that page). It (1) DE-OVERLAPS: any slicer whose bounding box overlaps another slicer is nudged by the SMALLEST clean move that clears the collision - kept near its original spot, on-canvas, aligned to its neighbours, no new overlap; and (2) SNAP-ALIGNS: a slicer whose left or top edge sits a few px off a shared edge is snapped onto it. CONSERVATIVE by design for client reports: only SLICERS ever move, sizes are NEVER changed, and any nudge/snap that would create fresh overlap is rejected. Slicer-over-NON-slicer overlaps (e.g. a State slicer deliberately layered over a wide date-label card) are FLAGGED, not moved, unless deOverlapNonSlicers=true. Writes the .pbix back offline (Report/Layout patched, DataModel byte-preserved). The .pbix must NOT be open in Power BI Desktop. Returns { ok, pagesScanned, pagesTidied, moveCount, moves:[{page,slicer,reason,before{x,y,w,h},after{x,y,w,h}}], flaggedCount, flagged, persistedToDisk }.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | optional: a single page (name/displayName, loose match) to tidy; omit to tidy ALL pages | |
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) | |
| deOverlapNonSlicers | No | also nudge slicers off NON-slicer visuals (default false: those overlaps are flagged, not moved, since they are often a deliberate header layering) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers thoroughly. It details the de-overlap algorithm (smallest clean move, near original spot, aligned, no new overlap), snap-align behavior, conservatism (only slicers move, sizes never changed), rejection of overlap-creating moves, and the note about slicer-over-non-slicer overlaps being flagged. It also explicitly states the return structure and the offline write-back with DataModel byte preservation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely packed with necessary operational details. It uses numbered steps (1) DE-OVERLAPS and (2) SNAP-ALIGNS, clearly marks the conservative principle, and lists the return schema. Every sentence serves a purpose: constraints, conditions, and exceptions are all covered without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-complexity tool with nuanced behavior, yet the description covers every relevant aspect: preconditions (closed pbix), algorithm specifics, exclusion policies, optional flag behavior, output schema, and persistence guarantees. Without an output schema or annotations, the description self-contains all needed context, making it exceptionally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all three parameters (100% coverage), so baseline is 3. The description adds meaning by explaining that 'page' uses loose matching, that omitting the page tidies ALL pages, and that deOverlapNonSlicers defaults to false to avoid moving deliberate header layering. This contextualization enriches the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'ONE-CALL conservative slicer cleanup' which clearly states the verb (cleanup), resource (slicer layout), and scope (CLOSED .pbix). It further differentiates from sibling tools by emphasizing conservatism and slicer-only behavior, explicitly noting that non-slicers are never moved unless opted in.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong usage context: the tool requires a closed .pbix and can tidy all pages or a single named page. It also clarifies the optional deOverlapNonSlicers flag, which changes behavior from flagging to moving. However, it does not explicitly name alternative tools (e.g., align_visuals) or state when NOT to use this tool, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tidy_slicer_layout_v2A
Row-aware slicer tidy (v2): cluster a page's slicers into ROWS, top-align each row onto one shared baseline y (the row median), pull off-canvas slicers back onto the canvas, and re-pack each row with EVEN-GAP spacing (one uniform gap = the median of the row's existing gaps, squeezed only as needed to stay on-canvas), which also clears within-row overlaps. Positions only (sizes NEVER change), slicers only (non-slicer visuals never move); a row wider than the canvas even packed flush is FLAGGED, not forced. Writes the .pbix back offline (Report/Layout patched, DataModel byte-preserved). The .pbix must NOT be open in Power BI Desktop. Returns { ok, rows:[{page,row,y,members,aligned}], moveCount, moves:[{page,slicer,row,reason,before,after}], flaggedCount, flagged, persistedToDisk }.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | optional: a single page (name/displayName, loose match) to tidy; omit to tidy ALL pages | |
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden. It discloses key traits: positions only and sizes never change, slicers-only scope, off-canvas handling, even-gap repacking, row wider than canvas is flagged not forced, offline .pbix write with DataModel byte-preserved, and the closed-file prerequisite. This is exceptional transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes value, covering algorithm, constraints, return structure, and preconditions. It is a single structured paragraph that front-loads the main action; though long, it remains readable and avoids fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description compensates fully by detailing the return object ({ ok, rows, moveCount, moves, flaggedCount, flagged, persistedToDisk }) and explaining the complete workflow. It also covers edge cases (off-canvas, oversized rows) and exact constraints, making it self-sufficient for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional param semantics beyond what the schema provides (e.g., absolute path, loose match, omit to tidy ALL pages). Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Row-aware slicer tidy (v2): cluster a page's slicers into ROWS...'), enumerating precise actions (top-align, pull off-canvas, re-pack with even-gap spacing). It clearly distinguishes itself from siblings by noting 'v2' and 'row-aware', and explicitly states 'slicers only (non-slicer visuals never move)'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: it operates on slicers only, works on a page or all pages, and requires the .pbix to be closed in Power BI Desktop. However, it does not explicitly name alternatives or state when to prefer this over siblings like 'tidy_slicer_layout' or 'align_visuals', so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_all_column_namesA
Bulk-transform every column NAME with Table.TransformColumnNames (schema-agnostic). transform = snakeToSpace | toUpper | toLower | trim | prefix (needs arg) | camelSplit (insert a space before each interior capital). Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| arg | No | the prefix text (only for transform=prefix) | |
| table | Yes | ||
| sessionId | Yes | ||
| transform | Yes | snakeToSpace | toUpper | toLower | trim | prefix | camelSplit | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description carries the burden. It discloses the side-effect of appending a step to the M query, which is useful, but does not explain potential naming collisions or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with the core action and transform list; no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and no output schema; the description covers the transform semantics and side-effect but leaves out return value details and does not mention the partitionName parameter, which is only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains each transform option (e.g., snakeToSpace, camelSplit) and notes that prefix requires an arg, adding meaning beyond the schema's simple enum list. It also clarifies the arg parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool bulk-transforms every column name via Table.TransformColumnNames, listing available transformations. This specific verb+resource scope distinguishes it from sibling column-rename tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Bulk-transform every column NAME' provides clear context for when to use this tool, though it does not explicitly name alternatives or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_columnA
Power Query single-column transform: apply a scalar function to a column in place. Appends Table.TransformColumns to the table's M query. operation = (text) upper, lower, trim, clean, proper, length; (number) round, abs, floor, ceiling, sign, sqrt; (date) year, month, day, quarter, weekofyear, dayofweek, startofmonth, endofmonth, startofyear, endofyear, monthname, dayname.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| column | Yes | the column to transform | |
| operation | Yes | the operation (see description for the supported set) | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly states that the transformation modifies the column in place and appends a Table.TransformColumns step, which is an important behavioral detail. It also enumerates supported operations, adding transparency without annotations, though it omits error handling or data-type-change effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with a clear purpose and followed by a structured operation list. No filler or redundant restatement of the tool's name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description captures the core behavior, supported operations, and the M-specific implementation, sufficient for selecting and invoking the tool. It lacks details on returned output or failure modes, but the simplicity of the operation narrows the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers column and partitionName meanings, but the description supplies the critical operation semantics: the full supported operation list, grouped by data type. This is essential because the schema's operation property defers to the description and covers 60% of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('apply'), resource ('scalar function to a column'), and scope ('single-column', 'in place'), and mentions the underlying M operation. It distinguishes from sibling column tools by emphasizing single-column scalar transforms and listing the operation categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use—single-column Power Query transforms with a fixed set of scalar functions—and implicitly excludes multi-column operations. However, it does not explicitly name alternative tools or state when-not-to-use, 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.
transposeA
Power Query Transpose: flip rows into columns and columns into rows. Appends Table.Transpose to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does add that the operation appends Table.Transpose to the table's M query, which is a useful side-effect detail. However, it does not mention limitations, reversibility, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no redundant or irrelevant words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description lacks context beyond the basic operation. It does not mention prerequisites, what the parameters mean in practice, or expected return values. Given the absence of an output schema and annotations, more detail would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only partitionName has a description). The description does not explain the table, sessionId, or partitionName parameters, so it fails to compensate for the low coverage. Parameter names are somewhat self-explanatory, but no extra semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool transposes a table by flipping rows and columns, and it specifies the underlying operation (appending Table.Transpose to the M query). This distinguishes it from sibling transformation tools like unpivot or pivot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—when you want to transpose rows and columns—but it does not explicitly state prerequisites, alternatives, or when not to use it. There is no comparison with sibling tools like pivot_column or unpivot_columns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ungroup_visualsA
UNGROUP a group: clears parentGroupName from every child and removes the group container. groupName = the group name returned by group_visuals.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| groupName | Yes | the group name (from group_visuals) | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the exact mechanics: clears parentGroupName from every child and removes the group container. Missing details like error behavior or prerequisites, but the core operation is well specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and every word contributes. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main action but leaves gaps: the role of the 'page' parameter is unmentioned, and there is no note about prerequisites (e.g., group must exist) or failure behavior. Since the tool has three required params and no output schema, more context is needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond the input schema. The schema already states groupName comes from group_visuals; the description only restates that. It does not explain the role of page or reportSessionId, so it does not compensate for the 67% schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (ungroup) and the resource (visual group), with specific behavioral detail: 'clears parentGroupName from every child and removes the group container.' It also implicitly distinguishes from siblings like group_visuals by referencing group_visuals as the source of groupName.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool: when you have a group name from group_visuals and want to undo the grouping. It names the inverse tool (group_visuals), providing clear context, though it does not explicitly state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpack_to_sourceA
Unpack a .pbix into a deterministic, text-only, git-committable source tree: Model/definition (TMDL from the live session model) + Report/ (legacy Layout canonicalised to Layout.json, or the full PBIR definition tree). Same inputs always produce byte-identical output, so the tree diffs cleanly under git. Refuses to overwrite a folder that is not empty or a previous unpack.
| Name | Required | Description | Default |
|---|---|---|---|
| pbixPath | Yes | path to the .pbix (supplies the report half) | |
| sessionId | Yes | sessionId from connect_model (the live model supplies the TMDL half) | |
| outputFolder | Yes | output folder for the source tree (wiped only if empty or a previous unpack) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavior. It discloses the deterministic byte-identical output, the composition from a live model session and .pbix, the canonicalization of legacy layout, and the refusal to overwrite non-empty folders. This is comprehensive and transparent about side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (two sentences) and every clause earns its place: purpose, output structure, determinism, git benefit, and overwrite safety. It is front-loaded with the main verb and object, and the details are organized logically without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 required params, no output schema), the description fully explains the output format, the source of each half, the deterministic behavior, and the safety guard. It is complete enough for an agent to understand what happens when invoked and what to expect as a result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters, but the description significantly enriches them: pbixPath supplies the report half, sessionId supplies the live TMDL model half, and outputFolder is for the source tree with overwrite protection. This goes well beyond the schema descriptions and clarifies each parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: unpack a .pbix into a deterministic, text-only, git-committable source tree. It specifies the resource (.pbix) and the exact output structure (Model/definition TMDL + Report/), distinguishing it from siblings like generate_pbip or export_tmdl by focusing on the full source tree output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for creating a git-friendly source tree from a .pbix, emphasizing determinism and clean diffs. It also explains the overwrite guard. However, it does not explicitly name alternatives or conditions when not to use it, though the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpivot_columnsB
Power Query Unpivot Columns: turn the listed columns into Attribute/Value row pairs. Appends Table.Unpivot to the table's M query. columns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | Yes | columns to unpivot, comma-separated | |
| sessionId | Yes | ||
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It mentions that Table.Unpivot is appended to the M query, which is useful, but it does not disclose side effects such as the original columns being removed or the resulting table structure changes. Lack of safety/reversibility information is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with the purpose front-loaded and no filler. It efficiently conveys the core operation and one key parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality and result shape (Attribute/Value pairs), but it omits important behavioral details like the impact on original columns, whether the operation is reversible, and how the result is returned. Given no output schema and no annotations, this leaves some context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 'columns' as comma-separated, and the description repeats that exact info, adding no extra meaning. The description does not explain 'sessionId' or 'table', leaving half of the parameters undocumented despite schema coverage of only 50%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: turning listed columns into Attribute/Value row pairs via Table.Unpivot. This specific verb+resource+output distinguishes it from sibling tools like unpivot_other_columns, which unpivot all columns except the listed ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the description (unpivot specific columns), but there is no explicit guidance on when to choose this over alternatives like unpivot_other_columns or unpivot_keep_nulls. No exclusions or alternative tool recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpivot_keep_nullsA
Unpivot keeping NULL rows: replace nulls with a sentinel, UnpivotOtherColumns, then restore the sentinel to null - because plain unpivot silently DROPS null-valued rows. keepColumns (the columns NOT unpivoted) is comma-separated. Appends three steps to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| keepColumns | Yes | the columns to keep (not unpivot), comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the algorithm (sentinel substitution, unpivot, restore) and the side effect of appending three steps to the table's M query. This goes beyond the basic operation, revealing how the tool achieves null preservation and what it modifies. No annotations are present, so this transparency is essential and well-delivered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at three sentences, each carrying essential information: the purpose with mechanism, the parameter clarification, and the side effect. There is no redundant or filler text, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description covers the main behavior, the reason for the behavior, a key parameter's format, and the modification side effect. It does not discuss potential sentinel collisions or error conditions, but these are not essential for basic usage. The description is robust enough for an AI agent to understand when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for keepColumns and partitionName, but not for table and sessionId (50% coverage). The description repeats the keepColumns semantics and adds the context that keepColumns are the columns not unpivoted, but provides no extra detail for the other parameters. With moderate schema coverage, the description adds some value but does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Unpivot' and identifies the key distinction 'keeping NULL rows' and the consequence of plain unpivot dropping nulls. It clearly differentiates from sibling utilities like unpivot_other_columns by focusing on null preservation. The sentinel-based approach is also explained, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the core use case (preserving null rows) and contrasts it with plain unpivot, which silently drops them. However, it does not explicitly name the alternative tool (e.g., unpivot_other_columns) or provide an explicit 'when not to use' condition. The context is clear but lacks direct sibling differentiation by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpivot_other_columnsA
Power Query Unpivot Other Columns: keep the listed columns and unpivot every OTHER column into Attribute/Value pairs (robust to new columns appearing). Appends Table.UnpivotOtherColumns to the table's M query. keepColumns is comma-separated.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| keepColumns | Yes | columns to keep (everything else is unpivoted), comma-separated | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the underlying operation (appending Table.UnpivotOtherColumns to the M query) which indicates a modification. It does not cover error cases, reversibility, or side effects on existing query steps, but the core behavior is adequately described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and includes the key technical detail (Table.UnpivotOtherColumns) and the parameter format without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately simple transformation tool, the description captures the essential behavior and key parameter. It could mention the effect on the existing M query (e.g., new step appended) and whether partitionName is required, but these are either present in schema or inferable. The absence of annotations and output schema is compensated by the clear functional description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only keepColumns and partitionName have descriptions). The description reinforces keepColumns as comma-separated but adds little beyond what the schema already states. It does not explain table, sessionId, or partitionName, relying on schema for some parameters and common sense for others.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: keep listed columns and unpivot every other column into Attribute/Value pairs. It also distinguishes it from siblings by highlighting robustness to new columns, which signals this is the Table.UnpivotOtherColumns variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: when you want to keep specific columns and unpivot the rest. The robustness to new columns is a useful selection criterion. However, it does not explicitly contrast with alternatives like unpivot_columns or unpivot_all or mention 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.
unpivot_weekly_csvA
Stream-unpivot a WIDE CSV (one column per week, e.g. '23/06/2024_SALES','23/06/2024_VOLUME') into a TALL CSV (keys + WeekKey + one column per measure), one row at a time. USE THIS when a CSV has hundreds of period columns and Power Query's Table.UnpivotOtherColumns runs the mashup OUT OF MEMORY on big files - the tall CSV then loads with Csv.Document() and no transform. Optional 2-pass scope filter keeps only rows whose scopeColumn value appears for filterColumn=filterValue (e.g. 'the categories the supplier sells in'). Empty weeks are skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| inCsv | Yes | absolute path to the wide source .csv | |
| outCsv | No | output .csv path (omit to write '<name> (long).csv' next to source) | |
| measures | Yes | measures as suffix:outName, comma-separated, e.g. "_SALES:Sales,_VOLUME:Volume" | |
| keyColumns | Yes | comma-separated key columns to keep, e.g. "PRODUCT_CODE,STORE_CODE" | |
| filterValue | No | optional filter value to keep (the value within the filter column) | |
| scopeColumn | No | optional scope column to keep in-scope rows, e.g. "National Merchandise Category" | |
| filterColumn | No | optional filter column for the scope pass, e.g. "Supplier Name" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals key behaviors such as streaming ('one row at a time'), skipping empty weeks, and an optional 2-pass scope filter. These details go beyond the schema and explain edge cases, though it could be more explicit about file handling or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence contributes value: it front-loads the core action, then the use case, then the optional filter behavior. No fluff or redundant repetition of schema details is present, though a slightly shorter version could still be equally effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by explicitly defining the output structure ('keys + WeekKey + one column per measure') and covering the key operational behaviors (skipping empty weeks, optional filter). It adequately covers the tool's complexity with 7 parameters, though it omits error-handling or extreme edge cases, keeping it just below a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented, but the description adds contextual semantics with examples like '23/06/2024_SALES' and explains how keyColumns and measures interact to form the tall CSV structure. This helps an agent understand the intended domain usage beyond the raw parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Stream-unpivot a WIDE CSV ... into a TALL CSV ... one row at a time.' It distinguishes itself from the sibling unpivot tools by explicitly calling out a memory-constrained scenario where Power Query's Table.UnpivotOtherColumns fails, making the unique value proposition clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool: 'USE THIS when a CSV has hundreds of period columns and Power Query's Table.UnpivotOtherColumns runs the mashup OUT OF MEMORY on big files.' It also names the alternative (Table.UnpivotOtherColumns) and specifies the streaming benefit, providing clear usage context with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_bookmarkA
Re-set which visuals a bookmark hides: listed visuals become hidden, all other recorded visuals become shown. hiddenVisuals = comma-separated visual ids.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | bookmark name or displayName | |
| captureData | No | re-capture the live DATA state (filter/slicer values, sort, drill, cross-highlight) from the bookmark's page | |
| hiddenVisuals | No | comma-separated visual ids to hide | |
| reportSessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains the overwrite behavior: listed visuals become hidden and all other recorded visuals become shown, which is essential for understanding the tool's impact. It also defines the hiddenVisuals format. However, it does not mention effects on captureData, reversibility, or failure cases, so it is not fully exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, focused, and front-loaded with the primary action. It includes all necessary behavioral information without redundancy, and the mention of hiddenVisuals format is concise. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations, so the description needs to convey the core behavior well. It does this for the main hiddenVisuals behavior, but it does not explain captureData's role in the update or what happens when the bookmark is missing. Overall, it is adequately complete for a straightforward update tool, but a bit more context on default behavior would improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is 3. The description adds value by explaining the effect of hiddenVisuals: listed IDs become hidden, others become shown, which goes beyond the schema's 'comma-separated visual ids to hide.' This clarifies the reset semantics. The description does not add much for captureData or reportSessionId, but the schema already provides adequate detail for those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to re-set which visuals a bookmark hides, with specific behavior for listed vs. other visuals. It uses the specific verb 're-set' and the resource 'bookmark,' and the behavior distinguishes it from sibling tools like add_bookmark or delete_bookmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating an existing bookmark's hidden visuals, and the reset behavior is clear. However, it does not explicitly state when to use this tool versus alternatives like set_bookmark_options or set_bookmark_data_state, nor does it mention any exclusions or prerequisites. This is sufficient context but misses explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_calculation_itemA
Update an existing calculation item on a calculation group: DAX expression, ordinal, dynamic format string (empty string clears it) and/or rename it. Omitted properties are left unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | the calculation item to update | |
| table | Yes | the calculation group table | |
| newName | No | rename the item (optional) | |
| ordinal | No | new ordinal (optional) | |
| sessionId | Yes | ||
| daxExpression | No | new DAX expression (optional) | |
| formatStringExpression | No | new dynamic format string DAX; empty string removes it (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It does so by explaining that omitted properties are left unchanged and that an empty format string clears the format. However, it does not describe return values, error conditions, or side effects beyond the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the action and resource, then lists the updateable fields and a key behavioral note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output/return information and explicit alternatives, which would be useful given no output schema and no annotations. The partial update and clearing behavior are useful, but the description is not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 86% of parameter descriptions, and the description adds a key global semantic: omitted properties are unchanged. It also reiterates which parameters correspond to the updateable fields, reinforcing the mapping from description to schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool updates an existing calculation item and enumerates the editable fields (DAX expression, ordinal, format string, rename). This distinguishes it from sibling tools like set_calc_item_ordinal or set_dynamic_format_string, which target single attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it's a partial update tool where omitted properties are unchanged. This implies usage for updating one or more fields at once, but it does not explicitly exclude alternatives like set_calc_item_ordinal for single-field updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_calendarA
Update a table's calendar definition: change the primary date column and/or replace the associated period-column group (columns are validated against the table). FLAG: stamped as the PBI_Calendar table annotation (the Wave R convention) because the native calendar TOM objects are absent from this build.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | the calendar table | |
| sessionId | Yes | ||
| primaryColumn | No | new primary date column (optional) | |
| associatedColumns | No | replacement associated period columns, comma-separated (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that 'columns are validated against the table' and that the tool 'stamped as the PBI_Calendar table annotation (the Wave R convention)' due to missing TOM objects. It does not mention side effects on dependent time intelligence objects, reversibility, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: the first sentence gives the core action, and the second sentence provides a brief implementation note. It is well-structured and front-loaded, though the FLAG note is somewhat tangential to the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description provides a moderate level of completeness. It explains the core behavior and validation, but omits details about sessionId, effects on dependent objects, and explicit exclusions or alternatives. It is sufficient for basic tool selection but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 75% of parameters, and the description adds meaning beyond it: 'columns are validated against the table' and clarifies the roles of primaryColumn and associatedColumns as the new primary date column and replacement period-column group. sessionId remains undocumented, but the description still adds valuable context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Update a table's calendar definition' and details exactly what can be changed: 'change the primary date column and/or replace the associated period-column group'. This distinguishes it from sibling tools like create_date_table or mark_as_date_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: modifying an existing calendar definition. The FLAG note adds context about the implementation approach. However, it does not explicitly mention when not to use this tool or name alternatives, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kpiA
Extend a measure's KPI beyond set_kpi: set the trend expression, a target format string, and the status/trend/target descriptions. Creates the KPI if the measure has none. Any omitted property is left unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| measure | Yes | ||
| sessionId | Yes | ||
| trendExpression | No | DAX trend expression (e.g. prior-period value) | |
| trendDescription | No | trend description text | |
| statusDescription | No | status description text | |
| targetDescription | No | target description text | |
| targetFormatString | No | format string applied to the KPI target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: the merge semantics ('Any omitted property is left unchanged') and the create-if-none fallback. Since no annotations are provided, the description carries the full burden, and it does so adequately, though it does not mention permissions or failure modes for missing measures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with a clear verb-first structure. Every word adds value, and the description is front-loaded with the primary action and distinctive properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage context, and critical behaviors (create-if-none, merge semantics) in a compact format. For a tool with 8 parameters and no output schema, it is fairly complete, though a brief note on return values or error conditions would make it more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 5 of 8 parameters; the description adds semantic grouping by naming the categories (trend expression, target format string, descriptions). Required parameters (table, measure, sessionId) lack descriptions but are self-explanatory. The description compensates reasonably for the 63% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Extend a measure's KPI') and lists specific properties (trend expression, target format string, descriptions), clearly distinguishing it from the sibling set_kpi tool. The mention of 'beyond set_kpi' reinforces the specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names set_kpi as the base tool and explains that this extends beyond it, providing clear context for when to use it. Also notes that it creates the KPI if none exists, which helps determine applicability. Lacks explicit exclusions or alternative comparisons beyond set_kpi.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_measureC
Update an existing measure's DAX, format string or display folder.
| Name | Required | Description | Default |
|---|---|---|---|
| dax | No | new DAX (omit to keep) | |
| name | Yes | ||
| table | Yes | ||
| sessionId | Yes | ||
| formatString | No | new format string (omit to keep) | |
| displayFolder | No | new display folder (omit to keep) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It only states the action of updating, with no mention of permissions, mutability, reversibility, or side effects on related model objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource without unnecessary words. It earns its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, and a moderate number of parameters (6), the description is too sparse. It lacks usage guidelines, behavioral transparency, and sufficient parameter context for sessionId, making it insufficient for an agent to invoke correctly with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists the updatable fields (DAX, format string, display folder), which correspond to the optional parameters. However, it does not clarify the role of 'sessionId' or the identifying purpose of 'table' and 'name' beyond implying they locate the measure. Schema coverage is 50%, so the description provides marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as updating an existing measure's DAX, format string, or display folder. It is specific about the resource and fields, but does not explicitly differentiate from sibling tools like 'set_measure_properties'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'add_measure', 'delete_measure', or 'set_measure_properties'. The description simply states what the tool does without usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_power_queryA
Replace the ENTIRE Section1.m (the full 'section Section1; shared Query = ...;' document) inside a .pbix's DataMashup, clearing PermissionBindings (Desktop recomputes the SHA-256 on open). RISKY - work on a COPY; the .pbix must be CLOSED in Desktop; refuses protected client paths.
| Name | Required | Description | Default |
|---|---|---|---|
| newM | Yes | the full replacement Section1.m document | |
| pbixPath | Yes | absolute path to the .pbix (a COPY) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels. It discloses the destructive side effect (replaces the entire Section1.m), the permission-clearing behavior, the SHA-256 recomputation on open, and the requirement that the file be closed. The 'RISKY' warning and refusal of protected paths add critical behavioral context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that front-load the primary action ('Replace the ENTIRE Section1.m') and then pack essential warnings and constraints. Every clause earns its place; there is no filler or repetition of obvious details. The structure is highly effective for an agent scanning descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-risk mutation tool with no annotations and no output schema, the description is remarkably complete. It covers the target resource, the exact replacement semantics, side effects, prerequisites (closed file, copy), and an exclusion (protected paths). An agent has sufficient context to decide whether to invoke it and how to prepare safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both pbixPath and newM have descriptions), so the baseline is 3. The tool description reinforces that newM is the 'full replacement Section1.m document' and pbixPath is 'a COPY', but these details are already present in the schema. No additional parameter semantics are added beyond what the structured field descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Replace') and defines the exact scope: the ENTIRE Section1.m document inside the .pbix's DataMashup, including the full 'section Section1; shared Query = ...;' document. This clearly distinguishes it from sibling tools like extract_power_query (which reads) and set_partition_m (which likely targets a different component).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context and constraints: work on a COPY, .pbix must be CLOSED in Desktop, and it refuses protected client paths. These are explicit when-to-use and when-not-to-use conditions. However, it doesn't mention alternatives or explicitly compare to other tools like extract_power_query, so it misses the 'alternatives' part of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_relationshipA
Update an existing relationship's cardinality, filtering behaviour, active flag or join-on-date behaviour. Identify it by name, or by all four of fromTable/fromColumn/toTable/toColumn (order-insensitive). fromCardinality/toCardinality = One | Many (to switch 1:1 / M:1 / 1:M / M:M). crossFilteringBehavior = OneDirection | BothDirections | Automatic. securityFilteringBehavior = OneDirection | BothDirections | None. joinOnDateBehavior = DateAndTime | DatePartOnly. Any omitted property is left unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | relationship name (omit to identify by the column pair) | |
| toTable | No | to-side table | |
| isActive | No | set active/inactive | |
| toColumn | No | to-side column | |
| fromTable | No | from-side table (with the other three for column-pair lookup) | |
| sessionId | Yes | ||
| fromColumn | No | from-side column | |
| toCardinality | No | to-side cardinality: One | Many | |
| fromCardinality | No | from-side cardinality: One | Many | |
| joinOnDateBehavior | No | DateAndTime | DatePartOnly | |
| crossFilteringBehavior | No | OneDirection | BothDirections | Automatic | |
| securityFilteringBehavior | No | OneDirection | BothDirections | None |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the transparency burden. It explicitly states partial-update semantics ('Any omitted property is left unchanged') and gives exact allowed values for each behavior field. It does not mention error cases, permissions, or side effects, but the disclosed partial-update and enumeration behavior is substantial context beyond a generic 'update'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but information-dense. It front-loads the purpose, then identification, then enumerations, and closes with partial-update semantics. While the enumeration list is lengthy, each sentence contributes useful lookup or usage details, though the run-on format slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 12-parameter mutation tool with no output schema, the description covers the core invocation details: what to update, how to identify the target, allowed values, and partial-update behavior. It omits potential error conditions and return values, but those are less critical for this type of tool than for a read or query operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema has high coverage (92%), the description adds crucial meaning by explaining how to combine fromTable/fromColumn/toTable/toColumn for order-insensitive identification, and it translates cardinality combinations into relationship types (1:1 / M:1 / 1:M / M:M). This goes well beyond the schema's property-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Update an existing relationship's cardinality, filtering behaviour, active flag or join-on-date behaviour.' It clearly scopes the tool to modifying existing relationships, distinguishing it from sibling tools like add_relationship and delete_relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames when to use this tool (to update an existing relationship) and provides identification options (by name or by the four-column tuple). However, it does not explicitly list alternative tools or state when not to use it, leaving the guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_template_measureA
Update an existing measure's DAX expression, format string and/or display folder in a closed .pbit template's model, editing the DataModelSchema JSON on disk with no Power BI Desktop. Any omitted field is left unchanged. Fails if the measure does not exist. Written back in place (with a .bak guard).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | measure name | |
| table | Yes | home table of the measure | |
| pbitPath | Yes | path to the closed .pbit template | |
| expression | No | new DAX expression (omit to keep) | |
| formatString | No | new format string (omit to keep) | |
| displayFolder | No | new display folder (omit to keep) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses the write behavior (edits JSON on disk, written back in place), the safety .bak guard, the failure condition if the measure does not exist, and the no-Desktop operation. This goes well beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all dense with information: the first states action and mechanism, the second explains omission semantics and failure, the third notes backup safety. No filler, no redundancy, and the verb 'Update' is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is remarkably complete. It covers what is updated, where (closed .pbit), how (JSON on disk, no Desktop), the behavior for omitted fields, failure conditions, and backup safeguard. An agent can confidently invoke it with just this description and the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all six parameters with descriptions (100% coverage), so the baseline is 3. The description adds critical semantics: 'Any omitted field is left unchanged' clarifies the meaning of null/omit for the optional fields, and 'Fails if the measure does not exist' ties to the required name/table. This extra context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update an existing measure's DAX expression, format string and/or display folder'), the target resource ('a closed .pbit template's model'), and the method ('editing the DataModelSchema JSON on disk with no Power BI Desktop'). This distinguishes it from sibling update tools like update_measure or set_measure_properties that likely operate on open models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit context: use for closed .pbit templates without Power BI Desktop, and clarifies that omitted fields are preserved. However, it does not name alternatives or state when not to use it, so it falls 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.
update_visual_propertyA
GENERAL offline report-visual editor: open a CLOSED .pbix, set ANY property at a JSON path UNDER a visual's singleVisual config, then write the .pbix back (DataModel preserved). Locate the visual by its config name, displayName, its visible TITLE (e.g. 'Chart Period'), or a bound field (Table.Field / table / field). property_path navigates under singleVisual and creates missing objects/arrays, e.g. 'objects.selection[0].properties.strictSingleSelect', 'drillFilterOtherVisuals', 'display.mode'. valueKind: auto (default = JSON if it parses, else string) | raw | json | string | literal | bool | number | color | text - literal/bool/number/color/text wrap the value as a Power BI formatting literal expr so a formatting-card property can be set by path. Returns the before/after value at that path. The .pbix must NOT be open in Power BI Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | page name or displayName | |
| pbix | Yes | absolute path to the .pbix (must be CLOSED in Power BI Desktop) | |
| value | Yes | the value to set | |
| valueKind | No | auto|raw|json|string|literal|bool|number|color|text | auto |
| propertyPath | Yes | JSON path under singleVisual, e.g. objects.selection[0].properties.strictSingleSelect | |
| visualIdOrTitle | Yes | visual to edit: config name, displayName, its visible TITLE, or a bound field |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that the tool writes back to the file while preserving the DataModel, creates missing objects/arrays along the path, explains valueKind semantics in detail, and notes the return of before/after values. It also states the requirement that the .pbix be closed, which is a critical behavioral constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, front-loading the core purpose and then systematically covering visual lookup, property path, valueKind, return value, and usage constraint. Every sentence adds value, though the length is slightly high. It remains easy to scan due to logical ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, no annotations, no output schema), the description is remarkably complete. It covers what the tool does, when to use it, how to locate visuals, how to set values with all valueKind options, what it returns, and a critical prerequisite (.pbix closed). This is sufficient for an agent to select and invoke it correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema has 100% parameter descriptions, the description adds substantial meaning. It explains property_path with concrete examples, clarifies valueKind behaviors (auto parse vs. wrapping as literal expressions), and details visualIdOrTitle options (config name, displayName, visible TITLE, bound field). This goes well beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'open a CLOSED .pbix, set ANY property at a JSON path UNDER a visual's singleVisual config, then write the .pbix back'. This is a specific verb+resource+scope that distinguishes it from siblings like set_visual_title or set_visual_format. The 'GENERAL' prefix emphasizes its role as a general-purpose fallback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: offline editing of a closed .pbix, visual location methods, and explicit constraint that the .pbix must NOT be open in Power BI Desktop. However, it does not explicitly name alternative tools (e.g., set_visual_property) or state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_daxA
Validate a DAX expression against the live model without changing anything (runs EVALUATE ROW).
| Name | Required | Description | Default |
|---|---|---|---|
| dax | Yes | DAX expression to validate | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explicitly states the operation is non-mutating ('without changing anything') and reveals its implementation ('runs EVALUATE ROW'), which is valuable context. It does not detail error handling or return values, but the core safety behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and includes all essential information: what it does, against what, and the safety guarantee. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema and no annotations, the description provides adequate context: purpose, safety, and implementation. It lacks explicit mention of return values or failure modes, but these are not critical for basic tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 50% of parameters (dax is described, sessionId is not). The description uses 'DAX expression' matching the schema, and 'live model' implies sessionId refers to a live model session, adding slight context. However, it does not fully compensate for the undocumented sessionId parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a DAX expression against the live model, using a specific verb ('Validate') and resource ('DAX expression against the live model'). It distinguishes from siblings by noting 'without changing anything' and 'runs EVALUATE ROW', differentiating it from run_dax or dax_lint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without changing anything' provides clear context that this is a safe validation tool, implying it should be used when side effects are undesirable. However, it does not explicitly name alternatives like run_dax or dax_benchmark, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_visual_formatA
Validate a formatJson against the registry for a given visualType WITHOUT applying it. formatJson is the set_visual_format shape ({vcObjects:{card:{prop:val}}, objects:{card:{prop:val}}}) or a bare {card:{prop:val}} map. Returns non-fatal warnings: unknown cards, unknown properties, and type/enum/range mismatches. Custom visuals and newer properties legitimately fall outside the catalogue, so warnings are advisory, not errors.
| Name | Required | Description | Default |
|---|---|---|---|
| formatJson | Yes | JSON: { vcObjects:{card:{prop:value}}, objects:{card:{prop:value}} } or a bare {card:{prop:value}} map | |
| visualType | Yes | a canonical visualType key, e.g. lineChart |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns non-fatal warnings, lists the warning types, and clarifies that warnings are advisory, not errors, due to custom visuals and newer properties. It also implies no side effects by stating it does not apply the format. This is excellent transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: first sentence states purpose and non-application, second explains the parameter shape, third lists return type, and fourth clarifies advisory semantics. Every sentence adds value, with no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with two parameters and no output schema, the description is complete. It explains what the tool does, what it returns (warnings), the categories of warnings, and how to interpret them (advised, not errors). It provides sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description repeats the formatJson shape already in the schema and adds minimal extra meaning. It does link to 'set_visual_format shape', but this does not significantly enhance parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to validate a formatJson against a registry for a given visualType. It uses a specific verb ('Validate') and resource, and distinguishes itself from applying tools by explicitly noting 'WITHOUT applying it'. This differentiates it from siblings like set_visual_format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's use case is implied strongly: it is for validating formatJson before applying it, and the 'WITHOUT applying it' phrasing contrasts with applying tools. However, it does not explicitly name alternative tools or provide explicit when-not scenarios, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_wireframeA
READ-ONLY layout lint over visual positions + page size (no fixes applied): visual OVERLAP pairs, OFF-CANVAS placement (negative or beyond the page bounds), tiny/zero-size visuals, z-order anomalies (a data visual rendering ABOVE an overlapping slicer), plus margin/gap statistics per page. Every violation names the existing fixer tool (auto_arrange / align_visuals / tidy_slicer_layout_v2 / move_visual / resize_visual / set_visual_z_order). Accepts a LEGACY reportSessionId (from open_report) OR a PBIR pbirSessionId (from read_pbir) - the same shared geometry checker runs over both readers.
| Name | Required | Description | Default |
|---|---|---|---|
| pageName | No | one page (name or displayName); omit for every page | |
| reportSessionId | Yes | a reportSessionId (open_report) or pbirSessionId (read_pbir) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It explicitly declares the tool is READ-ONLY, lists what geometry issues are detected, and explicitly states no fixes are applied. It also reveals the underlying shared geometry checker behavior across both reader types, providing context beyond simple annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it front-loads 'READ-ONLY layout lint' and 'no fixes applied', then efficiently lists checks using parenthetical and slash-separated items. The session type explanation adds a necessary but slightly lengthy second sentence; overall every clause earns its place, though it could be broken into bullet points for even faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description clearly implies the output (violation categories and associated fixer names) and fully explains input types and page-scoping. It gives the agent all necessary information to decide when and how to invoke this tool, covering both usage scenarios and the relationship to fixers. The description is effectively self-contained for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the base requirement is met. The description adds meaningful nuance by explaining that reportSessionId can be a legacy ID from open_report or a pbirSessionId from read_pbir, and clarifies that the same checker runs for either, which is not derivable from the schema alone. This goes beyond just repeating parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'READ-ONLY layout lint' and specifies the resource: 'visual positions + page size'. It then enumerates concrete checks (OVERLAP pairs, OFF-CANVAS, tiny/zero-size visuals, z-order anomalies, margin/gap statistics), clearly distinguishing it from the sibling fixer tools which it explicitly names (auto_arrange, align_visuals, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states this is a read-only lint with 'no fixes applied' and that 'Every violation names the existing fixer tool', directly guiding the agent to run this before using a fixer like auto_arrange or move_visual. It also clarifies two supported input modes (legacy reportSessionId vs PBIR pbirSessionId) and that the same checker works for both, removing ambiguity about when each session type is valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
value_nativequery_foldingA
Run a native query against a source and KEEP downstream folding alive: Value.NativeQuery(sourceExpr, nativeQuery, params, [EnableFolding=true]). sourceExpr is raw M (e.g. a Sql.Database(...) reference). paramsExpr is an optional raw M parameter record/list. Appends one step to the table's M query.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| sessionId | Yes | ||
| paramsExpr | No | optional raw M parameter record/list (default null) | |
| sourceExpr | Yes | the source as raw M, e.g. Sql.Database("srv","db") | |
| nativeQuery | Yes | the native (SQL) query text | |
| partitionName | No | partition name (optional; defaults to the first partition) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool appends a step to the table's M query, uses raw M expressions, and keeps folding alive. It does not mention potential side effects or safety aspects of running a native query, but the key behavioral trait is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key purpose, and includes the exact M function signature. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of annotations/output schema, the description is fairly complete. It explains the M syntax, parameter roles, and the effect on the table's M query. It does not mention return values, but for a tool that modifies the M query this may not be critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% with descriptions for sourceExpr and nativeQuery. The description adds clarity for sourceExpr (raw M, e.g., Sql.Database) and paramsExpr (optional raw M record/list), but does not explain table, sessionId, or partitionName beyond the schema. It adds some value but does not fully compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a native query and keeps downstream folding alive, using a specific verb and resource. It distinguishes itself from sibling tools like set_stop_folding by explicitly mentioning the folding-preservation behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when a native query is needed and folding should be preserved. It does not explicitly name alternatives or state when not to use it, but the context is clear from the phrase 'KEEP downstream folding alive'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warm_directlake_cacheA
Warm the Direct Lake cache: run EVALUATE TOPN(1, SELECTCOLUMNS(...)) over the listed columns (or every column on the table) to force them resident, removing the first-query latency. columns is comma-separated (omit for all). Returns the query and result.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| columns | No | columns to warm, comma-separated (omit for all) | |
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it runs a specific DAX query (TOPN(1, SELECTCOLUMNS(...))) over listed columns or the entire table, and that it returns the query and result. This is transparent about the operation, though it does not mention potential side effects like memory pressure or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the purpose, mechanism, parameter format, and return value in three tight sentences. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and three parameters, the description covers the core purpose, mechanism, column parameter usage, and return value. It is missing explanation of sessionId and prerequisites (e.g., Direct Lake mode), but overall it provides enough context for a capable agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only columns has a description). The description adds clarifying meaning for the table parameter (the table being warmed) and columns (comma-separated, omit for all), but it does not explain the required sessionId parameter at all. It partially compensates for the coverage gap but leaves a key parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Warm the Direct Lake cache') and explains the exact mechanism (run EVALUATE TOPN(1, SELECTCOLUMNS(...))). It clearly distinguishes this from sibling tools like refresh_dataset or check_directlake_fallback by focusing on cache warming to eliminate first-query latency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: to force columns resident and remove first-query latency. It also clarifies the columns parameter ('omit for all'), implying the scope. It does not explicitly name alternatives or exclusions, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With 490 tools, many have overlapping boundaries. For example, set_visual_format and set_visual_property both set formatting on a visual, and there are numerous add_*_filter tools at different scopes that could be confused. While descriptions are detailed, the sheer volume makes misselection likely.
Tool names mostly follow a verb_noun snake_case pattern (add_measure, delete_visual, set_axis). Deviations exist such as model_health, dax_lint, impact_analysis, and sentinel_diff, which start with nouns, but the pattern is still coherent and readable.
At 490 tools, this is an extreme mismatch for any server. Even for a comprehensive Power BI automation toolkit, this far exceeds the typical well-scoped count and will overwhelm agents attempting to select the right tool.
The tool surface is remarkably complete, covering model editing, report design, Power Query transformations, PBIR handling, security, service operations, and more. It includes create/read/update/delete operations across virtually every domain, with few if any obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
Give your AI agents the tools to build, manage, and run automation workflows.
AgentPMT is the AI agent marketplace that turns any MCP-compatible AI assistant into an autonomous employee. Connect once and your agents gain access to a growing ecosystem of tools, workflows, and skills spanning communication, data analytics, development, file management, search, and more. AgentPMT dynamically discovers and orchestrates tools from across the MCP ecosystem, so your agents can independently find the right tool for any task without manual configuration.
Debug, build, and manage Power Automate cloud flows with AI agents
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to analyze and interact with Power BI (.pbix) files through PBIXRay capabilities. Provides access to data models, DAX measures, Power Query code, table relationships, and data contents with configurable tools and pagination support.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLM clients to analyze and interact with Power BI (.pbix) files, providing access to data models, DAX measures, Power Query code, table relationships, and data contents through natural language.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically manage Power BI workspaces, reports, and dashboards while executing DAX queries and triggering dataset refreshes. It supports secure OAuth2 authentication for operations like report exporting, workspace management, and real-time push dataset updates.624MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to deploy Power BI reports to Microsoft Fabric by automating data loading from CSV, creating semantic models, and generating report visuals.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyphonica/powerbi-pbix-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server