Skip to main content
Glama
vilsem-mcp
by bcsnpc

run_dax

Execute read-only DAX EVALUATE table queries against a connected Power BI model to inspect data and verify visual bindings; returns up to maxRows rows (default 200) and makes no persistent changes.

Instructions

Execute a read-only DAX EVALUATE table query against a connected model. Returns at most maxRows rows, default 200. Use it to inspect data and verify visual bindings; this tool does not expose XMLA commands or persistent model changes.

Input Schema

NameRequiredDescriptionDefault
daxYes
maxRowsNo
connectionIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does disclose the key traits: the operation is read-only, cannot make persistent model changes, does not expose XMLA, and caps output at maxRows (default 200). It omits secondary behavior an agent might want, such as error handling for malformed DAX, timeouts, or how a connectionId is obtained/kept alive.

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, front-loaded with the action and resource, then the return-size constraint, then usage and scope exclusions. No filler and nothing repeated verbatim from the schema beyond a useful default restatement.

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 three-parameter, read-only query tool with no output schema, the description covers what is executed, what comes back (bounded rows), and what it will not do. The remaining gap is the connectionId lifecycle and result shape (columns vs. rows), which an agent would have to infer from sibling tools.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does constrain 'dax' to an EVALUATE table query (a real semantic requirement beyond the schema's string type) and restates the maxRows default, but it says nothing about 'connectionId' — its uuid format, whether it comes from connect_model, or what happens if it is stale.

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

Purpose4/5

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

The description names a specific verb and resource ('Execute a read-only DAX EVALUATE table query against a connected model') and scopes it to table queries only. It implicitly separates itself from schema/model-management siblings (get_schema, connect_model) by framing this as data inspection, but it never names an alternative sibling explicitly.

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?

'Use it to inspect data and verify visual bindings' gives a concrete use context, and the closing clause rules out two adjacent use cases (XMLA commands, persistent model changes). It stops short of naming which sibling to use instead when the agent actually wants schema or connection setup.

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