Skip to Content
ResourcesIntegrationsProductivity & DocsMicrosoft Power BI

Microsoft Power BI

Service domainBUSINESS INTELLIGENCE
Microsoft Power BI icon
Arcade Optimized

Arcade MCP toolkit for Microsoft Power BI

Author:Arcade
Version:0.3.0
Auth:User authorization via the Microsoft-powerbi auth provider
15tools

Microsoft Power BI toolkit for Arcade provides OAuth-authenticated access to Power BI workspaces, semantic models, reports, gateways, and DAX query execution via the Power BI REST API.

Capabilities

  • Workspace & access management: List workspaces, enumerate workspace members with roles, and identify which account the toolkit is acting as.
  • Report & dataset discovery: List and retrieve reports and semantic models; inspect a dataset's data sources, parameters, refresh schedule, and ownership in a single call.
  • Schema introspection & DAX: Retrieve the full table/column/measure structure of a semantic model, validate DAX before running it, and execute EVALUATE queries with paginated, size-bounded result rows.
  • Refresh lifecycle: Trigger on-demand refreshes, poll refresh history with terminal/non-terminal status tracking, and diagnose gateway reachability for failed refreshes.
  • Dataset configuration: Patch dataset parameters and refresh schedule in one request with auditable before/after values; gateway listing for administration.

OAuth

This toolkit uses OAuth 2.0 via the Microsoft Power BI provider. Arcade handles the OAuth flow; see the provider docs for scopes and setup: šŸ‘‰ Microsoft Power BI auth provider

Available tools(15)

15 of 15 tools
Operations
Behavior
Tool nameDescriptionSecrets
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.
Last updated on