Microsoft Power BI
Service domainBUSINESS INTELLIGENCE
Arcade Optimized
Arcade MCP toolkit for Microsoft Power BI
15tools
Microsoft Power BI toolkit for Arcade enables AI agents and developers to query, inspect, manage, and refresh Power BI semantic models, reports, workspaces, and gateways through the Power BI REST API.
Capabilities
- Workspace & access management: List workspaces, enumerate workspace members with their roles, and identify the authenticated user identity for pre-flight checks.
- Report & dataset discovery: List and retrieve reports and semantic models (datasets), including paginated browsing across large workspaces.
- Schema inspection & DAX execution: Fetch full semantic model schemas (tables, columns, measures, relationships) to compose valid DAX; run
EVALUATEqueries against live data; validate DAX syntax without returning rows. - Dataset diagnostics: Inspect a dataset's data sources, parameters, refresh schedule, and owner in a single call; check gateway/data-source reachability; retrieve paginated refresh history with terminal-state tracking.
- Refresh & settings management: Trigger on-demand semantic model refreshes; update dataset parameters and refresh schedules with patch semantics, with before/after audit values returned.
- Gateway management: List administered data gateways and their identifiers for downstream configuration and health checks.
OAuth
This toolkit uses OAuth 2.0 delegated authentication via the Microsoft Power BI provider. Arcade handles the OAuth flow; see the Microsoft Power BI auth provider docs for setup details, required permissions, and configuration.
Available tools(15)
15 of 15 tools
Operations
Behavior
| Tool name | Description | Secrets | |
|---|---|---|---|
Report whether each of a dataset's gateway-bound data sources is currently
reachable.
Point this at a dataset whose refresh failed to tell whether the gateway path is
healthy before escalating. Stored credentials are never returned. | |||
Get the most recent refresh runs of a semantic model, with status and timing.
Returns each run newest first with its status, type, start/end time, and any error.
Power BI reports a run's status as 'Unknown' while it is still in progress or its
outcome is not yet known, so each run also carries `is_terminal`: false while the run
is still running (status 'Unknown'), true once it has settled ('Completed', 'Failed',
or 'Disabled'). Re-poll this tool while the newest run is not terminal to obtain its
final status. | |||
Get a single Power BI report's detail, including the semantic model (dataset) it is built on. | |||
Get the full structure of a Power BI semantic model.
Returns each table with its columns and measures and the relationships between tables,
so a caller can compose valid DAX that references real table and column names. Each
measure carries its DAX expression when the model exposes it; a read-only caller may
not receive measure formulas, in which case expression_available is false. | |||
Inspect one dataset in a single call: where it pulls data from, what parameters
drive it, when it refreshes, and its core detail (owner, storage mode, refreshable).
Use this to diagnose a dataset that "looks wrong" without three separate calls.
Stored credentials are never returned for any data source. | |||
List the Power BI semantic models (datasets) in a workspace.
Results are paginated: when next_cursor is non-empty, pass it back verbatim to fetch
the next page. | |||
List the data gateways the caller administers, with the id needed to reference
each one. | |||
List the Power BI reports in a workspace, each with the semantic model (dataset) it is built on.
Results are paginated: when next_cursor is non-empty, pass it back verbatim to fetch
the next page. | |||
List who can access a workspace and the role each principal holds, for an
access review.
A single call returns one consistent snapshot of the page it serves, in a stable
sorted order (by principal identifier) so pages are deterministic. The default limit
is the maximum (50), so a definitive access review should fit in one page; when
next_cursor is non-empty the listing was truncated and multi-page reads are best-effort
(membership changes between pages can skip or duplicate principals) -- the warning field
flags this. Only what the Power BI portal itself shows for a member is returned; no
secrets. | |||
List the Power BI workspaces (groups) the calling user can access.
Returns each workspace's id and name. Results are paginated: when next_cursor is
non-empty, pass it back verbatim to fetch the next page. | |||
Run a DAX query against a semantic model and return the rows as structured data.
The query must be a DAX EVALUATE statement, for example:
EVALUATE TOPN(100, 'Sales')
EVALUATE SUMMARIZECOLUMNS('Date'[Year], "Revenue", SUM('Sales'[Amount]))
EVALUATE FILTER('Product', 'Product'[Category] = "Bikes")
Results are capped at max_rows and a size budget; when capped, truncated is true,
so narrow the query rather than assume the rows are complete. columns lists the full
projection the query returned even when a wide row is size-trimmed, so a column may
appear in columns without a matching key in every returned row. Invalid DAX is
reported as a clear error. | |||
Start an on-demand refresh of a semantic model.
A refresh can take a long time (minutes or more for a large model), so this
returns as soon as the refresh is accepted rather than waiting for it to finish.
The run's progress and final success or failure are recorded in the model's
refresh history. | |||
Repoint a dataset's parameters and/or change its refresh timing in one request.
Upsert/patch semantics: only the fields supplied are applied; everything else is
left untouched. Setting a parameter the dataset does not define is refused with the
list of parameter names it actually exposes, rather than reported as a false success.
Power BI ignores day/time edits while scheduled refresh is disabled, so set
refresh_enabled=true in the same call when you want new times to take effect.
Each applied parameter is returned with the previous_value observed just before the
write, so the change is auditable and the prior value can be restored. A committed
parameter change only updates the model definition -- run trigger_dataset_refresh
afterwards so query and report results reflect the new values. | |||
Check whether a DAX query is valid for a semantic model without returning its rows.
Returns valid=true when the query is accepted, or valid=false with a short error
when it is not. Transient, auth, and server errors are raised (not reported as
invalid) so the caller retries rather than rewriting valid DAX. | |||
Report the Microsoft account the toolkit is acting as: id, name, UPN, and tenant.
Use this to confirm which user the current connection authenticates as before
reading or changing anything. Identity is read from the signed-in user's own Power
BI access token (Power BI has no current-user endpoint); it is for display and
confirmation only, not an authorization decision, and the fields are best-effort.
Because identity is derived from the token's claims, it is unavailable when Microsoft
issues an opaque or encrypted (non-JWT) access token -- Microsoft is rolling out
encrypted access tokens for Microsoft-owned APIs -- in which case this tool fails with
a clear error while every other Power BI tool keeps working. |
Get Building
Last updated on