Skip to main content
Glama
jonathan-pap

Power BI Report MCP Server

by jonathan-pap

"Create an executive summary page with 6 KPI cards, a revenue trend line chart, and a bar chart by country"

One prompt. One batch call. Full page in Power BI Desktop.


What's new in 0.9

  • Layout validator now reachable via pbir_validate_wireframe (v0.9.6) — same checks the test suite runs (margins, gaps, overlap, off-canvas, banner geometry), callable from agents on a single page or across the entire report

  • Tier C.1 catalog reduction + pbir_guide fix (v0.9.5) — see CHANGELOG.md

What's new in 0.8

  • pbir_ tool prefix — every tool name now starts with pbir_ to avoid collisions with sibling MCP servers in the same session

  • Cowork plugin — drop a single .plugin file into Claude (no terminal, no Node install) — see Quick Start › Cowork plugin

  • registerTool migration — modern MCP SDK entrypoint with structured outputSchema on every read tool

  • Typo catcher + auto-pageId — fewer "did you mean…" round-trips when there's only one page

  • Tighter outputSchema (v0.8.2) — 14 read tools now ship per-tool zod response schemas; mutation tools keep the loose envelope

Full details: CHANGELOG.md.


What is this?

The first open-source MCP server for Power BI report authoring. It connects Claude (or any MCP-compatible client — see Tested clients) to Power BI's PBIR (Power BI Report) file format, turning natural language into real report pages — cards, charts, tables, themes, filters, and formatting.

No REST API keys. No Power BI service. Just local files + Claude.

You: "Build me a sales dashboard with KPIs, trend charts, and a detail table"

AI:  pbir_create_page → pbir_add_visual (batch: 12 visuals) → pbir_set_report_theme → done.
     Open in Power BI Desktop. ✓

Related MCP server: power-bi-mcp

Why MCP?

MCP (Model Context Protocol) is an open standard that lets AI assistants call external tools. Instead of the AI generating code for you to run, it directly executes operations through the MCP server.

graph LR
    subgraph AI["AI Assistant"]
        LLM["Claude, GPT,<br/>Copilot, Cursor..."]
    end

    subgraph MCP["Two MCP Servers"]
        direction TB
        MODEL["powerbi-modeling-mcp<br/><i>Tables, columns, measures, DAX</i>"]
        REPORT["powerbi-report-mcp<br/><i>Pages, visuals, themes, filters</i>"]
    end

    subgraph Files["Power BI Project"]
        direction TB
        SEM[".SemanticModel<br/><i>TMDL / measures</i>"]
        REP[".Report<br/><i>PBIR / visual.json</i>"]
    end

    PBI["Power BI<br/>Desktop"]

    LLM <-->|"stdio / MCP"| MODEL
    LLM <-->|"stdio / MCP"| REPORT
    MODEL <-->|"read"| SEM
    REPORT <-->|"read/write"| REP
    REP -->|"open .pbip"| PBI

The typical workflow:

1. Query the model   --> "What tables and measures are available?"    (modeling-mcp)
2. Build the report  --> "Create a dashboard with those measures"     (report-mcp)
3. Open in Desktop   --> Ctrl+Shift+F5 to refresh

Both servers run simultaneously as MCP tools. The AI queries the semantic model for exact table/column/measure names, then uses those to build correctly-bound report pages — no guessing, no broken fields.

Zero vendor lock-in — built on @modelcontextprotocol/sdk + zod. No Anthropic, OpenAI, or Microsoft SDK imports.


How It Compares

This MCP Server

Manual PBI Desktop

Power BI REST API

pbi-tools

Input

Natural language

Mouse clicks

REST calls + auth

CLI commands

Speed

10-page report in minutes

Hours

Hours (code-heavy)

Minutes (extract/deploy)

Auth required

None (local files)

None

Azure AD + Service Principal

None

AI-native

Yes (MCP)

No

No

No

Format

PBIR (file-based)

PBIX (binary)

Cloud-only

PBIX ↔ folder

Creates visuals

Yes

Yes

Limited

No (metadata only)

Themes & formatting

Yes

Yes

Limited

No

Filters

Yes

Yes

Yes

No

Works offline

Yes

Yes

No

Yes


Quick Start

Full walkthrough: docs/quickstart.md

1. Install

git clone https://github.com/jonathan-pap/powerbi-report-mcp.git
cd powerbi-report-mcp
npm install
npm run build

2. Configure your MCP client

Ready-to-use config files are in the configs/ folder — copy the one for your client, update the path, done.

Config

Client

Copy to

claude-desktop.json

Claude Desktop

%LOCALAPPDATA%\...\Claude\claude_desktop_config.json

cursor.json

Cursor

~/.cursor/mcp.json

vscode-copilot.json

GitHub Copilot

.vscode/mcp.json

windsurf.json

Windsurf

~/.windsurf/mcp.json

continue-dev.json

Continue.dev

~/.continue/config.json

cline.json

Cline

VS Code Settings → MCP Servers

Claude Code (no config file needed):

claude mcp add powerbi-report-mcp node C:\path\to\powerbi-report-mcp\dist\index.js

Each config includes both powerbi-report-mcp and powerbi-modeling-mcp for full dual-layer access. See configs/README.md for optional settings (pre-connect to a report, load all tools at startup).

Optional: opt into minimal tool loading

For long Claude Code / Cowork sessions where catalog tokens matter, set MCP_TOOLS=minimal to load only the 12 default tools at startup (saves ~7,500 catalog tokens; the remaining 44 activate on demand via pbir_load_tools):

{
  "mcpServers": {
    "powerbi-report-mcp": {
      "command": "node",
      "args": ["/path/to/powerbi-report-mcp/dist/index.js"],
      "env": {
        "MCP_TOOLS": "minimal"   // optional — saves ~7,500 catalog tokens
      }
    }
  }
}

Trade-off summary (full breakdown in Smart Tool Loading below):

  • Default (load-all) — All 56 tools available immediately. Best for unpredictable/exploratory sessions and clients that snapshot the tool list at startup. ~14,500 catalog tokens.

  • MCP_TOOLS=minimal — 12 default tools at startup; others activatable via pbir_load_tools. Best for known-narrow workflows. ~7,000 catalog tokens. Requires MCP client support for notifications/tools/list_changed to surface activated tools mid-session — Claude Code/Desktop don't refresh; Cowork may; verify before relying.

3b. Cowork plugin

Prefer to skip the git clone/npm install dance? Grab the latest .plugin bundle from GitHub Releases and drag it into Claude — the plugin ships the server, skills, and a default MCP wiring in one file.

Step

Action

1

Download powerbi-report-builder-<version>.plugin from the latest release

2

Open Claude → Settings → Plugins → Install from file (or drag-and-drop the .plugin onto the Claude window)

3

Approve the bundled MCP server when prompted

4

In any Claude conversation: "Connect to C:\Projects\Sales.Report and list pages"

Cowork is a hosted Claude experience with native plugin support. The plugin bundle is a single zip; nothing leaves your machine and the MCP server still runs locally over stdio.

3. Connect and build

Connect to C:\Projects\Sales.Report
Create a page called "Overview" with 4 KPI cards and a bar chart by country

4. Open in Power BI Desktop

Open the .pbip file — or if already open, press Ctrl+Shift+F5 to refresh.

Headless / eval mode

For automated/eval use you can auto-bind a report at startup with the PBIR_REPORT_PATH env var instead of calling pbir_set_report:

PBIR_REPORT_PATH=evals/fixtures/sample.Report node dist/index.js

If the path is invalid the server logs to stderr and continues running unbound (use pbir_set_report to recover). The CLI arg form (node dist/index.js <path>) still works and wins when both are set.


Smart Tool Loading

By default all 56 tools load at startup — this is the most compatible configuration, and what you want for Claude Desktop and most other MCP clients whose tool catalog is a snapshot taken at session start.

For token-sensitive setups (e.g. Claude Code with large prompt budgets on dev machines), you can opt into the minimal mode — only 12 core tools load at startup, and the LLM activates more on-demand via pbir_load_tools:

"env": { "MCP_TOOLS": "minimal" }
graph TD
    subgraph DEFAULT["11 Core Tools — always loaded in both modes"]
        A1[pbir_set_report] --- A2[pbir_list_pages] --- A3[pbir_list_visuals] --- A4[pbir_create_page] --- A5[pbir_add_visual]
        B1[pbir_get_visual] --- B2[pbir_format_visual] --- B3[pbir_update_visual_bindings] --- B4[pbir_set_report_theme] --- B5[pbir_bulk_bind]
        C1[pbir_model_usage]
    end

    LT[pbir_load_tools -- always available]

    subgraph ONDEMAND["43 On-Demand Tools"]
        C1[pbir_delete_page] --- C2[pbir_rename_page] --- C3[pbir_duplicate_page] --- C4[pbir_move_visual] --- C5[pbir_delete_visual]
        D1[pbir_set_datapoint_colors] --- D2[pbir_set_conditional_format] --- D3[pbir_add_page_filter] --- D4[pbir_set_visual_sort] --- D5[guide]
        E1[pbir_list_bookmarks] --- E2[pbir_set_page_background] --- E3[...]
    end

    DEFAULT --> LT --> ONDEMAND

    style DEFAULT fill:#1a7f37,color:#fff
    style ONDEMAND fill:#333,color:#ccc
    style LT fill:#0078D4,color:#fff

Mode

Tools at Startup

Token Overhead

Use Case

default

56 + pbir_load_tools

~16,500 tokens

Claude Desktop, most clients, first-time users

MCP_TOOLS=minimal

12 + pbir_load_tools

~3,400 tokens

Claude Code / clients that refresh the tool list mid-session

MCP_TOOLS=all (legacy alias)

56 + pbir_load_tools

~16,500 tokens

Same as default; kept for backward-compat

Default is "load everything" because Claude Desktop snapshots the MCP tool catalog at session start and never refreshes it — tools activated mid-session via pbir_load_tools would otherwise be invisible to the model. Clients that honour tools/list_changed notifications (Claude Code, Cowork) can opt into MCP_TOOLS=minimal to claw back ~13k tokens.


Tool Reference

Default Tools

Tool

Description

pbir_set_report

Connect to a .Report folder at runtime

pbir_list_pages

List all pages (id, name, visual count)

pbir_list_visuals

List visuals on a page (id, type, position, title)

pbir_create_page

Create a new page

pbir_add_visual

Add one or many visuals with bindings, formatting, colors

pbir_get_visual

Inspect a visual's config and bindings

pbir_format_visual

Format axes, legend, labels, borders, background

pbir_update_visual_bindings

Replace data bindings on a visual

pbir_set_report_theme

Apply a custom JSON theme to the whole report

pbir_bulk_bind

Rebind multiple visuals in one call

pbir_model_usage

Cross-reference semantic model with report — three-tier classification (direct/indirect/unused), DAX lineage, UDF functions, conditional formatting detection

pbir_load_tools

List and activate on-demand tools

Why pbir_model_usage is a default tool — the deletion fail-safe

pbir_model_usage ships in the default set (not on-demand) because it is the safety layer for AI-driven cleanup of the semantic model. When a user asks Claude to "remove unused measures" or "clean up dead columns", the model would otherwise guess based on measure names and delete things blindly — and break visuals that depend on indirect references.

With pbir_model_usage always available, the LLM can call it first and see the full dependency picture before touching anything:

Scenario

Without pbir_model_usage

With pbir_model_usage

User: "delete all unused measures"

LLM guesses by name, deletes Margin Delta pp, Margin Arrow breaks the next day

LLM sees Margin Delta pp is status indirect (referenced by Margin Arrow), keeps it, lists only the truly safe ones

User: "is Discount Arrow used anywhere?"

LLM greps the visual JSON, misses conditional formatting bindings

LLM sees it bound to cardImage.imageData / referenceLabel.value and reports exactly where

User: "which UDF functions can I drop?"

LLM has no lineage info

LLM sees reference counts per function and flags zero-reference functions

The MCP tool gives Claude that understanding before it mutates anything — what prevents "oops" deletes. The tool returns a slim JSON response (~7K tokens) by default so it's cheap to call before every destructive operation.

On-Demand Tools (43)

Tool

Description

pbir_get_report

Show connected report path

pbir_reload_report

Reopen report in PBI Desktop

pbir_get_report_settings

Read report-level settings

pbir_update_report_settings

Merge new report settings

get_page_summary

All pages + visuals in one call

pbir_delete_page

Delete a page and its visuals

pbir_rename_page

Rename a page

pbir_duplicate_page

Clone a page with all visuals

pbir_reorder_pages

Set page order

pbir_set_active_page

Set default page on open

pbir_update_page_size

Change page dimensions

pbir_set_page_visibility

Show/hide from navigation

pbir_auto_layout

Auto-arrange visuals in a grid

pbir_set_filter_pane

Show/hide and expand/collapse the filter pane

pbir_set_page_background

Set page canvas background color and/or wallpaper

pbir_set_visual_interaction

Set cross-filter/highlight interaction between visuals

pbir_manage_extension_measures

Add, list, or remove report-level DAX measures

Tool

Description

pbir_delete_visual

Remove a visual

pbir_duplicate_visual

Clone a visual

pbir_move_visual

Reposition and resize

pbir_change_visual_type

Swap type, keep bindings

pbir_get_visual_types

List all visual types and buckets

Tool

Description

pbir_set_visual_title

Set title text, font, alignment

pbir_set_datapoint_colors

Per-series or per-category colors

pbir_set_conditional_format

Rules-based or gradient formatting

pbir_set_visual_sort

Set or change sort order (column/measure, ascending/descending)

pbir_apply_theme

Apply a preset theme to a page

pbir_audit_theme_compliance

Scan visuals for formatting overrides conflicting with theme

Tool

Description

pbir_get_report_theme

Get current theme JSON

pbir_remove_report_theme

Revert to default theme

pbir_list_report_themes

List stored theme files

pbir_diff_report_theme

Compare proposed vs current theme

Tool

Description

pbir_list_filters

List page or visual filters

pbir_add_page_filter

Add categorical, TopN, relative date, or advanced filter

pbir_remove_filter

Remove a filter by name

pbir_clear_filters

Remove all filters

Tool

Description

pbir_bulk_delete_visuals

Delete multiple visuals

pbir_bulk_update_format

Format multiple visuals

Tool

Description

pbir_list_bookmarks

List all bookmarks in the report

pbir_add_bookmark

Create a new bookmark

pbir_delete_bookmark

Delete a bookmark

pbir_rename_bookmark

Rename a bookmark

Tool

Description

pbir_guide

Domain knowledge for PBI development — topics: svg-visuals, report-design

The pbir_guide tool provides focused, actionable knowledge to help AI agents make better decisions. Instead of loading large skill files into every session, agents call pbir_guide("topic") on demand. The SVG visuals topic includes 4 DAX templates, binding rules, and workflow steps.


Batch Mode — Build Pages Fast

Create an entire page in a single pbir_add_visual call:

{
  "pageId": "abc123",
  "visuals": [
    {
      "visualType": "shape", "shapeType": "rectangle",
      "x": 0, "y": 0, "width": 1280, "height": 50,
      "fillColor": "#1F3864", "textContent": "Sales Dashboard",
      "textColor": "#FFFFFF", "textBold": true, "textSize": 20
    },
    {
      "visualType": "card",
      "x": 10, "y": 60, "width": 300, "height": 100,
      "title": "Revenue",
      "bindings": [
        { "bucket": "Fields", "fields": [{ "field": "Sales[Revenue]", "type": "measure" }] }
      ]
    },
    {
      "visualType": "clusteredBarChart",
      "x": 10, "y": 170, "width": 620, "height": 260,
      "title": "Revenue by Country",
      "bindings": [
        { "bucket": "Category", "fields": [{ "field": "Store[Country]", "type": "column" }] },
        { "bucket": "Y", "fields": [{ "field": "Sales[Revenue]", "type": "measure" }] }
      ],
      "dataColors": [{ "color": "#0078D4" }]
    }
  ]
}

One call creates the banner, KPI card, and chart — with data bindings, titles, and colors.


Supported Visual Types

Full reference: docs/visual-types.md

Naming Gotchas

barChart              = Stacked bar       (NOT clustered)
columnChart           = Stacked column    (NOT clustered)
clusteredBarChart     = Clustered bar     ✓
clusteredColumnChart  = Clustered column  ✓
stackedBarChart       = DOES NOT EXIST    ✗ (use barChart)
scatterChart          = Uses "Details" bucket, NOT "Category"
Combo charts          = Use "ColumnY" + "LineY", NOT "Y" + "Y2"

Quick Reference

Category

Types

Bar/Column

barChart · clusteredBarChart · columnChart · clusteredColumnChart · hundredPercentStackedBarChart · hundredPercentStackedColumnChart

Line/Area

lineChart · areaChart · stackedAreaChart · hundredPercentStackedAreaChart

Combo

lineClusteredColumnComboChart · lineStackedColumnComboChart

Pie/Donut

pieChart · donutChart · funnelChart · treemap

Tables

tableEx · pivotTable (matrix)

Cards

card · cardVisual · multiRowCard · kpi · gauge

Slicers

slicer (Basic/Dropdown) · listSlicer · textSlicer · advancedSlicerVisual

Maps

azureMap · map · filledMap

Scatter

scatterChart

Other

ribbonChart · waterfallChart · decompositionTreeVisual

Decorative

textbox · shape · image · actionButton · pageNavigator


Formatting

pbir_format_visual(target="auto")          → auto-routes to container or visual (default)
pbir_format_visual(target="container")     → title, background, border, padding, shadow
pbir_format_visual(target="visual")        → axes, legend, labels, line styles, data points

Category

Properties

title

text, show, fontSize, fontFamily, alignment, fontColor

background

show, color, transparency

border

show, color, width, radius

padding

top, bottom, left, right

dropShadow

show, position

visualHeader

show

Category

Properties

Applies To

categoryAxis

show, labelColor, fontSize

Bar, column, line, combo

valueAxis

show, labelColor, fontSize

Bar, column, line, combo

legend

show, position, labelColor

Charts with Series

labels

show, color, fontSize

Most charts

lineStyles

strokeWidth, lineChartType

Line, area, combo

dataPoint

fillTransparency

Most charts

Hex colors starting with # are automatically wrapped in PBIR format.


Themes & Conditional Formatting

Report-Level Theme

{
  "name": "Corporate Brand",
  "dataColors": ["#0078D4", "#00BCF2", "#00B294", "#FF8C00", "#E81123"],
  "background": "#FFFFFF",
  "foreground": "#1F3864",
  "tableAccent": "#0078D4"
}

Gradient Conditional Format

{
  "formatType": "gradient",
  "entity": "Sales", "property2": "Revenue", "isMeasure": true,
  "minColor": "#FF6B6B", "midColor": "#FFD93D", "maxColor": "#6BCB77"
}

Page Themes (presets)

dark · light · corporate · blue-purple


Filters

// Categorical — include specific values
{ "filterType": "categorical", "entity": "Store", "property": "Region", "values": ["East", "West"] }

// TopN — top 10 products (visual-level only)
{ "filterType": "topN", "entity": "Product", "property": "Name", "n": 10,
  "topNDirection": "Top", "orderByEntity": "Sales", "orderByProperty": "Revenue",
  "orderByIsMeasure": true, "visualId": "xyz" }

// Relative date — last 12 months
{ "filterType": "relativeDate", "entity": "Date", "property": "Date",
  "period": "months", "count": 12, "dateDirection": "last" }

Architecture

powerbi-report-mcp/
├── src/
│   ├── index.ts              # Server entry, smart tool loading, safe() wrapper
│   ├── pbir.ts               # PbirProject — PBIR file I/O abstraction
│   ├── context.ts            # ServerContext interface
│   ├── model-usage.ts        # Model usage analysis — three-tier classification, UDF parsing, conditional formatting
│   ├── tools/
│   │   ├── report.ts         # Page & report management (20 tools)
│   │   ├── visuals.ts        # Visual CRUD (8 tools)
│   │   ├── format.ts         # Formatting, sort & colors (6 tools)
│   │   ├── bindings.ts       # Data binding (1 tool)
│   │   ├── themes.ts         # Report themes (6 tools)
│   │   ├── filters.ts        # Page/visual filters (4 tools)
│   │   ├── bulk.ts           # Bulk operations (3 tools)
│   │   ├── bookmarks.ts      # Bookmark CRUD (4 tools)
│   │   └── guide.ts          # Knowledge layer (1 tool, 2 topics)
│   └── helpers/
│       ├── createVisual.ts   # Visual creation engine
│       ├── formatting.ts     # PBIR formatting builder
│       └── defaults.ts       # Theme presets
├── .usage/                   # Generated usage dashboards (gitignored)
├── dist/                     # Compiled JS (committed for no-build deploy)
├── pbi report/               # Sample report (financials model)
├── docs/                     # Guides and references
└── skills/                   # LLM skill documents

Full details: ARCHITECTURE.md

Data Flow

sequenceDiagram
    actor User
    participant AI as AI Assistant
    participant Model as powerbi-modeling-mcp
    participant Report as powerbi-report-mcp
    participant PBI as Power BI Desktop

    User->>AI: "Create a sales dashboard with KPIs and a chart by country"
    AI->>Model: What measures are on the Sales table?
    Model-->>AI: Net Revenue, Net Profit, Margin %, Orders, Units Sold
    AI->>Report: pbir_create_page("Sales Dashboard")
    Report-->>AI: pageId: abc123
    AI->>Report: pbir_add_visual(batch: 6 cards + 2 charts + table)
    Report-->>AI: 9 visuals created
    AI->>Report: pbir_set_report_theme({ dataColors: [...] })
    Report-->>AI: theme applied
    AI-->>User: Done! Open .pbip in Power BI Desktop
    User->>PBI: Ctrl+Shift+F5

PBIR Folder Structure

MyProject.Report/
  definition/
    report.json                 # Report settings, theme config
    pages/
      pages.json                # Page order and active page
      {pageId}/
        page.json               # Page name, size, visibility
        visuals/
          {visualId}/
            visual.json         # Type, position, bindings, formatting
  StaticResources/
    RegisteredResources/        # Custom theme JSON files
  definition.pbir               # Semantic model reference

Token Efficiency

Mode

Tools Loaded

Tokens/Turn

Cost per 10-Page Report

Default

11

~3,100

$0.01 – $0.45

All

48

~14,500

$0.02 – $2.50

Model

Input $/1M

Output $/1M

Base Report

Fully Styled

GPT-4o-mini

$0.15

$0.60

$0.01

$0.02

GPT-4.1-mini

$0.40

$1.60

$0.02

$0.05

GPT-4.1

$2.00

$8.00

$0.11

$0.25

GPT-4o

$2.50

$10.00

$0.14

$0.32

Claude Haiku 3.5

$0.80

$4.00

$0.05

$0.12

Claude Sonnet 4

$3.00

$15.00

$0.19

$0.45

Claude Opus 4

$15.00

$75.00

$0.96

$2.25

Approach

Calls

Tokens

Batch + bulk (recommended)

22–32

~28–32K

Per-visual calls (naive)

300+

~120K

Use pbir_add_visual batch mode + inline title, dataColors, containerFormat to build fully styled pages in minimal calls.


Tested clients

The MCP is built on the standard MCP protocol. Currently verified against:

Client

Status

Config

Claude Code

✅ Tested

claude mcp add or local .mcp.json

Claude Desktop

✅ Tested

claude_desktop_config.json

Claude Cowork

✅ Tested

Drag the .plugin from Releases

Other MCP-compatible clients (Cursor, Continue.dev, Cline, GitHub Copilot agent mode, OpenAI via mcp-proxy, custom @modelcontextprotocol/sdk agents) should work since this is a standard MCP server — but they haven't been verified against this codebase yet. If you try one and it works (or doesn't), please open an issue so we can update this table.


Documentation

Doc

Description

docs/quickstart.md

5-minute setup guide

docs/example-prompts.md

15 example prompts

docs/visual-types.md

Visual type reference + formatting containers per type

docs/wireframes.md

Layout guide — zones, spacing, 3 sample layouts with exact positions

docs/pbir-gotchas.md

PBIR schema discoveries

ARCHITECTURE.md

Codebase architecture

CONTRIBUTING.md

How to contribute

CHANGELOG.md

Version history


Known Issues

Feature

Status

Notes

Visual calculations

Disabled

Correct PBIR format identified but not rendering programmatically


Tips

  • Pair with powerbi-modeling-mcp to query the semantic model for exact table/column names before binding

  • Use Table[Column] shorthand in bindings: "field": "Sales[Revenue]"

  • barChart = stacked bar, clusteredBarChart = clustered — there is no stackedBarChart

  • Add shapes before data visuals for correct z-order layering

  • pbir_format_visual merges with existing formatting — safe to call incrementally

  • TopN filters are visual-level only — pass visualId to pbir_add_page_filter

  • All tools return { success: false, error: "..." } on failure — the server never crashes

  • Use pbir_model_usage to see which measures/columns are used in visuals — it classifies fields as direct (on a visual), indirect (referenced by direct measures/relationships), or unused (safe to remove). It detects conditional formatting bindings (images, reference labels, colors) that other tools miss

  • Always call pbir_model_usage before any delete / cleanup request — it's the fail-safe that stops the LLM from removing indirectly-referenced measures. See Why pbir_model_usage is a default tool for the full rationale

  • pbir_model_usage also parses UDF functions and calculation groups from TMDL/BIM, counts measure references per function, and surfaces DAX lineage


License

MIT — use it however you want.

Available Tools

57 tools
pbir_add_bookmarkAdd BookmarkA

Create a new bookmark. The bookmark is created with an empty exploration state — open Power BI Desktop to capture the current view state into it.

ParametersJSON Schema
NameRequiredDescriptionDefault
displayNameYesDisplay name for the bookmark (shown in the bookmarks panel)
activePageIdNoPage ID that this bookmark should navigate to when activated

TDQS

A4/5.0
Behavior4/5

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

The description reveals a key behavioral detail: the bookmark is created with an empty exploration state, requiring manual capture in Power BI Desktop. This adds value beyond the annotations (which only have openWorldHint=false). For a creation tool, it offers 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.

Conciseness5/5

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

The description is exceptionally concise: two sentences with no unnecessary words. The purpose is stated first, followed by a key behavioral note. It is well-structured and efficient.

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

Completeness4/5

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

Given the tool's simplicity (create bookmark with two parameters) and no output schema, the description covers the core functionality and important caveat (empty state). It could mention the required report context but overall is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented in the schema. The description does not add any additional meaning or context about the parameters (displayName and activePageId), 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.

Purpose5/5

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 new bookmark.' It also adds context that the bookmark starts empty, which distinguishes it from other bookmark operations like renaming or deleting.

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

Usage Guidelines3/5

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

The description hints at usage by advising to use Power BI Desktop to capture the view state, but it does not explicitly state when to use this tool versus alternatives like pbir_list_bookmarks or pbir_rename_bookmark. No exclusion criteria or comparison to siblings is provided.

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

pbir_add_page_filterAdd Page FilterA

Add a filter to a page or visual. Omit visualId for page-level. topN requires visualId. Types: categorical / topN / relativeDate / advanced (Equals, GreaterThan, Contains, IsBlank, etc; supports And/Or compounds).

ParametersJSON Schema
NameRequiredDescriptionDefault
nNotopN
countNorelativeDate
valueNo
entityYesTable name
pageIdNoPage ID. Auto-resolved when only one page exists.
periodNo
value2No
valuesNocategorical
operatorNoEquals/NotEquals/GreaterThan(OrEqual)/LessThan(OrEqual)/Contains/DoesNotContain/StartsWith/DoesNotStartWith/IsBlank/IsNotBlank
propertyYesColumn name
visualIdNoVisual ID — omit for page-level, required for topN
operator2No
filterTypeYes
dateDirectionNolast
orderByEntityNotopN
topNDirectionNoTop
logicalOperatorNocompound
orderByPropertyNotopN
orderByIsMeasureNo

TDQS

A4/5.0
Behavior3/5

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

Annotations are minimal (only openWorldHint=false), so the description carries the burden. It explains filter types and compound operators, adding context beyond the schema. However, it does not disclose side effects, permissions, error behavior, or what happens on duplicate filters.

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

Conciseness5/5

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

The description is extremely concise with two sentences, no redundant information, and front-loads the main action. Every sentence adds essential guidance.

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

Completeness4/5

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

Given the complexity (19 parameters, multiple filter types), the description covers key patterns and constraints. No output schema exists, but the tool's purpose is straightforward. It does not explain return values, but that is acceptable for an add operation.

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

Parameters3/5

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

Schema description coverage is 58%, and the description adds value by grouping parameters under filter types and explaining compound operators. However, many parameters (e.g., n, count, value) still rely on brief schema descriptions, and the description does not fully detail all parameter semantics for each filter type.

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

Purpose5/5

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

The description clearly states 'Add a filter to a page or visual', using a specific verb and resource. It distinguishes between page-level and visual-level filters by mentioning omitting visualId, and lists filter types, 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.

Usage Guidelines4/5

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 which parameters (e.g., 'Omit visualId for page-level', 'topN requires visualId', and lists filter types with operator details). However, it does not explicitly compare to sibling tools like pbir_remove_filter, though the name implies addition.

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

pbir_add_visualAdd VisualA

Add visuals to a page via visuals: [...] batch. Inline containerFormat/visualFormat/dataColors per entry avoids extra pbir_format_visual calls. Stacked charts need a Series binding; 'KPI card' = card with one measure; scatter uses Category bucket. Use pbir_lookup_theme_property for valid category/property names.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoAuto-resolved when only one page exists.
visualsYes
includeTypesNoReturn [{visualId,visualType}] instead of flat id list.
strictLayoutNotrue=strict, false=warn. Canvas 1280x720, 15px L/R / 6px bottom margins, 5px gaps. Omit for env default.
strictBindingsNotrue=strict, false=warn. Omit for env default.

TDQS

A3.9/5.0
Behavior2/5

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

Annotations are sparse (only `openWorldHint: false`), so the description carries the burden of behavioral disclosure. It mentions batch addition and inline formatting but does not explain key behaviors such as whether visuals are appended or replaced, idempotency, permissions, or error handling. The potential for destructive actions is not addressed.

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

Conciseness5/5

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

The description is very concise: four sentences with no wasted words. The first sentence front-loads the core action, followed by key features and specific examples. Every sentence adds value.

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

Completeness3/5

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

Given the tool's complexity and the lack of an output schema, the description is adequate but incomplete. It covers main use cases but omits return value information (e.g., what IDs are returned) and behavioral details like duplicate handling or error conditions. The tool has many adjacent siblings, but the description does not fully differentiate them.

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

Parameters4/5

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

Schema coverage is 80%, so the schema already documents most parameters. The description adds value by explaining visual-type-specific bucket names (Series, Category) and directing users to `pbir_lookup_theme_property` for valid names. This semantic enrichment goes beyond the schema.

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

Purpose5/5

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

The description clearly states the tool adds visuals to a page in batch via the `visuals` array. It distinguishes from sibling tools like `pbir_format_visual` by noting that inline formatting avoids extra calls. Specific visual types (stacked charts, KPI card, scatter) are mentioned, making the purpose precise.

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

Usage Guidelines4/5

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

The description provides guidance on when to use this tool (batch add with inline formatting to avoid extra calls) and gives specific usage tips for different visual types (e.g., 'Stacked charts need a Series binding'). It also recommends using `pbir_lookup_theme_property` for valid names. However, it does not explicitly exclude 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.

pbir_apply_themeApply ThemeB

Apply a named theme preset to all visuals on a page. Themes: dark, light, corporate, blue-purple.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeYes
pageIdNoPage ID. Auto-resolved when only one page exists.
applyDataColorsNo

TDQS

B3.3/5.0
Behavior3/5

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

With only openWorldHint: false in annotations, the description adds value by specifying scope (all visuals on a page) and listing available themes. However, it does not disclose behavioral traits like overwrite behavior, undoability, or side effects, which would be expected 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.

Conciseness5/5

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

Two sentences with no redundancy. The first sentence clearly states purpose, the second lists themes. Every word earns its place, making it easy to parse quickly.

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

Completeness2/5

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

Given the lack of output schema and minimal annotations, the description should cover more aspects like what happens to existing formatting, how applyDataColors behaves, or prerequisites. It feels incomplete for a tool with three parameters and no return type.

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

Parameters2/5

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

Schema description coverage is only 33% (pageId has description). The description adds no further meaning for pageId or applyDataColors beyond the schema, and only repeats enum values for theme which is already defined. Since coverage is low, 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.

Purpose5/5

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

The description clearly states the action (apply a named theme preset) and the scope (all visuals on a page), with an explicit list of theme options. This distinguishes it from sibling tools like pbir_set_report_theme which likely operate at the report level.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives such as pbir_set_report_theme or pbir_lookup_theme_property. The description lacks context for selection, and there are no when-to-use or when-not-to-use indications.

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

pbir_audit_theme_complianceAudit Theme ComplianceA
Read-only

Audit visuals on a page for theme overrides. Returns summary header + topN findings (default 20). topN:0 = all.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNoMax findings (0 = all)
pageIdYesThe page ID to audit
verboseNoInclude override category names per visual

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
errorNo
_cacheNo
byCodeNo
pageIdNo
detailsNo
successNo
summaryNo
returnedNo
truncatedNo
totalVisualsNo
totalFindingsNo
overrideVisualsNo
compliantVisualsNo
categoriesAffectedNo

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it specifies the output format (summary header + topN findings) and the behavior of the topN parameter (0 = all). No contradiction with annotations (readOnlyHint true).

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

Conciseness5/5

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

Two sentences efficiently convey purpose and key parameter behavior. Zero wasted words.

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

Completeness4/5

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

Given the presence of an output schema and comprehensive parameter descriptions in the schema, the description covers the essential aspects. Minor gap: does not mention that the audit is per page or that it requires a pageId, but that is clear from the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the description's extra detail on topN (default 20, 0 = all) adds marginal value. It does not explain the verbose parameter beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Audit'), the resource ('visuals on a page'), and the specific aspect ('theme overrides'). It distinguishes itself from sibling tools that handle other operations like setting visibility or applying themes.

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

Usage Guidelines4/5

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

The description implies usage for checking theme compliance on a page, but does not explicitly mention when to use this tool versus alternatives. However, given the readOnlyHint annotation, it is safe to use without side effects.

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

pbir_auto_layoutAuto LayoutC

Auto-arrange all visuals on a page in a grid.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID
columnsNo
paddingNo
marginTopNo
marginLeftNo

TDQS

C2.5/5.0
Behavior2/5

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

The description and annotations provide minimal behavioral details. No indication of how the grid is computed, whether existing positions are overridden, or what the output is. Annotations only have 'openWorldHint: false', which does not add behavior context.

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

Conciseness2/5

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

The description is overly brief (one sentence) and under-specified. While concise, it sacrifices necessary detail, making it less helpful. A short description should still capture key behavioral aspects.

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

Completeness2/5

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

The description is incomplete given the tool's complexity and lack of output schema. It does not explain behavior like whether it affects all visuals or only those on the specified page, what the grid layout algorithm does, or what happens to existing margins. The sibling list shows many layout tools, but this one is not contextualized.

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

Parameters2/5

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

Schema description coverage is low (20%): only 'pageId' has a description. The tool description adds no parameter meaning beyond listing defaults. 'columns', 'padding', 'marginTop', 'marginLeft' are unexplained.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Auto-arrange all visuals on a page in a grid.' It uses a specific verb (arrange) and resource (visuals on a page), but does not differentiate from the similar sibling 'pbir_layout_grid'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or excluded conditions. The one-sentence description provides no usage direction.

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

pbir_bulk_bindBulk BindA

Rebind multiple visuals in one call. Replaces existing bindings. Set confirmBulk:true when >5. continueOnError:true validates per-entry — bad bindings don't abort the batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
updatesYes[{visualId, bindings}]
autoFiltersNo
confirmBulkNoRequired when >5.
strictBindingsNotrue=strict (default), false=warn.
continueOnErrorNoPer-entry validation; bad bindings don't abort the batch.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses that bindings are replaced and that continueOnError validates per-entry, adding value beyond the sparse annotations. No contradiction.

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

Conciseness5/5

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

Two sentences with front-loaded purpose; each sentence adds essential guidance without redundancy.

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

Completeness3/5

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

Covers main usage and key parameters, but lacks information about return values or error handling, which would improve completeness.

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

Parameters4/5

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

Adds contextual guidance beyond the schema's parameter descriptions (e.g., when confirmBulk is required), though schema coverage is already high.

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

Purpose5/5

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

States 'Rebind multiple visuals in one call' with specific verb and resource, and distinguishes from sibling tool for single visual updates.

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

Usage Guidelines4/5

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

Provides context for when to use (bulk operation) and explicit guidance on confirmBulk and continueOnError, but does not explicitly exclude single visual case.

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

pbir_bulk_delete_visualsBulk Delete VisualsB
Destructive

Delete multiple visuals from a page. Set confirmBulk:true when >5.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdsYes
confirmBulkNoRequired when >5.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already mark the tool as destructive (destructiveHint=true). The description adds the condition for the confirmBulk parameter, which is a safety behavior. However, it does not disclose error handling or side effects when the condition is not met. The additional behavioral context is useful but not extensive.

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

Conciseness5/5

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

Two sentences, no filler. Purpose is front-loaded, and the critical parameter guidance is included. Every word earns its place.

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

Completeness3/5

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

The description covers the main action and key parameter constraint. However, it omits details like return value, error conditions, and the fact that pageId auto-resolves (though in schema). For a destructive bulk operation, more context (e.g., irreversibility) would improve completeness, but the essential info is present.

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

Parameters2/5

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

Schema coverage is 67%: pageId and confirmBulk have descriptions, visualIds lacks one. The tool description repeats the confirmBulk condition but does not clarify visualIds (e.g., format, source). It adds minimal value beyond the schema.

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

Purpose5/5

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

The title and description clearly state 'Delete multiple visuals from a page,' which is a specific verb and resource. It is distinct from the sibling tool pbir_delete_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.

Usage Guidelines2/5

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

The description provides guidance on when to set confirmBulk (when >5), but does not explain when to choose this tool over alternatives like pbir_delete_visual or pbir_bulk_delete_visuals (though the name implies bulk use). No explicit when-not-to-use or alternative differentiation is given.

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

pbir_bulk_update_formatBulk Update FormatA

Apply the same formatting to multiple visuals. target='container' (title/background/border) or 'visual' (axes/legend/labels). Set confirmBulk:true when >5.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
targetNovisual
visualIdsYes
formattingYes
confirmBulkNoRequired when >5.

TDQS

A3.8/5.0
Behavior2/5

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

Annotations only include openWorldHint:false, but the description does not disclose potential side effects, reversibility, or error behavior (e.g., what happens if confirmBulk is false and count >5). The confirmBulk hint is more a usage guideline than 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.

Conciseness5/5

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

The description is extremely concise (two sentences) with no wasted words. The first sentence states the core purpose, and the second adds essential parameter guidance. Front-loaded and effective.

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

Completeness4/5

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

Given the tool has 5 parameters, 2 required, no output schema, and low schema coverage, the description covers key aspects: purpose, target modes, and confirmBulk requirement. It does not mention return values or error handling, but the schema covers the formatting structure. In context of sibling tools, it is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 40% (descriptions for pageId, target, confirmBulk). The description adds semantics for target (container vs visual modes) and confirmBulk usage. However, it does not elaborate on visualIds or the formatting array structure beyond what the schema provides.

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

Purpose5/5

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

The description clearly states 'Apply the same formatting to multiple visuals' and explains the two target modes (container for title/background/border, visual for axes/legend/labels), distinguishing it from sibling tools like pbir_format_visual which format a single visual.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use each target type and requires confirmBulk:true when applying to more than 5 visuals. It does not explicitly exclude alternative tools or scenarios, but the sibling list implies pbir_format_visual for single visuals.

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

pbir_change_visual_typeChange Visual TypeA

Change the visual type of an existing visual (e.g. barChart to columnChart) while keeping data bindings

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID
visualIdYesThe visual ID
visualTypeYesThe new visual type

TDQS

A4.1/5.0
Behavior3/5

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

The description reveals the primary behavior (changing visual type) and that data bindings are preserved, but does not disclose potential constraints (e.g., visual must exist, compatibility of visual types). Annotations provide no additional safety hints, so the description carries the burden; it is adequate but could be improved.

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

Conciseness5/5

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

The description is a single clear sentence that immediately communicates the action and key feature (keeping data bindings). Every word is purposeful; there is no wasted text.

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

Completeness5/5

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

Given the tool has only three required parameters, no output schema, and no nested objects, the description is fully sufficient. It covers the core function and the constraint, which is all that is needed for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds an example but does not provide additional meaning beyond the schema's built-in descriptions for the three parameters.

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

Purpose5/5

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

The description clearly states the action (change visual type), the resource (existing visual), and the key constraint (keeping data bindings). The example further clarifies the input format. This distinguishes it from sibling tools like pbir_add_visual or pbir_format_visual.

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

Usage Guidelines4/5

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

The description implies when to use by stating 'while keeping data bindings', but does not explicitly define when not to use or mention alternatives. Since the tool is unique among siblings, a score of 4 is appropriate.

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

pbir_clear_filtersClear FiltersA
Destructive

Remove ALL filters from a page or a specific visual.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID
visualIdNoVisual ID — omit to clear all page-level filters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true. The description adds the specific scope (page or visual) and the all-encompassing nature of the removal, providing moderate additional context beyond the annotation.

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

Conciseness5/5

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

Single, concise sentence that immediately conveys the core action. No redundancy or filler; each word earns its place.

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

Completeness4/5

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

For a simple destructive action with no output schema, the description adequately covers the tool's behavior. Minor omission: no mention of behavior when no filters exist or return value, but overall sufficient for correct usage.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters already described in the schema. The description reiterates the same information without adding new meaning, earning baseline score.

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

Purpose5/5

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

The description clearly states the action ('Remove ALL filters') and the resource scope ('from a page or a specific visual'). It effectively distinguishes from sibling tools like pbir_remove_filter by emphasizing 'ALL' filters.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like pbir_remove_filter. The description only explains what it does, without providing context for selection.

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

pbir_create_pageCreate PageB

Create a new page in the report. Supports standard, tooltip, and drillthrough page types.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoPage type — tooltip pages are small overlay pages (320x240) hidden from navstandard
widthNoPage width (default 1280, or 320 for tooltip)
heightNoPage height (default 720, or 240 for tooltip)
displayNameYesDisplay name for the page
drillthroughNoDrillthrough field — makes this a drillthrough page filtered by this field
displayOptionNoDisplay option (default FitToPage, or ActualSize for tooltip)

TDQS

B3.4/5.0
Behavior3/5

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

The description states it creates a page, clearly a mutation, but provides no additional behavioral context such as side effects, permissions, or limits (e.g., maximum pages, does it set active page). The description adds the three types, which is helpful, but overall it's minimal for a creation operation with no annotations about destructive hint.

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

Conciseness4/5

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

The description is a single concise sentence, front-loaded with the action and key information. No unnecessary words. Could potentially add more detail without being verbose, but it is efficient as is.

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

Completeness3/5

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

Given 6 parameters, 1 required, and nested objects, the description is relatively brief. It does not mention the return value (no output schema), position of new page, activation behavior, or constraints like unique display name. However, the schema covers parameter descriptions comprehensively, so the description is minimally adequate.

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

Parameters3/5

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

Schema has 100% description coverage, so the description's role is reduced. The description mentions 'standard, tooltip, and drillthrough page types', but the schema already describes the 'type' parameter and the 'drillthrough' object. The description does not add significant new meaning beyond what is in the schema.

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

Purpose4/5

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

Clearly states 'Create a new page' and lists the supported types (standard, tooltip, drillthrough). This distinguishes it from other page manipulation tools like rename or delete. However, the phrase 'drillthrough page types' could be misinterpreted because drillthrough is not an enum value for the 'type' parameter but a separate property.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. The description implies it is for creating pages of various types, but doesn't compare to alternatives like pbir_duplicate_page. The usage context is left implicit.

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

pbir_delete_bookmarkDelete BookmarkA
Destructive

Delete a bookmark by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmarkIdYesThe bookmark ID to delete (from pbir_list_bookmarks)

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already indicate destructiveHint=true, so the description does not need to restate that. However, it adds no extra behavioral context beyond the basic action, like irreversibility 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the core purpose with zero wasted words.

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

Completeness4/5

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

For a simple delete operation with no output schema, the description is sufficient. It identifies the required input and the action. Minor gaps like side effects do not significantly reduce completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter already described as 'The bookmark ID to delete (from pbir_list_bookmarks)'. The tool description adds no additional semantic value beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('a bookmark') with the method ('by ID'). It uniquely identifies the operation among sibling tools like pbir_add_bookmark and pbir_rename_bookmark.

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

Usage Guidelines3/5

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

The description implies usage by specifying the input (bookmark ID from pbir_list_bookmarks), but provides no explicit guidance on when to use this tool versus alternatives, such as renaming or listing bookmarks.

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

pbir_delete_pageDelete PageA
Destructive

Delete a page and all its visuals

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID to delete

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate destructive behavior (destructiveHint: true). The description adds the important detail that all visuals on the page are also deleted, which provides useful behavioral context beyond the annotation.

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

Conciseness4/5

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

The description is a single, efficient sentence that conveys the essential action. It is front-loaded and wastes no words, though it could be slightly more informative without losing brevity.

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

Completeness3/5

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

For a simple destructive operation with one parameter and no output schema, the description covers the basic functionality. However, it lacks completeness regarding edge cases, such as effects on related bookmarks or filters, and does not mention any constraints.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter 'pageId' is described as 'The page ID to delete' in the schema. The tool description adds no additional semantic information beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool deletes a page and its visuals, with a specific verb and resource that distinguishes it from sibling tools like pbir_duplicate_page or pbir_set_page_visibility.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, e.g., whether deleting the active page is allowed or if there are prerequisites like no active visuals. The description lacks context for appropriate usage.

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

pbir_delete_visualDelete VisualA
Destructive

Delete a visual from a page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdYesThe visual ID to delete

TDQS

A3.6/5.0
Behavior3/5

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

The annotations include destructiveHint=true, so the agent knows it's destructive. The description adds no further behavioral context (e.g., no mention of success state, error handling, or undo capability), but annotations already convey the key trait.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It conveys the essential purpose efficiently.

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

Completeness4/5

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

For a simple delete operation with one required parameter and a destructive annotation, the description is mostly adequate. However, it lacks mention of error conditions or return behavior (no output schema), and does not explicitly state irreversibility beyond the annotation.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully defines parameters. The description adds no additional meaning beyond what the schema provides, such as clarifying the auto-resolution of pageId or the format of visualId.

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

Purpose5/5

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

The description 'Delete a visual from a page' clearly states the action (delete) and the resource (visual from a page), distinguishing it from siblings like pbir_bulk_delete_visuals (bulk delete) and pbir_delete_bookmark (delete bookmark).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., pbir_bulk_delete_visuals for multiple visuals), no prerequisites, and no mention of irreversibility beyond the annotation.

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

pbir_diff_report_themeDiff Report ThemeA
Read-only

Compare a proposed theme JSON against the currently applied theme and return what would be added, removed, or changed. Useful for previewing theme changes before applying.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeYesProposed theme JSON object to compare against the current theme

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedNo
errorNo
_cacheNo
changedNo
removedNo
successNo
summaryNo
currentThemeNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this by stating it returns a diff without side effects. It adds value by explaining the output structure (added, removed, changed) beyond what 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.

Conciseness5/5

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

The description is two concise sentences that front-load the action and output, wasting no words.

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

Completeness5/5

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

Given the tool has an output schema (implied), the description adequately conveys the input and output semantics. The sibling tools provide context for usage, and no additional details are needed.

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

Parameters4/5

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

Schema coverage is 100% for the single parameter 'theme'. The description explains the parameter's purpose in context (comparing against current theme and producing a diff), which adds meaning beyond the schema's description.

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

Purpose5/5

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

Description clearly states the tool compares a proposed theme JSON against the current theme and returns additions, removals, and changes. It distinguishes itself from sibling tools like pbir_apply_theme by emphasizing previewing before applying.

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

Usage Guidelines4/5

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

The description notes the tool is 'useful for previewing theme changes before applying,' giving clear context for when to use it. However, it does not explicitly mention when not to use it or list alternatives like pbir_apply_theme.

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

pbir_duplicate_pageDuplicate PageA

Duplicate an entire page with all its visuals to a new page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe source page ID to duplicate
displayNameNoDisplay name for the new page (defaults to 'Copy of <original>')

TDQS

A3.5/5.0
Behavior2/5

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

Minimal disclosure beyond annotations. The annotation only provides openWorldHint=false, and the description adds no behavioral details such as side effects, placement of the new page, or whether filters/bookmarks are copied.

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

Conciseness5/5

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

Single sentence, concise and front-loaded with the key action and resource. No redundant information.

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

Completeness3/5

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

Adequate for a simple tool with no output schema, but lacks details on new page positioning, default order, and what aspects of the original page are duplicated (e.g., filters, bookmarks).

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents both parameters. The description adds no additional meaning beyond what is in the schema, resulting in baseline score.

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

Purpose5/5

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

The description clearly states the action ('duplicate an entire page with all its visuals') and the resource ('a new page'), distinguishing it from sibling tools like pbir_create_page (create blank page) and pbir_delete_page.

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

Usage Guidelines3/5

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

The description implies when to use this tool (copying a full page) but provides no explicit when-to-use or when-not-to-use guidance, nor compares it to alternatives like pbir_create_page or pbir_duplicate_visual.

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

pbir_duplicate_visualDuplicate VisualB

Duplicate an existing visual, optionally to a different page or position

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesSource page ID
offsetXNoX offset for the duplicate
offsetYNoY offset for the duplicate
visualIdYesVisual ID to duplicate
targetPageIdNoTarget page ID (defaults to same page)

TDQS

B3.4/5.0
Behavior2/5

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

The description only states the basic operation. It does not disclose side effects, whether the duplication is deep or shallow, or any permissions required. Annotations are minimal (openWorldHint: false), so the description carries the burden, but fails to provide sufficient 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential information without any unnecessary words. Every part contributes to understanding the tool's purpose.

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

Completeness2/5

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

Given the tool's complexity (5 parameters, no output schema) and the minimal description, there is a lack of completeness. The description does not explain default behavior, return values, or constraints like coordinate systems, which are important for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter described. The description adds no additional meaning beyond what the schema already provides, 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.

Purpose5/5

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

The description clearly states the action (duplicate) and resource (visual), with added specificity about optional repositioning and cross-page duplication. This distinguishes it from sibling tools like pbir_duplicate_page or pbir_move_visual.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., move_visual or add_visual). The usage context is implied by the action, but no exclusions or prerequisites are mentioned.

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

pbir_format_visualFormat VisualA

Format visual properties. Auto-routes title/background/border/padding/dropShadow/visualHeader to container, others to visual; override with target='visual'|'container'. Call pbir_lookup_theme_property for valid category/property names per visualType. Gotchas: slicer uses textSize, not fontSize (items/header); waterfall uses sentimentColors, not dataPoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
targetNo'auto' (default) routes container categories (title/background/border/padding/dropShadow/visualHeader) to visualContainerObjects and everything else to objects. Use 'visual' or 'container' to force.auto
visualIdYesThe visual ID
formattingYesArray of formatting categories and their properties to set

TDQS

A4.7/5.0
Behavior4/5

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

Discloses auto-routing logic and gotchas, which adds behavioral context beyond annotations. However, it does not explicitly state nondestructive nature or permissions, though inferences are clear.

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

Conciseness5/5

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

Three sentences front-load the purpose and routing logic, then add important gotchas. No wasted words; each sentence is informative.

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

Completeness5/5

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

Given the tool's complexity (routing, gotchas), the description covers all key usage aspects: routing behavior, override mechanism, reference to lookup tool, and visual-specific caveats. Output schema is absent but not required.

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

Parameters4/5

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

With 100% schema coverage, the description adds significant value by explaining routing details, override options, and specific property examples, exceeding the baseline of 3.

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

Purpose5/5

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

The description clearly states it formats visual properties, with specific auto-routing behavior and override options. It distinguishes itself from sibling tools like pbir_set_visual_title and pbir_bulk_update_format.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use auto-routing vs overrides, references pbir_lookup_theme_property for valid names, and highlights important gotchas for slicer and waterfall visuals.

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

pbir_get_reportGet ReportA
Read-only

Show the currently connected report path. Includes hasSemanticModel: boolean — true when a sibling .SemanticModel/ folder exists. Check this before calling pbir_model_usage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
_cacheNo
successNo
reportPathNo
hasSemanticModelNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description doesn't repeat that. It adds transparency by revealing the tool returns a boolean indicating the existence of a `.SemanticModel/` folder, which is useful behavioral context. A slightly richer output description could improve, but it's already good.

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

Conciseness5/5

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

The description is only two sentences, front-loading the purpose, then providing an output detail and a usage hint. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given no parameters, an existing output schema (per context), and annotations covering read-only, the description adds critical context about the `hasSemanticModel` flag and its relation to a sibling tool, making the tool fully self-explanatory for an agent.

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

Parameters4/5

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

There are no parameters, so schema coverage is trivially 100%. The description has no parameter info to add, and per rubric, 0 parameters with full coverage warrants a baseline of 4.

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

Purpose5/5

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

The description clearly states the tool shows the currently connected report path and includes the `hasSemanticModel` boolean. This distinguishes it from sibling tools which manipulate visuals, pages, or other aspects.

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

Usage Guidelines5/5

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

The description explicitly advises to check `hasSemanticModel` before calling `pbir_model_usage`, providing a concrete when-to-use and when-not-to-use guideline. This is direct and unambiguous.

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

pbir_get_report_settingsGet Report SettingsA
Read-only

Get the report-level settings and theme configuration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows it is a safe read operation. The description adds no further behavioral context (e.g., what happens to the report state, whether any side effects exist). With annotations covering safety, the description is adequate but not enriching.

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

Conciseness5/5

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

The description is a single short sentence that is front-loaded and contains no unnecessary words. It efficiently conveys the tool's purpose.

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

Completeness3/5

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

The tool has no output schema and no parameters. The description is minimal: it states what is retrieved but does not explain the return format or any nuances (e.g., whether settings and theme are returned together or separately). Given the lack of output schema, the description should provide more detail for completeness.

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

Parameters4/5

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

There are no parameters, so schema coverage is 100% trivially. The description does not need to explain parameters. Baseline score of 4 applies as no parameter information is needed.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'report-level settings and theme configuration', which distinguishes it from siblings like pbir_get_report_theme (which gets only theme) and pbir_update_report_settings (which updates settings).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., pbir_get_report_theme for theme-only retrieval). The context of siblings implies differentiation but the description does not provide explicit when-to-use or when-not-to-use advice.

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

pbir_get_report_themeGet Report ThemeA
Read-only

Get the currently applied theme. Returns base theme name + custom theme JSON if any.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
_cacheNo
successNo
baseThemeNo
customThemeNo
customThemeContentNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and description adds value by specifying the return format (base theme name + custom theme JSON), going beyond the annotation.

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

Conciseness5/5

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

Single sentence with no wasted words, front-loaded with the key action and output description.

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

Completeness5/5

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

For a simple getter with no parameters and an output schema present, the description is fully adequate—covering purpose, output, and conditions.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Baseline score of 4 applies as per guidelines for 0-parameter tools.

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

Purpose5/5

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

Description clearly states 'Get the currently applied theme' with specific verb and resource, and distinguishes from sibling tools like pbir_apply_theme and pbir_set_report_theme which are write operations.

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

Usage Guidelines4/5

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

The description implies usage for reading the current theme, but lacks explicit when-not-to-use or alternatives. The context from sibling names provides differentiation.

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

pbir_get_visualGet VisualA
Read-only

Get visual details. Default returns id/type/position/title/bindings summary. verbose:true returns full PBIR JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
slimNoDeprecated alias for !verbose.
pageIdNoPage ID. Auto-resolved when only one page exists.
verboseNoFull raw PBIR JSON (heavy).
visualIdYesThe visual ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
hNo
wNo
xNo
yNo
idNo
nameNo
typeNo
errorNo
titleNo
_cacheNo
successNo
bindingsNo
slicerModeNo
visualTypeNo
filterCountNo
multiSelectNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true. The description adds valuable behavioral context: default returns a summary, verbose returns full raw PBIR JSON. No contradictions.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose, minimal waste. Every sentence adds value.

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

Completeness5/5

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

Given the output schema exists, the description adequately covers default and verbose output. No missing information for a read tool with rich schema and annotations.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. The description adds meaning by stating 'slim' is deprecated alias for '!verbose', and explains verbose effect beyond schema. Provides useful nuance.

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

Purpose5/5

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

The description 'Get visual details' clearly states the action and resource, with specific details on default output and the verbose option, distinguishing it from listing or mutation tools.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like pbir_list_visuals for listing all visuals or other getters. The context implies it's for reading a single visual, but lacks explicit when-not or alternative references.

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

pbir_get_visual_typesGet Visual TypesA
Read-only

List available visual types. Default returns slim type list (~150 tokens). Pass verbose:true for per-type data-role bucket metadata (~1,200 tokens).

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoIf true, return the full {type: [buckets...]} map. Default false returns {types:[...], count}.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark it as read-only. The description adds valuable behavioral details: default returns a slim list (~150 tokens), verbose returns detailed metadata (~1,200 tokens). No contradictions.

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

Conciseness5/5

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

Two sentences, no fluff. The main purpose is front-loaded, and each sentence adds distinct value.

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

Completeness5/5

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

For a simple read-only list tool with one optional boolean parameter and no output schema, the description fully explains the behavior and output variants.

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

Parameters5/5

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

The schema covers the verbose parameter's description, but the description adds meaning by specifying default vs verbose output formats and token sizes, aiding the agent in deciding which mode to use.

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

Purpose5/5

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

The description states 'List available visual types' which is a clear verb+resource. It distinguishes from siblings like pbir_list_visuals (which lists visuals in a report) by focusing on types, not instances.

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

Usage Guidelines4/5

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

The description explains when to use the default vs verbose mode, providing context on token consumption. However, it does not explicitly state when to choose this tool over alternatives, though it's the only tool for listing visual types.

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

pbir_guideGuideA
Read-only

Domain knowledge for Power BI report development. Topics discovered live from skills/*.md — call with topic:'list' to enumerate.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic to get guidance on. Pass 'list' to enumerate available topics from skills/*.md.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds transparency about live discovery from skills/*.md files, informing the agent that topics are dynamically sourced. No destructive behavior is implied, and there is 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.

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the purpose and immediately provide actionable usage. 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.

Completeness4/5

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

Given the tool's simplicity (single parameter, no output schema), the description covers the essential aspects: domain, live discovery, and listing capability. It is complete enough for the agent to understand how to invoke it, though it could optionally mention the expected response format.

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

Parameters4/5

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

The input schema already describes the 'topic' parameter with a description. The tool description adds the crucial usage example of passing 'list' to enumerate topics, which goes beyond the schema's definition and enhances parameter understanding.

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

Purpose5/5

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

The description clearly defines the tool as providing domain knowledge for Power BI report development, with a specific mention of live discovery from skills/*.md files. This distinguishes it from sibling tools which focus on specific actions like setting page visibility or renaming bookmarks.

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

Usage Guidelines4/5

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

The description provides explicit guidance on how to list available topics using topic:'list', which aids in initial discovery. However, it does not explicitly state when not to use this tool, relying on contrasting sibling tool purposes.

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

pbir_layout_gridLayout GridA

Compute a deterministic rows×cols grid; server owns margin/gap/remainder math. Use this INSTEAD of N pbir_add_visual calls when building a page from scratch. planOnly:true (default) returns the plan; planOnly:false validates bindings+layout then writes in one call. See guide('wireframes') for grid-shape selection.

ParametersJSON Schema
NameRequiredDescriptionDefault
colsYes
gapsNoPx between cells, both directions (default 5).
rowsYes
cellsYesEmpty slots allowed — don't need to fill every cell.
pageIdNoAuto-resolved when only one page exists.
marginsNoDefault canonical (L=15, R=15, T=0, B=6).
planOnlyNotrue (default) = plan only; false = validate + write.
includeTypesNoReturn full {visualId,visualType,slotRef,x,y,width,height} per cell instead of slim ids.
strictLayoutNotrue=strict (default), false=warn. Omit for env default.
strictBindingsNoCommit-mode only (ignored when planOnly:true). true=strict (default), false=warn. Omit for env default.
reserveBannerRowNoStart grid at y=57, leaving top 52px for a banner shape (add separately via pbir_add_visual).

TDQS

A4.6/5.0
Behavior4/5

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

The description adds behavioral details beyond the sparse annotations: server handles margin/gap math, planOnly mode behavior, and reserveBannerRow effect. No contradictions.

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

Conciseness5/5

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

Two sentences with zero waste. Front-loaded with purpose, followed by usage guidance and key behavioral notes.

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

Completeness4/5

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

Given the complexity (11 params, nested objects, no output schema), the description covers core behavior and usage. However, it lacks details about the return format of the plan, which is a minor gap.

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

Parameters4/5

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

Schema coverage is 82%, so most parameters are documented. The description adds value by summarizing planOnly behavior and referencing guide('wireframes'), though it doesn't explain each parameter individually.

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

Purpose5/5

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

The description clearly states the tool computes a deterministic grid and positions cells, and distinguishes it from N pbir_add_visual calls. It also explains the planOnly mode.

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

Usage Guidelines5/5

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

Explicitly says 'Use this INSTEAD of N pbir_add_visual calls when building a page from scratch.' It also differentiates when to use planOnly:true vs false, providing clear context.

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

pbir_list_bookmarksList BookmarksA
Read-only

List all bookmarks defined in the report.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNo
_cacheNo
successNo
bookmarksNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows it's a read-only operation. The description adds no further behavioral details beyond what annotations and output schema provide, which is adequate but not exemplary.

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

Conciseness4/5

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

The description is a single, short sentence that efficiently conveys the purpose. It is well-structured and front-loaded, but could potentially add a note about the output without losing conciseness.

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

Completeness5/5

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

Given the tool's simplicity, zero parameters, presence of annotations, and an output schema, the description provides complete contextual information. No missing elements are apparent.

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

Parameters4/5

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

The tool has zero parameters, so the description correctly omits parameter details. The schema coverage is 100%, and the description does not need to compensate for missing parameter info. Baseline 4 applies.

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

Purpose5/5

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

The description clearly states the tool lists all bookmarks in the report, using a specific verb and resource. It distinguishes itself from sibling tools that add, rename, or delete bookmarks.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like pbir_add_bookmark or pbir_delete_bookmark. There is no mention of the context (e.g., enumerating bookmarks before modification) or any prerequisites.

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

pbir_list_filtersList FiltersA
Read-only

List filters on a page or visual. Slim mode (default) returns Table[Column] strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
slimNo
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdNoVisual ID — omit for page-level

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
errorNo
scopeNo
_cacheNo
filtersNo
successNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds the behavioral detail that slim mode returns Table[Column] strings, which is helpful. No contradictions 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.

Conciseness5/5

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

The description is extremely concise at two sentences, with no unnecessary words. It front-loads the main purpose and then adds key detail about slim mode.

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

Completeness4/5

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

Given the presence of an output schema, the description does not need to explain return values. It covers the purpose and slim mode behavior. However, it could briefly mention what happens when pageId/visualId are omitted or error cases.

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

Parameters4/5

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

Schema description coverage is high (67%), but the description adds value for the `slim` parameter which is undocumented in the schema. It explains the default behavior and output format, compensating for the gap.

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

Purpose5/5

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

The description clearly states it lists filters on a page or visual, distinguishing itself from sibling filter tools like pbir_add_page_filter. It specifies the slim mode output format, making the purpose very clear.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, or when to use slim vs full mode. It provides implicit context but lacks explicit guidance on usage scenarios.

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

pbir_list_pagesList PagesA
Read-only

List pages (paginated). Slim default returns id/displayName/width/height/visualCount/isActive/hidden; slim:false adds displayOption. includeVisuals:true (or pageId) embeds per-visual summaries. Top-level totalVisualCount sums the FULL set, not just the visible slice. For cross-page sweeps prefer one includeVisuals:true call over fanning out per-page pbir_list_visuals.

ParametersJSON Schema
NameRequiredDescriptionDefault
slimNo
limitNo
offsetNo
pageIdNoScope to a single page (implies includeVisuals; limit/offset ignored).
includeVisualsNoEmbed slim per-visual entries on each page.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
pagesNo
totalNo
_cacheNo
canvasNo
successNo
has_moreNo
pageCountNo
truncatedNo
nextOffsetNo
next_offsetNo
total_countNo
totalVisualCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Disclosures beyond annotations: totalVisualCount sums full set, slim behavior, and the effect of pageId. No contradictions with readOnlyHint.

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

Conciseness4/5

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

Single, well-organized paragraph with no filler. Could benefit from bullet points but remains clear and efficient.

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

Completeness4/5

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

Covers key behaviors and parameters sufficiently. Output schema exists so return format need not be described. Lacks mention of offset/limit pagination behavior, but parameter constraints are in schema.

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

Parameters4/5

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

Adds context to slim, includeVisuals, and pageId beyond schema descriptions. Explains totalVisualCount and cross-page recommendation. Limit/offset not elaborated but schema provides defaults and limits.

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

Purpose5/5

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

Clearly states the tool lists pages with pagination. Distinguishes from sibling page tools by specifying functionality and parameter effects.

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

Usage Guidelines4/5

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

Provides guidance on when to use includeVisuals:true vs. per-page calls, and explains totalVisualCount behavior. However, does not explicitly list when to avoid using this tool.

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

pbir_list_report_themesList Report ThemesA
Read-only

List all theme files stored in the report's StaticResources/RegisteredResources/ folder.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
_cacheNo
successNo
themeFilesNo

TDQS

A4.1/5.0
Behavior3/5

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

Description is consistent with readOnlyHint annotation (listing files). No additional behavioral traits disclosed (e.g., permissions, side effects). The folder path adds minor context but not beyond what annotations already suggest.

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

Conciseness5/5

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

Single sentence, no redundancy. Front-loaded with key information. Every word serves a purpose.

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

Completeness5/5

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

Given zero parameters and a simple list operation, the description fully covers the tool's purpose. Output schema exists to explain return values, so no gaps.

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

Parameters4/5

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

No parameters to document. Schema coverage is 100%. Description adds value by specifying the exact folder location for the theme files, which is not in the schema.

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

Purpose5/5

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

Description clearly states the action (list) and resource (theme files in StaticResources/RegisteredResources/ folder). This distinguishes it from sibling tools like pbir_get_report_theme or pbir_apply_theme.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. However, the name and description imply it's for discovering available theme files, which is distinct from applying or modifying themes. Lacks alternatives context.

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

pbir_list_visualsList VisualsA
Read-only

List visuals on a page (paginated). Default slim returns id/type/x/y/w/h/title. slim:false includes filterCount. Use limit/offset to page through large pages. Use visualType to filter for cross-page sweeps in combination with pbir_list_pages per-page iteration.

ParametersJSON Schema
NameRequiredDescriptionDefault
slimNo
limitNoMax items to return. Default 100.
offsetNoItems to skip. Use with limit for paging.
pageIdNoPage ID. Auto-resolved when only one page exists.
visualTypeNoReturn only visuals matching this type (e.g. 'slicer', 'tableEx'). Case-sensitive. Filtered before pagination — `total` reflects filtered count.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
totalNo
_cacheNo
canvasNo
pageIdNo
successNo
visualsNo
has_moreNo
truncatedNo
nextOffsetNo
next_offsetNo
total_countNo
visualCountNo

TDQS

A5/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=true and openWorldHint=false. The description adds valuable behavioral details: pagination, slim response fields, filterCount inclusion, and auto-resolution of pageId when one page exists. No contradictions.

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

Conciseness5/5

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

The description is appropriately sized with five concise sentences, each adding essential information. The purpose is front-loaded, and 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.

Completeness5/5

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

Given the tool's complexity (5 parameters, pagination, filtering), the description fully covers usage scenarios and integration with other tools. The output schema handles return value details, so the description does not need to repeat them.

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

Parameters5/5

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

With 80% schema description coverage, the description adds significant value: it explains slim behavior beyond the schema, reiterates and contextualizes limit/offset, describes pageId auto-resolution, and details visualType filtering before pagination affecting total count.

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

Purpose5/5

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

The description clearly states the tool lists visuals on a page and is paginated. It uses a specific verb-resource combination and distinguishes itself from sibling tools like 'pbir_get_visual' (single visual) and 'pbir_add_visual' by focusing on listing and pagination.

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

Usage Guidelines5/5

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

The description provides explicit guidance on pagination with limit/offset, filtering by visualType, and combining with 'pbir_list_pages' for cross-page sweeps. It also explains the slim parameter behavior, offering clear usage context and alternatives.

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

pbir_load_toolsLoad ToolsA

List on-demand tools (no args) or activate by name (pass tools array).

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsNoTool names to activate. Omit to list available on-demand tools.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
errorNo
_cacheNo
successNo
notFoundNo
activatedNo
availableNo
activeCountNo
refreshHintNo
availableCountNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations are minimal (openWorldHint false). The description discloses the basic behavior (listing vs activating), but does not detail side effects of activation (e.g., persistence, permission requirements). 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.

Conciseness5/5

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

Single, front-loaded sentence with zero wasted words. The two modes are clearly separated in a compact structure.

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

Completeness5/5

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

Given the simplicity of the tool (one optional parameter, output schema exists), the description is complete. It covers both use cases without needing further elaboration on return values.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the parameter. The description clarifies the dual role (list vs activate), adding context beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states two distinct purposes: listing on-demand tools (no arguments) or activating them by name (passing a 'tools' array). This distinguishes it from sibling tools which perform specific report manipulations.

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

Usage Guidelines4/5

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

Explains when to use each mode: omit 'tools' to list, provide array to activate. However, no explicit when-not-to-use or alternatives are given, leaving some ambiguity about the scope of 'activate'.

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

pbir_lookup_theme_propertyLookup Theme PropertyA
Read-only

Query the bundled Power BI theme schema for valid visualStyles property names. No args = list visual types; +visualType = list categories; +category = list properties with types/enums.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoe.g. 'labels', 'legend', 'title'. Omit to list all categories for the visualType.
visualTypeNoe.g. 'barChart', 'card', 'slicer'. Omit to list all visualTypes.
propertyFilterNoCase-insensitive substring filter on property name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countNo
errorNo
_cacheNo
successNo
categoryNo
categoriesNo
propertiesNo
schemaFileNo
visualTypeNo
visualTypesNo
availableCategoriesNo

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral details beyond the readOnlyHint annotation, explaining the progressive query pattern and that propertyFilter is a case-insensitive substring filter. It does not, however, describe error handling or output format (which is covered by the output schema).

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

Conciseness5/5

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

The description is two sentences and highly efficient, using semicolons and plus signs to concisely convey the drill-down pattern. Every part earns its place with no 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.

Completeness5/5

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

Given that the tool is a simple lookup with optional parameters and an output schema exists, the description completely covers the needed usage context. It explains the progressive query logic, which is sufficient for an agent to use the tool correctly.

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

Parameters4/5

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

The input schema already describes each parameter individually (100% coverage). The description adds value by explaining how parameters combine: visualType then category, with propertyFilter as a filter. This hierarchical usage meaningfully extends what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's purpose: to query the Power BI theme schema for valid visualStyles property names. It explains the hierarchical navigation (visual types → categories → properties), which distinguishes it from sibling tools that perform actions like applying themes or modifying visuals.

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

Usage Guidelines4/5

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

The description implies usage by showing the drill-down pattern: no arguments lists visual types, adding visualType lists categories, etc. It provides clear context on how to use the tool but does not explicitly state when not to use it or mention alternatives, though no direct siblings compete.

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

pbir_manage_extension_measuresManage Extension MeasuresA
Destructive

Manage extension measures (report-level DAX in reportExtensions.json). Empty file crashes PBI Desktop — tool auto-deletes when empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataTypeNoText/Double/Int64/Boolean/DateTimeText
operationYes
tableNameNo_Measures
expressionNoDAX (for add)
measureNameNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations indicate destructive behavior (destructiveHint: true). The description adds critical context: 'Empty file crashes PBI Desktop — tool auto-deletes when empty', which goes beyond annotations to warn about a serious side effect.

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

Conciseness5/5

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

Two succinct sentences. First sentence states the purpose, second adds a crucial warning. No unnecessary words.

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

Completeness3/5

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

The description explains the core action and a critical edge case but omits details about return values and the specific operations (list/add/remove). Given 5 parameters, no output schema, and destructive hint, more context would be beneficial.

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

Parameters2/5

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

Only 2 of 5 parameters have descriptions in the schema (dataType, expression). The description does not add any parameter-level guidance beyond what is already in the schema. The meaning of 'operation', 'tableName', and 'measureName' remains implicit.

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

Purpose5/5

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

The description clearly states the tool manages extension measures (report-level DAX) in reportExtensions.json, with a specific verb 'manage' and resource. It distinguishes from sibling tools that deal with visuals, pages, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. While the purpose is clear, it does not mention when not to use it or provide context 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.

pbir_model_usageModel UsageA
Read-only

Cross-reference the semantic model with the report — shows where every measure and column is used, DAX dependencies, unused fields, and per-page coverage. Also generates an HTML dashboard for visual inspection. Requires a sibling .SemanticModel/ folder alongside the .Report/ — call pbir_get_report first to check hasSemanticModel before invoking this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
slimNoSlim mode returns usage counts only. Set false for full visual-level detail.
reportPathNoPath to the .Report folder. Uses current connected report if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
pagesNo
_cacheNo
cachedNo
totalsNo
unusedNo
columnsNo
successNo
measuresNo
timestampNo
hiddenPagesNo
dashboardPathNo
parseWarningsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations (readOnlyHint=true) indicate no destructive side effects. Description adds that it generates an HTML dashboard, a non-obvious behavioral detail. No contradictions. Could mention that it modifies nothing, but safe assumption given readOnlyHint.

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

Conciseness5/5

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

Two sentences: first succinctly describes outputs, second provides prerequisite and recommended prior call. Every sentence serves a purpose with no redundancy.

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

Completeness4/5

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

Covers purpose, prerequisites, parameter behavior, and output type (HTML dashboard). Slightly lacking on where the dashboard is saved or how to access it, but given the output schema existence, this is acceptable.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters. The description adds no further semantic value beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool cross-references the semantic model with the report, showing measure/column usage, DAX dependencies, unused fields, and per-page coverage. It also mentions generating an HTML dashboard. This distinguishes it from siblings, which focus on page, visual, or theme manipulation.

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

Usage Guidelines5/5

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

Explicitly states the prerequisite of a sibling .SemanticModel/ folder and instructs to call pbir_get_report first to check hasSemanticModel. This provides clear when-to-use guidance and an alternative path if the condition is not met.

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

pbir_move_visualMove VisualB

Move and/or resize a visual on a page

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
zNoz-order
widthNo
heightNo
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdYesThe visual ID

TDQS

B3.2/5.0
Behavior2/5

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

Annotations provide only openWorldHint: false, so the description must disclose behavioral traits. It states that the tool mutates (move/resize), but omits potential side effects like layout impacts, permission requirements, or whether coordinates are absolute/relative. This lacks sufficient behavioral detail for safe invocation.

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

Conciseness4/5

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

The description is a single sentence, effectively communicating the core function without fluff. However, it could be slightly more structured by optionally adding usage tips without significant length increase.

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

Completeness2/5

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

Given 7 parameters, low schema coverage, no output schema, and no annotations, the description fails to provide adequate context. It does not explain that only visualId is required, that pageId auto-resolves, or describe coordinate/unit systems, leaving significant gaps for correct tool use.

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

Parameters2/5

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

Schema coverage is only 43% (only z, pageId, visualId have descriptions). The description adds no parameter-level details beyond the schema, failing to explain x/y units, width/height meaning, or z-order semantics. With low coverage and no compensation, the agent lacks essential parameter understanding.

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

Purpose5/5

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

The description 'Move and/or resize a visual on a page' clearly states the verb (move and/or resize) and resource (visual). It directly introduces the tool's functionality and distinguishes it from sibling tools like pbir_set_visual_title or pbir_delete_visual, which handle other aspects.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. While the name and description imply it is for repositioning/resizing, there is no mention of prerequisites, exclusions, or comparisons to other visual manipulation tools, leaving the agent without clear contextual cues.

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

pbir_reload_reportReload ReportA
Destructive

Reload the report in Power BI Desktop by closing and reopening the .pbip file. SAFETY: closes PBIDesktop.exe, so any unsaved work in Desktop (including modeling-MCP measures/relationships not yet flushed by Desktop autosave) is LOST. Requires confirm:true to proceed — otherwise returns a save-first warning for the agent to relay to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to actually reload. When false/omitted, the tool returns a save-first warning instead of killing PBI Desktop. The agent should relay the warning, wait for user confirmation, then retry with confirm:true.

TDQS

A4.8/5.0
Behavior5/5

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

The description clearly warns that unsaved work is lost, even adding detail about modeling-MCP measures not flushed by autosave. Annotations already mark destructiveHint: true, so the description significantly adds behavioral context beyond annotations.

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

Conciseness5/5

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

The description is two concise sentences, front-loading the core action then adding crucial safety and usage details. Every sentence earns its place with no wasted words.

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

Completeness5/5

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

Given only one parameter, no output schema, and annotations providing destructiveHint, the description is fully complete. It covers purpose, usage, safety, and parameter behavior adequately.

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

Parameters5/5

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

Schema coverage is 100% for the single parameter. The description adds value by explaining the semantic difference between confirm=true (execution) and false/omitted (warning), which is not fully captured in the schema's description.

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

Purpose5/5

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

The description clearly states the tool reloads a report by closing and reopening the .pbip file. It distinguishes itself from sibling tools by explicitly mentioning it closes PBIDesktop.exe, which is unique among the listed siblings.

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

Usage Guidelines4/5

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

The description explains that confirm=true is required to proceed, and when false/omitted it returns a save-first warning. It provides clear context for use but does not explicitly state when not to use it or list alternatives beyond the save-first flow.

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

pbir_remove_filterRemove FilterA
Destructive

Remove a specific filter by name from a page or visual.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID
visualIdNoVisual ID — omit to remove from page-level filters
filterNameYesThe filter name/ID to remove (from pbir_list_filters)

TDQS

A3.7/5.0
Behavior3/5

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

The destructiveHint annotation already indicates mutation; the description adds no new behavioral context beyond stating the action 'Remove'. It does not discuss 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.

Conciseness4/5

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

The description is a single clear sentence, front-loading the action and scope. It is concise and well-structured with no unnecessary words.

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

Completeness4/5

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

For a simple removal tool with no output schema, the description adequately covers the functionality. It could reference the origin of filter names (pbir_list_filters) but the schema already provides that context.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter meanings are fully defined in the schema. The description adds no additional semantic value beyond what is already in the parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool removes a specific filter by name from a page or visual, providing a specific verb and resource. It distinguishes itself from sibling tools like pbir_clear_filters (which removes all filters) by specifying 'specific filter by name'.

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

Usage Guidelines3/5

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

The description implies when to use (when you need to remove a specific filter), but does not explicitly state when not to use or provide alternatives. Sibling tools like pbir_clear_filters offer contrasting functionality, but no direct comparison is given.

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

pbir_remove_report_themeRemove Report ThemeA
Destructive

Remove the custom theme from the report, reverting to the default base theme. The theme file is kept in StaticResources but unlinked from report.json.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Discloses that the theme file is kept but unlinked, adding context beyond the destructiveHint annotation. No contradictions.

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

Conciseness5/5

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

Two sentences, no wasted words. First sentence states core action, second provides important side effect. Efficient and well-structured.

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

Completeness5/5

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

For a zero-parameter tool with annotations, the description fully covers the effect and side effect. No output schema needed as return is likely void/success.

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

Parameters4/5

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

No parameters; schema coverage is 100% by absence. Description adds no parameter information but none is needed. Baseline 4 for zero-parameter tools.

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

Purpose5/5

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

Clear verb+resource: 'Remove the custom theme from the report, reverting to the default base theme.' It distinctly describes the action and distinguishes it from sibling tools like pbir_set_report_theme or pbir_get_report_theme.

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

Usage Guidelines3/5

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

Implies usage when removing a custom theme, but no explicit guidance on when to use versus alternatives (e.g., pbir_set_report_theme for changing theme), nor any conditions or exclusions.

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

pbir_rename_bookmarkRename BookmarkB

Rename an existing bookmark.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmarkIdYesThe bookmark ID to rename
displayNameYesNew display name

TDQS

B3.2/5.0
Behavior2/5

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

Annotations are minimal (openWorldHint=false), so the description should disclose behavioral traits. It does not mention what happens if the bookmarkId is invalid, any side effects, or required permissions.

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

Conciseness4/5

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

The description is a single, concise sentence. It is front-loaded and to the point, though it could be slightly more informative without losing conciseness.

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

Completeness3/5

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

For a simple rename operation, the description is minimally adequate. However, it lacks context about the tool's relationship to other bookmark tools and any constraints (e.g., bookmark must exist).

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds no additional 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.

Purpose5/5

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

The description clearly states the verb 'Rename' and the resource 'existing bookmark', making the purpose unambiguous. It distinguishes itself from siblings like pbir_add_bookmark and pbir_delete_bookmark.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., pbir_add_bookmark for creating), nor does it mention prerequisites or post-conditions.

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

pbir_rename_pageRename PageC

Rename an existing page

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.
displayNameYesNew display name

TDQS

C2.9/5.0
Behavior2/5

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

The description does not go beyond stating the basic operation. No annotations (destructiveHint, readOnlyHint) are present, so the description carries full burden but provides no extra behavioral details (e.g., whether renaming affects references, if it 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.

Conciseness3/5

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

The description is a single, short sentence. It is concise but lacks important context. It is not overly verbose, but may be too terse for an agent to fully understand the operation.

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

Completeness3/5

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

For a simple rename operation with two parameters fully described in the schema, the description is minimally adequate. However, it does not mention the return behavior (e.g., no output schema) or edge cases (e.g., what happens if page not found).

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters. The description adds no further meaning beyond the schema. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Rename an existing page' clearly states the action and resource. It is specific enough to distinguish from sibling tools like 'pbir_rename_bookmark' or 'pbir_set_page_visibility', though it does not explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., pbir_create_page, pbir_duplicate_page). No prerequisites or context are mentioned.

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

pbir_reorder_pagesReorder PagesC

Set the page order

ParametersJSON Schema
NameRequiredDescriptionDefault
pageOrderYesArray of page IDs in desired order

TDQS

C2.9/5.0
Behavior2/5

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

The description does not disclose any behavioral traits beyond the basic action. Annotations only include 'openWorldHint: false', which does not add behavioral context. There is no mention of side effects, permissions, or error conditions, leaving the agent underinformed about what happens when reordering pages.

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

Conciseness4/5

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

The description is extremely concise, using a single sentence to convey the purpose. While it sacrifices detail, it is front-loaded and direct. It could benefit from slightly more context, but for a simple operation, the brevity is acceptable.

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

Completeness3/5

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

Given the tool's simplicity and full schema coverage, the description is minimally adequate. However, it lacks information about return values (none provided), error handling, or prerequisites (e.g., page IDs must exist). For a complete context, the description should at least hint at these aspects.

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

Parameters3/5

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

Schema description coverage is 100% for 'pageOrder', and the schema adequately describes it as 'Array of page IDs in desired order'. The description adds no additional meaning beyond the schema. Baseline score of 3 is appropriate as schema does the heavy lifting.

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

Purpose4/5

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

The description 'Set the page order' uses a specific verb ('Set') and resource ('page order'), clearly indicating this tool reorders pages. It distinguishes from sibling tools like 'pbir_rename_page' or 'pbir_delete_page' which perform different operations. However, it is very brief and could be more descriptive.

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

Usage Guidelines2/5

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

There is no guidance on when or when not to use this tool. No alternatives are mentioned, and no context is provided about prerequisites (e.g., needing existing pages). The description lacks any usage direction beyond stating the action.

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

pbir_set_active_pageSet Active PageA
Idempotent

Set which page is active (shown on open)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdNoPage ID. Auto-resolved when only one page exists.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and openWorldHint=false, so the tool understands it is an idempotent, known operation. The description adds that it sets the active page and that it is shown on open, but no further behavioral details (e.g., whether it throws errors if called with no pages or multiple pages).

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the essential purpose without any superfluous words. Every word earns its place.

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

Completeness3/5

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

For a simple tool with one optional parameter and no output schema, the description is adequate but minimal. It does not mention what happens when pageId is omitted (auto-resolved) or handle edge cases, relying on the schema for that detail.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents the pageId parameter, including auto-resolution behavior. The description does not add additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Set' and the resource 'which page is active (shown on open)', distinguishing it from sibling tools like pbir_list_pages or pbir_create_page. It is specific about the tool's action.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as pbir_list_pages or pbir_set_page_visibility. The description does not provide 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.

pbir_set_conditional_formatSet Conditional FormatB

Apply conditional formatting to a visual container background or title font. formatType: rules / gradient / clear. ComparisonKind: 0=Eq,1=GT,2=GTE,3=LT,4=LTE,5=NEq.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesNoOrdered list (first match wins)
entityNoDriving table name
pageIdNoPage ID. Auto-resolved when only one page exists.
maxColorNogradient
midColorNogradient (optional 3-stop)
minColorNogradient
propertyNobackground
visualIdYesThe visual ID
isMeasureNo
property2NoDriving column/measure name
formatTypeYes
defaultColorNo

TDQS

B3.3/5.0
Behavior2/5

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

The description lacks behavioral details such as side effects (e.g., overwriting existing formatting), idempotency, or reversibility. With no readOnlyHint or destructiveHint annotations, the description should disclose that this tool modifies report state. It only specifies parameter mappings, not overall behavior.

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

Conciseness4/5

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

The description is concise with two sentences, no wasted words. The first sentence clearly states the purpose, and the second adds critical parameter details. However, the structure could be slightly improved by grouping parameter explanations or using bullet points.

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

Completeness2/5

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

With 12 parameters and no output schema, the description only covers a fraction of the input space. Key parameters like rules, entity, pageId, colors, isMeasure, property2, and defaultColor are not explained, leaving the agent with incomplete context for correct invocation.

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

Parameters4/5

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

The description adds value by explicitly mapping comparisonKind values (0=Eq, 1=GT, etc.) and listing formatType options, which are not fully detailed in the schema. This helps the agent understand parameter semantics beyond the schema's enum definitions. However, many parameters (e.g., rules, entity, colors) remain undocumented in the description.

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

Purpose5/5

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

The description clearly states it applies conditional formatting to a visual container background or title font, which is distinct from sibling tools like pbir_format_visual or pbir_set_datapoint_colors. The verb 'apply' and resource 'conditional formatting' 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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., pbir_format_visual for simple formatting). There is no mention of prerequisites, context, or when not to use conditional formatting.

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

pbir_set_datapoint_colorsSet Datapoint ColorsA

Set data point colors. Series-based charts use metadata mode. Category-based (no Series) requires categoryEntity+categoryProperty.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorsYes[{seriesName, color}]
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdYesThe visual ID
categoryEntityNoRequired for category-based charts
categoryPropertyNoRequired for category-based charts
defaultTransparencyNo

TDQS

A4.1/5.0
Behavior3/5

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

The description explains the behavioral distinction between series and category charts, which is helpful. However, it does not disclose other behaviors such as whether colors are overwritten or additive, permissions needed, or side effects. Since annotations provide no additional behavioral hints, the description carries a moderate burden.

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

Conciseness5/5

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

The description is extremely concise—only two sentences—and front-loads the purpose. Every sentence provides essential information without redundancy.

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

Completeness3/5

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

For a tool with 6 parameters and no output schema, the description covers the core usage pattern but lacks details on error handling, return values, or edge cases (e.g., empty colors array). 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.

Parameters4/5

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

With 83% schema coverage, the schema already documents most parameters. The description adds value by clarifying the conditional requirement for categoryEntity and categoryProperty based on chart type, which is not obvious from the schema alone.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Set data point colors.' It distinguishes between series-based and category-based charts, specifying the required parameters for each, which differentiates 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.

Usage Guidelines4/5

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 metadata mode (series-based) vs. categoryEntity+categoryProperty (category-based). It does not compare to alternatives or state when not to use the tool, 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.

pbir_set_filter_paneSet Filter PaneB
Idempotent

Show or hide the filter pane.

ParametersJSON Schema
NameRequiredDescriptionDefault
visibleYes
expandedNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations provide idempotentHint, so the description's minimal behavioral disclosure is acceptable. However, the description adds no extra context about side effects or limitations beyond what the annotations convey.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is appropriately sized for the tool's simplicity and front-loaded with the action and resource.

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

Completeness3/5

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

Given the simplicity of the tool (two boolean parameters), the description partially covers the core functionality but fails to mention the 'expanded' parameter, leaving a gap in understanding the tool's full behavior.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain the parameters, but it does not mention 'visible' or 'expanded'. The agent must infer meaning from parameter names alone, which is insufficient for reliable use.

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

Purpose5/5

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

Description explicitly states the action (show/hide) and the resource (filter pane), with a specific verb that clearly indicates the tool's purpose. It is distinct from sibling tools like pbir_list_filters or pbir_add_page_filter, which perform different operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like pbir_list_filters or pbir_set_page_visibility. There is no mention of prerequisites, context, or conditions for showing/hiding the filter pane.

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

pbir_set_page_backgroundSet Page BackgroundB
Idempotent

Set the page canvas background and/or wallpaper. Hex color (#0D1117). Transparency 0-100.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoRemove all background/wallpaper settings
colorNoCanvas background color (hex)
pageIdNoPage ID. Auto-resolved when only one page exists.
transparencyNo
wallpaperColorNoColor behind the canvas
wallpaperTransparencyNo

TDQS

B3.3/5.0
Behavior2/5

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

Annotations provide idempotentHint=true and openWorldHint=false, but the description adds no extra behavioral information (e.g., side effects, permission needs, interplay between color and wallpaper parameters). Safety profile is not expanded beyond annotations.

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

Conciseness4/5

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

The single sentence is very concise, but it lacks structure (e.g., bullet points for parameters). Nevertheless, it efficiently conveys core purpose with minimal verbosity.

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

Completeness2/5

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

With no output schema and 6 optional parameters, the description fails to integrate parameter details or explain what happens on execution (e.g., how clear interacts with color, return state). A more comprehensive description is needed for adequate contextual completeness.

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

Parameters4/5

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

The description supplements schema with a hex example (#0D1117) and transparency range (0-100), compensating for the 2 parameters lacking schema descriptions. However, it does not explain parameter interactions or default behavior.

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

Purpose5/5

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

The description clearly states the verb 'Set' and the resource 'page canvas background and/or wallpaper', specifying accepted value formats (hex color, transparency range). It also implicitly distinguishes from sibling tools since no other tool addresses background settings.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like pbir_apply_theme or pbir_set_report_theme, which also affect background. No when-not, prerequisites, or context for use.

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

pbir_set_page_visibilitySet Page VisibilityA
Idempotent

Show or hide a page in the navigation pane. Hidden pages still work for drillthrough.

ParametersJSON Schema
NameRequiredDescriptionDefault
hiddenNo
pageIdNoPage ID. Auto-resolved when only one page exists.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true, and description adds valuable context: 'Hidden pages still work for drillthrough.' This informs the agent about an important side effect beyond the toggle itself, enhancing transparency.

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

Conciseness5/5

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

Single sentence, no wasted words. Front-loaded with purpose, followed by crucial behavioral detail. Efficient and scannable.

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

Completeness5/5

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

For a simple boolean toggle tool with no output schema, the description covers the core action and the critical behavior (drillthrough still works). It is complete given the tool's complexity and the richness of annotations.

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

Parameters3/5

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

Schema has 2 parameters with 50% description coverage (only pageId has a description). The tool description does not add new parameter details; hidden could benefit from explanation. Baseline 3 is appropriate as schema provides some info, but description misses opportunity to clarify.

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

Purpose5/5

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

Description clearly specifies the verb (show/hide) and resource (page visibility in navigation pane). It distinguishes this tool from siblings by specifically mentioning navigation pane visibility and drillthrough behavior, which no other sibling covers.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The purpose is clear from context, but there's no mention of when not to use or comparison to similar tools like pbir_create_page or pbir_delete_page.

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

pbir_set_reportSet ReportA

Connect to a different Power BI report (.Report folder or parent .pbip project folder). Use this to switch reports mid-session without restarting the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the .Report folder or the parent folder containing a .pbip project

TDQS

A4.1/5.0
Behavior3/5

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

Annotations only include openWorldHint: false, which is not contradicted by the description. The description adds context about switching reports but does not disclose additional behavioral traits such as whether it requires specific permissions or what happens to current state. Given minimal annotations, this is adequate but not exceptional.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the key action, and contains no unnecessary words. Every sentence serves a clear purpose.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description gives enough context: what the tool does, when to use it, and what input is expected. No additional details are needed.

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

Parameters3/5

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

Schema coverage is 100% with the 'path' parameter fully described in the schema. The description repeats the path requirement but adds no new semantic details beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Connect to a different Power BI report'. It specifies the resource type (.Report folder or .pbip project) and distinguishes itself from siblings like pbir_get_report by indicating it switches reports mid-session.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use this to switch reports mid-session without restarting the server.' It gives a clear context but does not mention when not to use it or alternatives, though the use case is well-defined.

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

pbir_set_report_themeSet Report ThemeC
Idempotent

Apply a custom JSON theme. Hex colors. dataColors 6-12 values. visualStyles keyed by visualType or '*'.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
backgroundNo
dataColorsNo
foregroundNo
tableAccentNo
visualStylesNo
backgroundLightNo
backgroundNeutralNo
foregroundNeutralSecondaryNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations indicate idempotentHint=true, and the description adds some behavioral detail (hex colors, dataColors 6-12, visualStyles keying). However, it does not disclose side effects, authorization needs, or what happens to existing theme settings. The description adds value beyond annotations but remains limited.

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

Conciseness3/5

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

The description is very short (one sentence plus fragments), which is concise but lacks structure. It front-loads the core action but omits important details. Could be improved with clearer separation of parameter constraints.

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

Completeness2/5

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

Given 9 parameters, no output schema, and only idempotentHint annotation, the description is incomplete. It does not explain the 'name' parameter, return values, or the effect of other color parameters. A more detailed description is needed for effective tool use.

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

Parameters3/5

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

With 0% schema description coverage, the description must add meaning. It provides some guidance for dataColors (6-12 values) and visualStyles (keyed by visualType or '*'), but ignores other parameters like name, background, foreground, etc. Partially compensates but insufficient for the 9-parameter schema.

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

Purpose3/5

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

The description states 'Apply a custom JSON theme' which is a clear verb+resource, but it is too vague to differentiate from siblings like pbir_apply_theme or pbir_set_report. It lacks specificity about what exactly the theme modifies.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., pbir_apply_theme, pbir_set_report). It does not mention prerequisites, context, or exclusion criteria.

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

pbir_set_visual_interactionSet Visual InteractionA
Idempotent

Set cross-filter interaction (Filter/Highlight/NoFilter) from source visual to target visual.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
pageIdYesThe page ID
sourceYes
targetYes

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already indicate idempotency. The description does not disclose any additional behavioral traits like side effects, error handling if visuals do not exist, or the exact effect of 'NoFilter'. Minimal behavioral context beyond the core action.

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

Conciseness5/5

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

Extremely concise: a single sentence that directly conveys the tool's purpose and key parameter values. No extraneous information, perfectly front-loaded.

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

Completeness3/5

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

Given the tool has 4 required parameters, no output schema, and moderate complexity, the description is somewhat adequate. It explains the core interaction but lacks details on constraints (e.g., pageId context, validation of parameters) and behavior of each interaction type. It is minimally viable but leaves gaps.

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

Parameters4/5

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

The description adds meaning by explaining that the 'type' parameter selects among three interaction modes and that source and target are visuals in a directed relationship. This goes beyond the schema, which only provides enum values and basic property names. However, not all parameters are individually elaborated.

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

Purpose5/5

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

The description clearly states that the tool sets cross-filter interaction between visuals, specifying the exact action ('Set') and the possible values ('Filter/Highlight/NoFilter'). It distinguishes itself from sibling tools that deal with other visual properties or report configuration.

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

Usage Guidelines3/5

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

The description implies usage for configuring how a source visual affects a target visual, but provides no explicit guidance on when to use it versus alternatives or any prerequisites (e.g., visuals must exist on the same page).

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

pbir_set_visual_sortSet Visual SortA

Set the sort order of a visual. Overrides the auto-sort. Use Table[Column] for field refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortYesPriority order
pageIdNoPage ID. Auto-resolved when only one page exists.
visualIdYesThe visual ID
isDefaultSortNotrue=user can override

TDQS

A3.8/5.0
Behavior2/5

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

Annotations provide minimal context (openWorldHint: false) and the description does not disclose any behavioral traits beyond the action. It fails to mention side effects, reversibility, or required permissions, which 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.

Conciseness5/5

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

The description is extremely concise with three short sentences that front-load the main purpose. Every sentence adds value with no superfluous content.

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

Completeness4/5

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

For a simple setter with 4 parameters and no output schema, the description covers the core functionality. It could be improved by noting that existing sort is replaced, but it is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds 'Use Table[Column] for field refs' which reinforces the schema but does not significantly enrich parameter understanding beyond the existing schema descriptions.

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

Purpose5/5

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

The description clearly states 'Set the sort order of a visual' using a specific verb and resource, and distinguishes itself from sibling tools that modify other visual properties. It is not a tautology.

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

Usage Guidelines4/5

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

The description indicates the tool is used to override auto-sort, providing clear context. However, it does not explicitly state when not to use this tool or mention alternatives, though no direct sibling exists for sorting.

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

pbir_set_visual_titleSet Visual TitleB
Idempotent

Set or update the title of a visual. Can set text, visibility, font, size, alignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
showNo
titleNo
pageIdNoPage ID. Auto-resolved when only one page exists.
fontSizeNo
visualIdYesThe visual ID
alignmentNo
titleWrapNo
fontFamilyNoPBI font stack

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare idempotentHint=true, but the description does not elaborate on idempotency, side effects, or return behavior. It merely states 'set or update' without mentioning that calling with only visualId might clear title settings or that changes are overwritten each call.

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

Conciseness5/5

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

The description is a tight two sentences: first capturing the core action, second listing key capabilities. It is front-loaded with the verb and resource, and every phrase earns its place—no redundancy or filler.

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

Completeness3/5

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

For an 8-parameter tool with no output schema, the description covers the main function but lacks context on required parameters (only visualId is required but not emphasized), auto-resolution of pageId, or behavior of partial calls. It is minimally complete but leaves gaps for effective use.

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

Parameters3/5

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

With only 38% schema description coverage, the description compensates partially by listing text, visibility, font, size, alignment—which map to parameters title, show, fontFamily, fontSize, alignment. However, it omits titleWrap and does not clarify the auto-resolution behavior of pageId noted in the schema.

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

Purpose5/5

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

The description clearly states the verb (Set or update) and the resource (title of a visual), and lists specific properties (text, visibility, font, size, alignment). This distinguishes it from sibling tools like pbir_format_visual which handles broader formatting, and pbir_set_visual_sort which deals with sorting.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as pbir_format_visual. It does not specify prerequisites, exclusions, or typical use cases, leaving the agent to infer context from the tool name and siblings.

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

pbir_update_page_sizeUpdate Page SizeC

Update the page dimensions

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
heightNo
pageIdNoPage ID. Auto-resolved when only one page exists.
displayOptionNo

TDQS

C2.6/5.0
Behavior2/5

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

The description does not disclose behavioral traits such as side effects (e.g., triggering re-render), constraints on dimension values, or authorization needs. Annotations are minimal (openWorldHint: false), leaving the description to carry the burden, which it fails to do.

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

Conciseness3/5

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

The description is extremely concise (6 words). While it avoids fluff, it is too brief to be informative, sacrificing completeness for brevity.

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

Completeness2/5

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

Without an output schema, the description provides no information on return values or effects. Given the tool has 4 parameters (0 required) and involves visual changes, the description is insufficient for an agent to understand the tool's behavior.

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

Parameters2/5

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

With only 25% schema description coverage (only pageId described), the description adds no extra meaning. It does not explain the purpose of width, height, or displayOption, nor units or allowed ranges.

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

Purpose4/5

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

The description clearly states the verb 'Update' and the resource 'page dimensions'. However, it lacks context about what kind of page (e.g., report page) and could be more specific to differentiate it from other page tools.

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

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives like pbir_set_page_visibility or pbir_reorder_pages. No usage context or prerequisites are mentioned.

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

pbir_update_report_settingsUpdate Report SettingsB
Idempotent

Merge report-level settings. Keys: useStylableVisualContainerHeader, useEnhancedTooltips, exportDataMode (0|1), persistentFilters, keyboardNavigationEnabled, defaultDrillFilterOtherVisuals, allowChangeFilterTypes, useDefaultAggregateDisplayName.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations provide idempotentHint=true, but the description doesn't elaborate on behavioral traits like permissions, side effects on unspecified keys, or idempotency behavior. Listing keys adds some value 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.

Conciseness5/5

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

The description is a single sentence followed by a clear list of keys. No wasted words, front-loaded with purpose. Highly efficient.

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

Completeness3/5

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

Given the tool has no output schema and one nested parameter, the description covers the keys well. However, it does not explain return values, error conditions, or permissions, leaving some gaps for a mutation tool.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by listing the specific keys and their formats (e.g., exportDataMode with 0|1). This adds crucial meaning beyond the generic schema.

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

Purpose4/5

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

The description clearly states 'Merge report-level settings' with a specific verb and resource, and lists the keys. It distinguishes from siblings like pbir_get_report_settings but could be more explicit about the set of settings being updated.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives like pbir_get_report_settings or other update tools. The sibling list is provided but no comparison or context for usage.

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

pbir_update_visual_bindingsUpdate Visual BindingsA

Update the data bindings of an existing visual. Replaces the query state entirely. Supports Table[Column] shorthand: use { "field": "Sales[Net Price]", "type": "measure" } as an alternative to separate entity/property fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe page ID
bindingsYesNew data bindings
visualIdYesThe visual ID
autoFiltersNo
strictBindingsNoBinding validation: true=strict (default, fail on unknown field), false=warn (proceed with warnings). Omit for env default.

TDQS

A4.2/5.0
Behavior4/5

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

Description reveals 'Replaces the query state entirely' – a key behavioral trait beyond annotations. Also mentions validation behavior with strictBindings. Adds clarity about the tool'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.

Conciseness5/5

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

Three sentences with no wasted words. First sentence states purpose, second clarifies replacement behavior, third illustrates shorthand. Efficient and well-structured.

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

Completeness4/5

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

Covers main aspects: update bindings, replacement behavior, shorthand syntax. No output schema, but return values not critical. Could mention prerequisite (visual must exist) but implicit. Complete given complexity.

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

Parameters4/5

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

Description explains shorthand 'Table[Column]' notation and provides an example, adding value beyond the schema's field descriptions. Schema coverage is high (80%), but the description compensates for the remaining ambiguity.

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

Purpose5/5

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

Description clearly states 'Update the data bindings of an existing visual' – specific verb and resource. Distinguishes from other visual manipulation tools like pbir_add_visual or pbir_change_visual_type by specifying data bindings.

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

Usage Guidelines3/5

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

Description does not explicitly state when to use this tool vs alternatives (e.g., for changing visual type use pbir_change_visual_type). Usage context is implied but not explicit.

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

pbir_validate_wireframeValidate WireframeA
Read-only

Validate a page's (or the whole report's) layout against the wireframe rules — margins, gaps, overlap, off-canvas, banner geometry. Returns errors + warnings per visual plus stats (visual count, coverage, bottom edge). Read-only. Pair with pbir_audit_theme_compliance for full project verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo'page' validates a single page; 'report' validates every page.page
pageIdNoAuto-resolved when scope:'page' and only one page exists. Ignored when scope:'report'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
errorNo
pagesNo
scopeNo
_cacheNo
pageIdNo
reportNo
successNo
displayNameNo
availableIdsNo
reportSummaryNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only.' It adds behavioral context by detailing what the tool checks (margins, gaps, etc.) and what it returns (errors, warnings, stats), going beyond the annotations.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus a short phrase. It front-loads the core purpose and specifics in the first sentence, then adds output details and pairing suggestion in the second. No extraneous words.

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

Completeness5/5

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

Given the tool has only 2 parameters (0 required), full schema coverage, and an output schema, the description sufficiently covers what validation is performed, what output to expect, and how to combine with a sibling tool. No gaps remain.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters adequately. The description echoes the scope options and auto-resolution behavior but does not add additional semantic meaning beyond the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool validates layout against wireframe rules, listing specific checks (margins, gaps, overlap, etc.) and output types (errors, warnings, stats). It distinguishes itself from the sibling pbir_audit_theme_compliance by suggesting pairing, 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.

Usage Guidelines4/5

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

The description explicitly marks the tool as read-only and recommends pairing with pbir_audit_theme_compliance for full verification. However, it does not provide explicit 'when not to use' or alternative tools, but 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 57 tool updatesv0.9.6
    • First observedpbir_add_bookmark
    • First observedpbir_add_page_filter
    • First observedpbir_add_visual
    • First observedpbir_apply_theme
    • First observedpbir_audit_theme_compliance
    • First observedpbir_auto_layout
    • First observedpbir_bulk_bind
    • First observedpbir_bulk_delete_visuals
    • First observedpbir_bulk_update_format
    • First observedpbir_change_visual_type
    • First observedpbir_clear_filters
    • First observedpbir_create_page
    • First observedpbir_delete_bookmark
    • First observedpbir_delete_page
    • First observedpbir_delete_visual
    • First observedpbir_diff_report_theme
    • First observedpbir_duplicate_page
    • First observedpbir_duplicate_visual
    • First observedpbir_format_visual
    • First observedpbir_get_report
    • First observedpbir_get_report_settings
    • First observedpbir_get_report_theme
    • First observedpbir_get_visual
    • First observedpbir_get_visual_types
    • First observedpbir_guide
    • First observedpbir_layout_grid
    • First observedpbir_list_bookmarks
    • First observedpbir_list_filters
    • First observedpbir_list_pages
    • First observedpbir_list_report_themes
    • First observedpbir_list_visuals
    • First observedpbir_load_tools
    • First observedpbir_lookup_theme_property
    • First observedpbir_manage_extension_measures
    • First observedpbir_model_usage
    • First observedpbir_move_visual
    • First observedpbir_reload_report
    • First observedpbir_remove_filter
    • First observedpbir_remove_report_theme
    • First observedpbir_rename_bookmark
    • First observedpbir_rename_page
    • First observedpbir_reorder_pages
    • First observedpbir_set_active_page
    • First observedpbir_set_conditional_format
    • First observedpbir_set_datapoint_colors
    • First observedpbir_set_filter_pane
    • First observedpbir_set_page_background
    • First observedpbir_set_page_visibility
    • First observedpbir_set_report
    • First observedpbir_set_report_theme
    • First observedpbir_set_visual_interaction
    • First observedpbir_set_visual_sort
    • First observedpbir_set_visual_title
    • First observedpbir_update_page_size
    • First observedpbir_update_report_settings
    • First observedpbir_update_visual_bindings
    • First observedpbir_validate_wireframe

TDQS

B3.4/5.0

Scored across 57 tools

Disambiguation4/5

Most tools have distinct purposes, but the sheer number (57) could cause some confusion, especially among formatting and bulk operation tools. However, each tool's description clearly differentiates its use case.

Naming Consistency4/5

Tools consistently use the 'pbir_' prefix and snake_case, with a predominant verb_noun pattern. Minor deviations like 'pbir_guide' and 'pbir_load_tools' are exceptions but still readable.

Tool Count3/5

57 tools is high for an MCP server, but the domain (Power BI report development) is complex and justifies many specialized operations. However, some tools could potentially be combined (e.g., multiple bulk operations).

Completeness4/5

The tool surface covers major aspects of report development: pages, visuals, formatting, filters, bookmarks, themes, and model cross-referencing. Missing data source management is acceptable as the server focuses on the report layer.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers