> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Power BI

> Read access to Microsoft Power BI for your AI: workspaces, reports, dashboards, datasets with schema and refresh history, and DAX queries against your numbers. Twelve read-only tools.

*[Læs siden på dansk](https://docs.consile.ai/connectors/power-bi.md)*

The Power BI connector gives your AI read-only access to Microsoft Power BI. Your AI
can find your workspaces, reports and dashboards, read a dataset's tables, columns
and measures, and fetch the numbers straight from the dataset with a DAX query. Then
it can answer questions like "what was revenue per region in Q3" with the numbers
your reports are built on. You connect with your Microsoft work account, and your AI
never sees the access itself.

> [card] Access
>
> Read-only, read permissions only

> [card] Authentication
>
> Microsoft work account

> [card] Hosting
>
> Hosted in the EU · Frankfurt

* **Price:** 299 DKK/month excl. VAT (€39/month if you have chosen the EU · EUR
  market in the portal). No lock-in, cancel at any time. The price covers 1 user and
  1 agreement (one connected Microsoft user). Each extra user and each extra
  agreement costs 149.50 DKK/month excl. VAT (€19.50). Also included in
  [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md) and
  [the free edition](https://docs.consile.ai/en/portal/free-edition.md). See [Pricing](https://docs.consile.ai/en/portal/pricing.md).
* **Users:** whoever buys Power BI automatically gets the included access. If more
  colleagues need Power BI in their AI, an administrator gives them access under
  **Team** in the portal (choose **All tools** next to Power BI on the person's
  page). An extra user is billed pro rata from the day access is given. A colleague
  without access can still see the tools in their AI, but every lookup is refused
  with a message to ask an administrator for access. If you have
  [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md), an administrator instead
  gives one membership licence per person, and it also covers Power BI. See
  [Team](https://docs.consile.ai/en/portal/team.md).
* **Multiple Microsoft users and tenants:** the portal calls each connection to the
  system an agreement. One agreement is one connected Microsoft user and covers the
  workspaces that user has access to. You need one more agreement if your AI should
  also see things with another user's access, or if you have Power BI in several
  Microsoft tenants. An administrator clicks **Add agreement** on the
  **Connections** card on the connector's page in the portal. Each agreement gets
  its own address, for example `https://mcp.consile.ai/power-bi-2/mcp`, which you
  add as a separate connector in your AI. Under
  [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md#one-more-agreement-in-a-system)
  and in [the free edition](https://docs.consile.ai/en/portal/free-edition.md), other rules apply to adding an agreement. See
  [Connect Power BI](https://docs.consile.ai/en/connect/connect-power-bi.md#multiple-microsoft-users-and-tenants).
* **Endpoint:** `https://mcp.consile.ai/power-bi/mcp` (your own named connector in
  your AI).

## What does it require?

* **Power BI in Microsoft's cloud.** The connector reads from the Power BI service
  (app.powerbi.com) through the Power BI REST API.
* **A Microsoft work or school account.** You log in with an account in your
  organization at Microsoft. A personal Microsoft account cannot be used.
* **A Power BI user with access.** Your AI only sees the workspaces, reports and
  datasets that the connected user can see in Power BI. For your AI to run DAX
  queries against a dataset, the user needs Build permission on that dataset.
* **Often an administrator's approval.** In many organizations, Microsoft requires
  an administrator to approve the Power BI permissions. See
  [Connect Power BI](https://docs.consile.ai/en/connect/connect-power-bi.md#if-microsoft-asks-for-administrator-approval).

## Prerequisites

**1. Subscription**

The connector must be bought in the [portal](https://app.consile.ai). See
[Buy a connector](https://docs.consile.ai/en/portal/buy-a-connector.md).

**2. Microsoft approved**

Log in with your Microsoft work account, and approve Consile at Microsoft. The
connection applies to your whole Consile account. See
[Connect Power BI](https://docs.consile.ai/en/connect/connect-power-bi.md).

**3. Access for your user**

If there are several users on the account, an administrator must assign you
Power BI under **Team** in the portal. Whoever bought the connector has access
from the start. If you have created your own Consile account, but belong to a
company that already has Power BI, ask your administrator for an invitation to
the team instead of buying again. See [Team](https://docs.consile.ai/en/portal/team.md).

**4. Your AI connected**

Each user adds the connector in their own AI and logs in with their own Consile
login. See [Connect Claude](https://docs.consile.ai/en/connect/connect-claude.md) or
[Connect ChatGPT](https://docs.consile.ai/en/connect/connect-chatgpt.md).

## Read-only

All the permissions you approve at Microsoft are pure read permissions:
`Workspace.Read.All`, `Report.Read.All`, `Dataset.Read.All`, `Dashboard.Read.All`,
`App.Read.All` and `Dataflow.Read.All`, plus `offline_access`, which keeps the
connection alive. In addition:

* The connector has no write tools. All twelve tools can only read.
* Consile only sends read requests to Power BI.
* DAX queries can only read. A query must start with `EVALUATE` (optionally with
  `DEFINE` in front), and it cannot change a dataset.
* If Microsoft's approval contains permissions for anything other than Power BI,
  the connection is refused.

Consile does not store data from Power BI. Each answer is fetched directly when your
AI asks.

## Workspaces and "My workspace"

Power BI groups reports, dashboards and datasets in workspaces. Your AI finds them
with `list_workspaces`, which shows the workspaces the connected user is a member
of. The user's personal "My workspace" is not on the list. Your AI reads it by not
naming a workspace.

The numbers live in the dataset, not in the report. A report is a layout on top of
a dataset. So your AI typically finds the report or the dataset first, reads the
dataset's schema with `get_dataset_schema`, and then fetches the numbers with
`execute_dax_query`.

## What can it do? (tools)

You do not need to know the tool names. You ask in natural language, and your AI
picks the right one itself. The connector provides twelve read-only tools. When your
AI calls them, they are called `power-bi__<tool>` (for example
`power-bi__list_workspaces`).

**Workspaces and apps**

| Tool | What it does |
| - | - |
| `list_workspaces` | The workspaces the user is a member of, with the id the other tools use |
| `list_apps` | The Power BI apps the user has installed, with name, description, publisher and last update |
| `list_dataflows` | The dataflows in one workspace, with name, description, who set them up and when they were last changed |

**Reports and dashboards**

| Tool | What it does |
| - | - |
| `list_reports` | The reports in a workspace, with link, report type and the dataset the report is built on |
| `get_report` | One report with its pages. Does not show the visuals themselves |
| `list_dashboards` | The dashboards in a workspace, with name and link |
| `list_dashboard_tiles` | The tiles on a dashboard, with title and the report and dataset each tile comes from |

**Datasets**

| Tool | What it does |
| - | - |
| `list_datasets` | The datasets in a workspace, with owner, storage mode and whether they can be refreshed |
| `get_dataset` | One dataset with its data sources (for example server and database, never passwords) and its latest 5 refreshes |
| `get_dataset_schema` | The dataset's tables, columns with data type, and measures with their DAX expressions |
| `execute_dax_query` | A DAX query against a dataset that returns the rows. 200 rows by default, at most 2,000 |
| `list_dataset_refresh_history` | The dataset's refresh history, newest first: type, status, start and end |

> [card] [Building on top yourself? See the API reference](https://docs.consile.ai/developers/tools/power-bi.md)
>
> Full reference with the twelve tools, arguments, result fields, DAX rules and
> error messages.

## Try asking

> [accordion] Numbers from a dataset
>
> > *"What was revenue per region in Q3 according to the Sales dataset, and how does it compare with Q2?"*
>
> > *"Find the ten customers with the highest revenue this year in the Sales dataset."*

> [accordion] Reports and dashboards
>
> > *"Which reports exist in the Management workspace, and which dataset is each of them built on?"*
>
> > *"Which tiles are on our sales dashboard, and where do the numbers come from?"*

> [accordion] Refreshes and data sources
>
> > *"When were the datasets in the Management workspace last refreshed, and are any refreshes failing?"*
>
> > *"Where does the Sales dataset get its data from?"*

> [!TIP]
>
> Mention the workspace and the name of the dataset or report in your question. Ask
> for totals and top lists rather than all rows. Then the answer is faster, and your
> AI gets all of it.

## Limitations

* **Read-only:** the connector cannot create, change, delete or refresh anything in
  Power BI. It cannot start a dataset refresh either.
* **Work accounts only:** personal Microsoft accounts are not supported.
* **The user's access applies:** your AI only sees the workspaces the connected user
  is a member of, and only the apps the user has installed. If the user lacks access
  to a workspace or Build permission on a dataset, Power BI answers with an error
  (403), and your AI is told about it. Reconnecting does not help. Instead, ask the
  owner of the workspace for access.
* **No visuals:** the connector does not show report pages or tiles as images. Your
  AI reads the numbers from the dataset with a DAX query.
* **Large answers are cut off:** `execute_dax_query` returns 200 rows by default and
  at most 2,000. If there are more, the rest are cut off, and the answer says so. Ask
  for totals or a top list instead. A DAX query may be at most 20,000 characters.
* **The schema needs a current dataset:** `get_dataset_schema` does not work on push
  datasets or very old datasets. Your AI is told so, and a hand-written DAX query
  still works. Long DAX expressions for measures only show the first 500 characters.
* **Dataflows only in workspaces:** `list_dataflows` needs a workspace. Dataflows do
  not exist in "My workspace".
* **Apps and dataflows can be turned off:** if your organization has turned off
  apps or dataflows in Power BI, `list_apps` or `list_dataflows` answers with an
  error (403). The other tools work as normal.
* **Refresh history:** a dataset that cannot be refreshed (for example DirectQuery
  or a live connection) has no history.
* **Microsoft's call limit:** Power BI limits how many calls can be sent. If a
  lookup hits the limit, your AI is told to wait a little and ask for fewer rows.
* **Explanatory errors, but not always:** for the common errors, the connector gives
  your AI an explanation: an access that must be connected again, missing access, an
  id that does not exist, and a query that Power BI refuses, for example a DAX error.
  Other errors, for example a timeout or an error at Microsoft, only give the general
  error "Tool invocation failed."
* **The access is renewed automatically, but can stop:** if the renewal fails, or
  Consile is removed in your Microsoft organization, your AI is told that the
  connection must be set up again from the Consile portal. The portal can still show
  **Connected**, because the stored access is still there. Only an administrator can
  reconnect: if the agreement says **Access revoked**, click **Reconnect**. Otherwise
  the administrator chooses **Disconnect** in the menu next to the agreement and then
  clicks **Connect**. You can also ask your AI for a new connection link in the
  connector that belongs to the agreement (for example `power-bi-2`). See
  [Connect Power BI](https://docs.consile.ai/en/connect/connect-power-bi.md#the-access-is-renewed-but-the-connection-can-stop).

Is something not working as expected? See [Troubleshooting](https://docs.consile.ai/en/troubleshooting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.