> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Microsoft Power BI

The Microsoft Power BI connector lets your AI agent act in each user's Microsoft Power BI account. Each user signs in to Microsoft Power BI once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 77 tools.

**Authentication:** OAuth 2.0
**Categories:** Analytics, Productivity
**Tools:** 77: 56 read, 21 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Microsoft Power BI app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=MICROSOFTPOWERBI)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Microsoft Power BI connection

   In **AgentKit > Connections**, create a Microsoft Power BI connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Microsoft Power BI connections use your own OAuth app. Register one with Microsoft Power BI and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Microsoft Power BI connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'microsoftpowerbi'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Microsoft Power BI:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'microsoftpowerbi_apps_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "microsoftpowerbi"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Microsoft Power BI:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="microsoftpowerbi_apps_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'microsoftpowerbi_app_dashboard_get',
  toolInput: {
    app_id: '<app_id>',
    dashboard_id: '<dashboard_id>',
  },
  connector: 'microsoftpowerbi',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="microsoftpowerbi_app_dashboard_get",
    tool_input={
        "app_id": "<app_id>",
        "dashboard_id": "<dashboard_id>",
    },
    connection_name="microsoftpowerbi",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `microsoftpowerbi_app_dashboard_get`

Get App Dashboard · Read-only

Get one dashboard from an installed Power BI app.
Returns the dashboard id, displayName, embedUrl, isReadOnly, and appId.
Use this when you have both IDs. Use microsoftpowerbi_app_dashboard_tiles_list to see its tiles.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.
- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_app_dashboards_list.

Example input: `{"app_id":"<app_id>","dashboard_id":"<dashboard_id>"}`

### `microsoftpowerbi_app_dashboard_tiles_list`

List App Dashboard Tiles · Read-only

List the tiles on a dashboard in an installed Power BI app.
Returns each tile's id, title, subTitle, embedUrl, rowSpan, colSpan, reportId, and datasetId.
Use this for app dashboards. Use microsoftpowerbi_dashboard_tiles_list for dashboards in a workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.
- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_app_dashboards_list.

Example input: `{"app_id":"<app_id>","dashboard_id":"<dashboard_id>"}`

### `microsoftpowerbi_app_dashboards_list`

List App Dashboards · Read-only

List the dashboards published in an installed Power BI app.
Returns each dashboard's id, displayName, embedUrl, isReadOnly, and appId.
Use this for app content. Use microsoftpowerbi_dashboards_list for dashboards in a workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.

Example input: `{"app_id":"<app_id>"}`

### `microsoftpowerbi_app_get`

Get App · Read-only

Get one installed Power BI app.
Returns the app id, name, description, publishedBy, lastUpdate, and workspaceId.
Use this when you have an app_id. Use microsoftpowerbi_apps_list to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.

Example input: `{"app_id":"<app_id>"}`

### `microsoftpowerbi_app_report_get`

Get App Report · Read-only

Get one report from an installed Power BI app.
Returns the report id, name, webUrl, embedUrl, datasetId, and appId.
Use this when you have both IDs. Use microsoftpowerbi_app_reports_list to find the report_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.
- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_app_reports_list.

Example input: `{"app_id":"<app_id>","report_id":"<report_id>"}`

### `microsoftpowerbi_app_reports_list`

List App Reports · Read-only

List the reports published in an installed Power BI app.
Returns each report's id, name, webUrl, embedUrl, datasetId, and appId.
Use this for app content. Use microsoftpowerbi_reports_list for reports in a workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): ID (GUID) of the app. Get it from microsoftpowerbi_apps_list.

Example input: `{"app_id":"<app_id>"}`

### `microsoftpowerbi_apps_list`

List Apps · Read-only

List the Power BI apps installed for the connected user.
Returns each app's id, name, description, publishedBy, lastUpdate, and workspaceId.
Use this to find an app_id. Use microsoftpowerbi_app_reports_list or microsoftpowerbi_app_dashboards_list to see its content.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_available_features_list`

List Available Features · Read-only

List the Power BI features available to the connected user and whether each is on.
Returns each feature's name, state (Enabled or Disabled), and extendedState.
Use this to check what the user's tenant and license allow before calling other tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_capacities_list`

List Capacities · Read-only

List the Power BI and Fabric capacities the connected user can access.
Returns each capacity's id, displayName, sku, state, region, and admins.
Use this to find a capacity_id. Use microsoftpowerbi_capacity_workloads_list to see its workload settings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_capacity_refreshables_list`

List Capacity Refreshables · Read-only

List the refreshable items (semantic models with scheduled refresh) on a Power BI Premium capacity, with refresh statistics.
Returns each refreshable's id, name, kind, refreshCount, refreshFailures, averageDuration, lastRefresh, and refreshSchedule.
Use this to find slow or failing refreshes. Use microsoftpowerbi_dataset_refresh_history_list for one model's history.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `capacity_id` (`string`, required): ID (GUID) of the capacity. Get it from microsoftpowerbi_capacities_list.
- `top` (`integer`, required): Number of refreshables to return (OData $top). Required by the API.
- `expand` (`string`, optional): Related data to include inline: capacities, groups, or both as a comma-separated list.
- `filter` (`string`, optional): OData $filter expression on refreshable properties, for example averageDuration gt 1800.
- `skip` (`integer`, optional): Number of refreshables to skip before returning results (OData $skip). Use with top to page through results.

Example input: `{"capacity_id":"<capacity_id>","top":1}`

### `microsoftpowerbi_capacity_workloads_list`

List Capacity Workloads · Read-only

List the workloads of a Power BI Premium or Fabric capacity and their state.
Returns each workload's name, state (Enabled, Disabled, or Unsupported), and maxMemoryPercentageSetByUser.
Use this to check capacity configuration. Use microsoftpowerbi_capacity_refreshables_list for refresh activity.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `capacity_id` (`string`, required): ID (GUID) of the capacity. Get it from microsoftpowerbi_capacities_list.

Example input: `{"capacity_id":"<capacity_id>"}`

### `microsoftpowerbi_dashboard_get`

Get Dashboard · Read-only

Get one dashboard from a Power BI workspace.
Returns the dashboard id, displayName, webUrl, embedUrl, and isReadOnly.
Use this when you have a dashboard_id. Use microsoftpowerbi_dashboard_tiles_list to see what is on it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_dashboards_list. It also appears in the Power BI URL after /dashboards/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dashboard_id":"<dashboard_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dashboard_tile_get`

Get Dashboard Tile · Read-only

Get one tile from a Power BI dashboard.
Returns the tile id, title, subTitle, embedUrl, embedData, rowSpan, colSpan, reportId, and datasetId.
Use this when you have a tile_id. Use microsoftpowerbi_dashboard_tiles_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_dashboards_list. It also appears in the Power BI URL after /dashboards/.
- `tile_id` (`string`, required): ID (GUID) of the tile. Get it from microsoftpowerbi_dashboard_tiles_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dashboard_id":"<dashboard_id>","tile_id":"<tile_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dashboard_tiles_list`

List Dashboard Tiles · Read-only

List the tiles on a Power BI dashboard.
Returns each tile's id, title, subTitle, embedUrl, rowSpan, colSpan, reportId, and datasetId.
Use this to see a dashboard's content. Use microsoftpowerbi_dashboard_tile_get for one tile.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_dashboards_list. It also appears in the Power BI URL after /dashboards/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dashboard_id":"<dashboard_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dashboards_list`

List Dashboards · Read-only

List the dashboards in a Power BI workspace.
Returns each dashboard's id, displayName, webUrl, embedUrl, and isReadOnly.
Use this to find a dashboard_id. Use microsoftpowerbi_my_workspace_dashboards_list for the personal My workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_datasources_list`

List Dataflow Data Sources · Read-only

List the data sources a Power BI dataflow reads from.
Returns each source's datasourceType, connectionDetails, datasourceId, and gatewayId.
Use this to see where a dataflow's data comes from. Use microsoftpowerbi_dataset_datasources_list for semantic models.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_get`

Get Dataflow Definition · Read-only

Export the definition of a Power BI dataflow.
Returns the dataflow's model.json content: name, entities (tables) with their attributes, and the Power Query (M) document.
Use this to inspect how a dataflow is built. Use microsoftpowerbi_dataflows_list to find the dataflow_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_transactions_list`

List Dataflow Refreshes · Read-only

List the refresh transactions of a Power BI dataflow.
Returns each transaction's id, refreshType, startTime, endTime, and status.
Use this to check dataflow refresh results. Use microsoftpowerbi_dataflow_refresh to start a refresh.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_upstream_dataflows_list`

List Upstream Dataflows · Read-only

List the dataflows that a Power BI dataflow depends on.
Returns each upstream dataflow's targetDataflowId and groupId.
Use this to trace dataflow lineage. Use microsoftpowerbi_dataset_upstream_dataflows_list for model-to-dataflow links.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflows_list`

List Dataflows · Read-only

List the dataflows in a Power BI workspace.
Returns each dataflow's objectId, name, description, configuredBy, and modelUrl.
Use this to find a dataflow_id. Use microsoftpowerbi_dataflow_get for a dataflow's full definition.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_datasources_list`

List Semantic Model Data Sources · Read-only

List the data sources a Power BI semantic model (dataset) connects to.
Returns each source's datasourceType, connectionDetails (server, database, url, path), datasourceId, and gatewayId.
Use this to see where a model's data comes from. Use microsoftpowerbi_gateway_datasources_list for sources defined on a gateway.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_get`

Get Semantic Model · Read-only

Get one semantic model (dataset) from a Power BI workspace.
Returns the model id, name, configuredBy, isRefreshable, isEffectiveIdentityRequired, targetStorageMode, createdDate, and webUrl.
Use this when you have a dataset_id. Use microsoftpowerbi_datasets_list to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_parameters_list`

List Semantic Model Parameters · Read-only

List the Power Query parameters defined in a Power BI semantic model (dataset).
Returns each parameter's name, type, currentValue, isRequired, and suggestedValues.
Use this before changing parameters. Use microsoftpowerbi_dataset_parameters_update to set new values.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_refresh_details_get`

Get Semantic Model Refresh Details · Read-only

Get the execution details of one enhanced refresh of a Power BI semantic model (dataset).
Returns the refresh status, type, start and end times, the objects processed with their status, and any messages.
Use this for enhanced refreshes started with options. Use microsoftpowerbi_dataset_refresh_history_list to find the refresh ID and to check standard refreshes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `refresh_id` (`string`, required): ID of the refresh: the requestId from List Semantic Model Refreshes, or the ID at the end of the Location header returned by Refresh Semantic Model.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","refresh_id":"<refresh_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_refresh_history_list`

List Semantic Model Refreshes · Read-only

List the refresh history of a Power BI semantic model (dataset), newest first.
Returns each refresh's requestId, refreshType, status (Unknown while running, Completed, Failed, Disabled, or Cancelled), startTime, endTime, and serviceExceptionJson.
Use this to check whether a refresh succeeded. Use microsoftpowerbi_dataset_refresh_details_get for per-table detail of an enhanced refresh.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `top` (`integer`, optional): Maximum number of refresh entries to return (OData $top). Defaults to the last 60 entries.

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_refresh_schedule_get`

Get Semantic Model Refresh Schedule · Read-only

Get the scheduled refresh settings of a Power BI semantic model (dataset) in import mode.
Returns days, times, enabled, localTimeZoneId, and notifyOption.
Use this to read the schedule. Use microsoftpowerbi_dataset_refresh_schedule_update to change it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_upstream_dataflows_list`

List Semantic Model Dataflow Links · Read-only

List which dataflows feed each semantic model (dataset) in a Power BI workspace.
Returns links with datasetObjectId, dataflowObjectId, and workspaceObjectId.
Use this to trace model lineage. Use microsoftpowerbi_dataflow_upstream_dataflows_list for dataflow-to-dataflow lineage.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_users_list`

List Semantic Model Users · Read-only

List the principals that have direct access to a Power BI semantic model (dataset).
Returns each principal's identifier, displayName, emailAddress, principalType, and datasetUserAccessRight.
Use this to audit model sharing. Use microsoftpowerbi_dataset_user_add to grant access.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_datasets_list`

List Semantic Models · Read-only

List the semantic models (datasets) in a Power BI workspace.
Returns each model's id, name, configuredBy, isRefreshable, targetStorageMode, and webUrl.
Use this to find a dataset_id. Use microsoftpowerbi_my_workspace_datasets_list for the personal My workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_gateway_datasource_get`

Get Gateway Data Source · Read-only

Get one data source defined on an on-premises data gateway.
Returns the source id, datasourceName, datasourceType, connectionDetails, and credentialType.
Use this when you have both IDs. Use microsoftpowerbi_gateway_datasources_list to find the datasource_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `datasource_id` (`string`, required): ID (GUID) of the gateway data source. Get it from microsoftpowerbi_gateway_datasources_list.
- `gateway_id` (`string`, required): ID (GUID) of the on-premises data gateway. For a gateway cluster, use the ID of the primary (first) gateway, which matches the cluster ID. Get it from microsoftpowerbi_gateways_list.

Example input: `{"datasource_id":"<datasource_id>","gateway_id":"<gateway_id>"}`

### `microsoftpowerbi_gateway_datasource_status_get`

Check Gateway Data Source Status · Read-only

Test the connection of a data source on an on-premises data gateway.
Returns an empty 200 response when the gateway can reach the source, or an error describing the failure.
Use this to troubleshoot refresh failures. Use microsoftpowerbi_gateway_datasource_get for the source's settings.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `datasource_id` (`string`, required): ID (GUID) of the gateway data source. Get it from microsoftpowerbi_gateway_datasources_list.
- `gateway_id` (`string`, required): ID (GUID) of the on-premises data gateway. For a gateway cluster, use the ID of the primary (first) gateway, which matches the cluster ID. Get it from microsoftpowerbi_gateways_list.

Example input: `{"datasource_id":"<datasource_id>","gateway_id":"<gateway_id>"}`

### `microsoftpowerbi_gateway_datasource_users_list`

List Gateway Data Source Users · Read-only

List who can use a data source on an on-premises data gateway.
Returns each principal's identifier, displayName, emailAddress, principalType, and datasourceAccessRight.
Use this to audit gateway access. Use microsoftpowerbi_gateway_datasources_list to find the datasource_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `datasource_id` (`string`, required): ID (GUID) of the gateway data source. Get it from microsoftpowerbi_gateway_datasources_list.
- `gateway_id` (`string`, required): ID (GUID) of the on-premises data gateway. For a gateway cluster, use the ID of the primary (first) gateway, which matches the cluster ID. Get it from microsoftpowerbi_gateways_list.

Example input: `{"datasource_id":"<datasource_id>","gateway_id":"<gateway_id>"}`

### `microsoftpowerbi_gateway_datasources_list`

List Gateway Data Sources · Read-only

List the data sources defined on an on-premises data gateway.
Returns each source's id, datasourceName, datasourceType, connectionDetails, and credentialType.
Use this to see what a gateway connects to. Use microsoftpowerbi_gateway_datasource_status_get to test a connection.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gateway_id` (`string`, required): ID (GUID) of the on-premises data gateway. For a gateway cluster, use the ID of the primary (first) gateway, which matches the cluster ID. Get it from microsoftpowerbi_gateways_list.

Example input: `{"gateway_id":"<gateway_id>"}`

### `microsoftpowerbi_gateway_get`

Get Gateway · Read-only

Get one on-premises data gateway the connected user is an admin of.
Returns the gateway id, name, type, gatewayStatus, gatewayAnnotation, and publicKey.
Use this when you have a gateway_id. Use microsoftpowerbi_gateways_list to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gateway_id` (`string`, required): ID (GUID) of the on-premises data gateway. For a gateway cluster, use the ID of the primary (first) gateway, which matches the cluster ID. Get it from microsoftpowerbi_gateways_list.

Example input: `{"gateway_id":"<gateway_id>"}`

### `microsoftpowerbi_gateways_list`

List Gateways · Read-only

List the on-premises data gateways the connected user is an admin of.
Returns each gateway's id, name, type, gatewayStatus, and publicKey.
Use this to find a gateway_id. Use microsoftpowerbi_gateway_datasources_list to see its data sources.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_import_get`

Get Import · Read-only

Get the status of one file import into a Power BI workspace.
Returns the import id, name, importState (Publishing, Succeeded, or Failed), and the reports and semantic models it created.
Use this to check whether an upload finished. Use microsoftpowerbi_imports_list to find the import_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `import_id` (`string`, required): ID (GUID) of the import. Get it from microsoftpowerbi_imports_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"import_id":"<import_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_imports_list`

List Imports · Read-only

List the file imports (for example .pbix uploads) made into a Power BI workspace.
Returns each import's id, name, importState (Publishing, Succeeded, or Failed), createdDateTime, and the reports and semantic models it created.
Use this to audit uploads. Use microsoftpowerbi_import_get to check one import.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_my_workspace_dashboards_list`

List My Workspace Dashboards · Read-only

List the dashboards in the connected user's personal My workspace.
Returns each dashboard's id, displayName, webUrl, embedUrl, and isReadOnly.
Use this for personal content. Use microsoftpowerbi_dashboards_list for dashboards in a shared workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_my_workspace_datasets_list`

List My Workspace Semantic Models · Read-only

List the semantic models (datasets) in the connected user's personal My workspace.
Returns each model's id, name, configuredBy, isRefreshable, targetStorageMode, and webUrl.
Use this for personal content. Use microsoftpowerbi_datasets_list for semantic models in a shared workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_my_workspace_reports_list`

List My Workspace Reports · Read-only

List the reports in the connected user's personal My workspace.
Returns each report's id, name, webUrl, embedUrl, datasetId, and reportType.
Use this for personal content. Use microsoftpowerbi_reports_list for reports in a shared workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_pipeline_get`

Get Deployment Pipeline · Read-only

Get one Power BI deployment pipeline, optionally with its stages.
Returns the pipeline id, displayName, description, and, when expanded, each stage's order and assigned workspace.
Use this when you have a pipeline_id. Use microsoftpowerbi_pipelines_list to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.
- `expand` (`string`, optional): Set to stages to include the pipeline's stages in the response. One of: `stages`.

Example input: `{"pipeline_id":"<pipeline_id>"}`

### `microsoftpowerbi_pipeline_operation_get`

Get Deployment Pipeline Operation · Read-only

Get the details of one deploy operation of a Power BI deployment pipeline.
Returns the operation id, status, source and target stages, timing, and the deployment steps for each item.
Use this to check a deployment started with microsoftpowerbi_pipeline_deploy_all. Use microsoftpowerbi_pipeline_operations_list to find the operation_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `operation_id` (`string`, required): ID of the deploy operation, from List Deployment Pipeline Operations or the Deploy All response.
- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.

Example input: `{"operation_id":"<operation_id>","pipeline_id":"<pipeline_id>"}`

### `microsoftpowerbi_pipeline_operations_list`

List Deployment Pipeline Operations · Read-only

List the last 20 deploy operations of a Power BI deployment pipeline.
Returns each operation's id, type, status, sourceStageOrder, targetStageOrder, executionStartTime, and executionEndTime.
Use this to review deployment history. Use microsoftpowerbi_pipeline_operation_get for one operation's item-level detail.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.

Example input: `{"pipeline_id":"<pipeline_id>"}`

### `microsoftpowerbi_pipeline_stage_artifacts_list`

List Deployment Pipeline Stage Items · Read-only

List the items (reports, dashboards, semantic models, dataflows) in one stage of a Power BI deployment pipeline.
Returns the stage's datasets, reports, dashboards, and dataflows with their artifactId, artifactDisplayName, sourceArtifactId, and lastDeploymentTime.
Use this before deploying. Use microsoftpowerbi_pipeline_stages_list to see the stages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.
- `stage_order` (`integer`, required): Numeric order of the deployment pipeline stage: 0 = Development, 1 = Test, 2 = Production. One of: `0`, `1`, `2`.

Example input: `{"pipeline_id":"<pipeline_id>","stage_order":0}`

### `microsoftpowerbi_pipeline_stages_list`

List Deployment Pipeline Stages · Read-only

List the stages of a Power BI deployment pipeline.
Returns each stage's order (0 Development, 1 Test, 2 Production), workspaceId, and workspaceName.
Use this to see which workspace backs each stage. Use microsoftpowerbi_pipeline_stage_artifacts_list for a stage's content.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.

Example input: `{"pipeline_id":"<pipeline_id>"}`

### `microsoftpowerbi_pipeline_users_list`

List Deployment Pipeline Users · Read-only

List the users, groups, and apps with access to a Power BI deployment pipeline.
Returns each principal's identifier, principalType, and accessRight.
Use this to audit pipeline access. Use microsoftpowerbi_pipelines_list to find the pipeline_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.

Example input: `{"pipeline_id":"<pipeline_id>"}`

### `microsoftpowerbi_pipelines_list`

List Deployment Pipelines · Read-only

List the deployment pipelines the connected user can access.
Returns each pipeline's id, displayName, and description.
Use this to find a pipeline_id. Use microsoftpowerbi_pipeline_get with expand set to stages to see its stages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `microsoftpowerbi_push_dataset_tables_list`

List Push Semantic Model Tables · Read-only

List the tables of a push semantic model (dataset).
Returns each table's name.
Use this to find a table name before pushing rows. Works only on push semantic models created through the API.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_datasources_list`

List Report Data Sources · Read-only

List the data sources of a paginated report (RDL) in a Power BI workspace.
Returns each data source's datasourceType, connectionDetails, datasourceId, and gatewayId.
Use this for paginated reports only. Use microsoftpowerbi_dataset_datasources_list for Power BI reports, whose data sources live on the semantic model.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_get`

Get Report · Read-only

Get one report from a Power BI workspace.
Returns the report id, name, webUrl, embedUrl, datasetId, reportType, and owner details.
Use this when you have a report_id. Use microsoftpowerbi_reports_list to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_page_get`

Get Report Page · Read-only

Get one page of a Power BI report by its internal page name.
Returns the page name, displayName, and order.
Use this when you have a page name. Use microsoftpowerbi_report_pages_list to find it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_name` (`string`, required): Internal name of the report page (the name field from List Report Pages, not the display name). It also appears at the end of the report URL.
- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"page_name":"<page_name>","report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_pages_list`

List Report Pages · Read-only

List the pages in a Power BI report.
Returns each page's name (internal ID), displayName, and order.
Use this to see a report's structure. Use microsoftpowerbi_report_page_get for one page.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_reports_list`

List Reports · Read-only

List the reports in a Power BI workspace.
Returns each report's id, name, webUrl, embedUrl, datasetId, and reportType.
Use this to find a report_id. Use microsoftpowerbi_my_workspace_reports_list for the personal My workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspace_get`

Get Workspace · Read-only

Get one Power BI workspace by its ID.
Returns the workspace id, name, isReadOnly, isOnDedicatedCapacity, capacityId, and type.
Use this to check a single workspace. Use microsoftpowerbi_workspaces_list to search by name.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspace_users_list`

List Workspace Users · Read-only

List the users, groups, and apps that have a role in a Power BI workspace.
Returns each principal's identifier, displayName, emailAddress, principalType, and groupUserAccessRight (Admin, Member, Contributor, or Viewer).
Use this to audit workspace access. Use microsoftpowerbi_workspace_user_add to grant access.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `skip` (`integer`, optional): Number of users to skip before returning results (OData $skip). Use with top to page through results.
- `top` (`integer`, optional): Maximum number of users to return (OData $top).

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspaces_list`

List Workspaces · Read-only

List the Power BI workspaces the connected user can access, with optional OData filtering and paging.
Returns each workspace's id, name, isReadOnly, isOnDedicatedCapacity, capacityId, and type.
Use this to find a workspace_id for other tools. Use microsoftpowerbi_workspace_get when you already have the ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `filter` (`string`, optional): OData $filter expression to narrow the workspaces, for example contains(name,'Sales') or name eq 'Finance'.
- `skip` (`integer`, optional): Number of workspaces to skip before returning results (OData $skip). Use with top to page through results.
- `top` (`integer`, optional): Maximum number of workspaces to return (OData $top).

Example input: `{}`

### `microsoftpowerbi_dashboard_create`

Create Dashboard · Write

Create an empty dashboard in a Power BI workspace.
Returns the new dashboard's id, displayName, webUrl, and embedUrl.
Use this to start a dashboard. Use microsoftpowerbi_dashboard_tile_clone to copy tiles onto it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Display name of the new dashboard.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"name":"<name>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dashboard_tile_clone`

Clone Dashboard Tile · Write

Copy a tile from one Power BI dashboard to another dashboard, optionally rebinding it to a different report or semantic model.
Returns the new tile's id, title, and embed details.
Use this to reuse a visual across dashboards. Use microsoftpowerbi_dashboard_create first if the target dashboard does not exist.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dashboard_id` (`string`, required): ID (GUID) of the dashboard. Get it from microsoftpowerbi_dashboards_list. It also appears in the Power BI URL after /dashboards/.
- `target_dashboard_id` (`string`, required): ID (GUID) of the dashboard to copy the tile onto.
- `tile_id` (`string`, required): ID (GUID) of the tile. Get it from microsoftpowerbi_dashboard_tiles_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...). This is the workspace of the source dashboard.
- `position_conflict_action` (`string`, optional): What to do if the tile's position is already taken on the target dashboard: Tail places it at the end, Abort cancels the copy. Power BI uses Tail when blank. One of: `Tail`, `Abort`.
- `target_model_id` (`string`, optional): For a tile linked to a semantic model: ID of a different semantic model to bind the copied tile to. Leave blank to keep the original.
- `target_report_id` (`string`, optional): For a tile linked to a report: ID of a different report to bind the copied tile to. Leave blank to keep the original report.
- `target_workspace_id` (`string`, optional): Workspace (GUID) of the target dashboard. Use 00000000-0000-0000-0000-000000000000 for My workspace. Leave blank if it is the source workspace.

Example input: `{"dashboard_id":"<dashboard_id>","target_dashboard_id":"<target_dashboard_id>","tile_id":"<tile_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_refresh`

Refresh Dataflow · Write

Start a refresh of a Power BI dataflow.
Returns an empty response once the refresh is queued.
Use this to reload a dataflow. Use microsoftpowerbi_dataflow_transactions_list afterwards to check the result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `notify_option` (`string`, required): Email notification: NoNotification, MailOnFailure, or MailOnCompletion. One of: `NoNotification`, `MailOnFailure`, `MailOnCompletion`.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `process_type` (`string`, optional): Type of refresh: default or processFull. Power BI uses default when blank. One of: `default`, `processFull`.

Example input: `{"dataflow_id":"<dataflow_id>","notify_option":"NoNotification","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_refresh_schedule_update`

Update Dataflow Refresh Schedule · Write

Change the scheduled refresh of a Power BI dataflow; only the fields you set change.
Returns an empty response on success.
Use this to set when a dataflow refreshes. Use microsoftpowerbi_dataflow_refresh to refresh once right now.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `days` (`array`, optional): Days of the week on which to refresh. Each value is Monday through Sunday.
- `enabled` (`boolean`, optional): Whether scheduled refresh is turned on.
- `local_time_zone_id` (`string`, optional): Windows time zone ID used to interpret the times, for example UTC, Pacific Standard Time, or India Standard Time.
- `notify_option` (`string`, optional): Email notification when a scheduled refresh ends: NoNotification or MailOnFailure. One of: `NoNotification`, `MailOnFailure`.
- `times` (`array`, optional): Times of day to refresh, each as hh:mm in 24-hour format where minutes are 00 or 30. Example: ["07:00", "16:30"].

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataflow_update`

Update Dataflow · Write

Change the name, description, or engine settings of a Power BI dataflow; only the fields you set change.
Returns an empty response on success.
Use this to edit dataflow properties. Use microsoftpowerbi_dataflow_refresh_schedule_update to change when it refreshes.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataflow_id` (`string`, required): ID (GUID) of the dataflow. Get it from microsoftpowerbi_dataflows_list.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `allow_native_queries` (`boolean`, optional): Whether the dataflow may run native database queries.
- `compute_engine_behavior` (`string`, optional): Enhanced compute engine setting: computeOptimized, computeOn, or computeDisabled. One of: `computeOptimized`, `computeOn`, `computeDisabled`.
- `description` (`string`, optional): New description for the dataflow.
- `name` (`string`, optional): New name for the dataflow.

Example input: `{"dataflow_id":"<dataflow_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_execute_queries`

Run DAX Query · Write

Run a DAX query against a Power BI semantic model (dataset) and get the result rows.
Returns results[0].tables[0].rows, one object per row keyed by column name, plus any query error.
Use this to read data from a model. Use microsoftpowerbi_dataset_get to inspect the model itself.
Requires the tenant setting Dataset Execute Queries REST API and Build permission on the model.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `query` (`string`, required): One DAX query that starts with EVALUATE and returns a single table. Results are capped at 100,000 rows or 1,000,000 values per query. Example: EVALUATE TOPN(10, 'Sales', 'Sales'[Amount], DESC).
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `impersonated_user_name` (`string`, optional): UPN of a user whose row-level security (RLS) rules should apply to the query. Ignored if the model has no RLS.
- `include_nulls` (`boolean`, optional): Whether blank (null) values are included in the rows. Power BI omits them when false or blank.

Example input: `{"dataset_id":"<dataset_id>","query":"<query>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_parameters_update`

Update Semantic Model Parameters · Write

Set new values for Power Query parameters in a Power BI semantic model (dataset).
Returns an empty response on success.
Use this to repoint or reconfigure a model; run microsoftpowerbi_dataset_refresh afterwards so the new values take effect.
The connected user must own the semantic model; call microsoftpowerbi_dataset_parameters_list first for the parameter names.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `update_details` (`array`, required): Parameters to change, up to 100 per request. Each entry gives the parameter name and its new value as a string. Example: [{"name": "ServerName", "newValue": "sql-prod.contoso.com"}].
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","update_details":[{"name":"ServerName","newValue":"sql-prod.contoso.com"}],"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_refresh`

Refresh Semantic Model · Write

Start a refresh of a Power BI semantic model (dataset); the refresh runs in the background.
Returns 202 Accepted; the refresh id is in the Location response header.
Use this to reload data. Use microsoftpowerbi_dataset_refresh_history_list afterwards to check its status.
Setting any enhanced-refresh option (type, objects, commit mode, and so on) needs Premium, Premium Per User, or Fabric capacity.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `apply_refresh_policy` (`boolean`, optional): Enhanced refresh: whether to apply the table's incremental refresh policy.
- `commit_mode` (`string`, optional): Enhanced refresh: Transactional commits everything at the end; PartialBatch commits in batches. One of: `Transactional`, `PartialBatch`.
- `effective_date` (`string`, optional): Enhanced refresh with an incremental refresh policy: date-time to use as 'today' instead of the current date, in ISO 8601.
- `max_parallelism` (`integer`, optional): Enhanced refresh: maximum number of threads to process in parallel.
- `notify_option` (`string`, optional): Email notification for a standard refresh: NoNotification, MailOnFailure, or MailOnCompletion. Defaults to NoNotification. Ignored when any enhanced-refresh option is set, because Power BI rejects notifyOption on enhanced refreshes. One of: `NoNotification`, `MailOnFailure`, `MailOnCompletion`.
- `objects` (`array`, optional): Enhanced refresh: limit the refresh to specific tables or partitions. Each entry names a table, and optionally a partition in it. Example: [{"table": "Sales"}, {"table": "Customer", "partition": "Customer-2024"}].
- `retry_count` (`integer`, optional): Enhanced refresh: how many times to retry before the refresh fails.
- `timeout` (`string`, optional): Enhanced refresh: time limit for each refresh attempt as hh:mm:ss (default 05:00:00). Total time including retries cannot exceed 24 hours.
- `type` (`string`, optional): Enhanced refresh: kind of processing to run. Full, ClearValues, Calculate, DataOnly, Automatic, or Defragment. One of: `Full`, `ClearValues`, `Calculate`, `DataOnly`, `Automatic`, `Defragment`.

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_refresh_schedule_update`

Update Semantic Model Refresh Schedule · Write

Change the scheduled refresh of a Power BI semantic model (dataset) in import mode; only the fields you set change.
Returns an empty response on success.
Use this to set when a model refreshes. Use microsoftpowerbi_dataset_refresh to refresh once right now.
The connected user must own the semantic model.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `days` (`array`, optional): Days of the week on which to refresh. Each value is Monday through Sunday.
- `enabled` (`boolean`, optional): Whether scheduled refresh is turned on.
- `local_time_zone_id` (`string`, optional): Windows time zone ID used to interpret the times, for example UTC, Pacific Standard Time, or India Standard Time.
- `notify_option` (`string`, optional): Email notification when a scheduled refresh ends: NoNotification or MailOnFailure. One of: `NoNotification`, `MailOnFailure`.
- `times` (`array`, optional): Times of day to refresh, each as hh:mm in 24-hour format where minutes are 00 or 30. Example: ["07:00", "16:30"].

Example input: `{"dataset_id":"<dataset_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_dataset_user_add`

Add Semantic Model User · Write

Grant a user or security group direct access to a Power BI semantic model (dataset).
Returns an empty response on success.
Use this to share a model without giving workspace access. Use microsoftpowerbi_workspace_user_add for workspace-wide access.
The connected user needs Reshare permission on the model; apps (service principals) and Write access are not supported here.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `access_right` (`string`, required): Access to grant: Read, ReadReshare (read and share), ReadExplore (read and build), or ReadReshareExplore (all three). One of: `Read`, `ReadReshare`, `ReadExplore`, `ReadReshareExplore`.
- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `identifier` (`string`, required): The principal to grant access to. For a user, give the user principal name (UPN, usually the work email). For a security group, give its Microsoft Entra object ID.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `principal_type` (`string`, optional): Kind of principal in identifier: User or Group. Defaults to User. One of: `User`, `Group`. Default: `User`.

Example input: `{"access_right":"Read","dataset_id":"<dataset_id>","identifier":"<identifier>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_pipeline_create`

Create Deployment Pipeline · Write

Create a Power BI deployment pipeline with Development, Test, and Production stages.
Returns the new pipeline's id, displayName, and description.
Use this to set up a release flow; assign workspaces to its stages in the Power BI service.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `display_name` (`string`, required): Name of the new pipeline, up to 256 characters.
- `description` (`string`, optional): Description of the pipeline, up to 1024 characters.

Example input: `{"display_name":"<display_name>"}`

### `microsoftpowerbi_pipeline_deploy_all`

Deploy All Pipeline Items · Write

Deploy every supported item from one stage of a Power BI deployment pipeline to the next stage (or the previous one for a backward deployment).
Returns 202 Accepted with the deploy operation's id and status.
Use this to promote content, for example Development to Test. Use microsoftpowerbi_pipeline_operation_get to follow the deployment.
Requires at least Contributor on both the source and target workspaces; up to 300 items per deployment.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `pipeline_id` (`string`, required): ID (GUID) of the deployment pipeline. Get it from microsoftpowerbi_pipelines_list.
- `source_stage_order` (`integer`, required): Stage to deploy from: 0 = Development, 1 = Test, 2 = Production. Content goes to the next stage, or the previous stage when is_backward_deployment is true. One of: `0`, `1`, `2`.
- `is_backward_deployment` (`boolean`, optional): Deploy from a later stage to an earlier one (for example Test back to Development). Defaults to false.
- `new_workspace_capacity_id` (`string`, optional): Capacity (GUID) for the new target workspace. Only used with new_workspace_name; Power BI picks one when blank.
- `new_workspace_name` (`string`, optional): Name for a new workspace to create when the target stage has no workspace assigned yet.
- `options` (`object`, optional): Deployment options as true/false flags. allowCreateArtifact and allowOverwriteArtifact let the deployment add new items and overwrite existing ones in the target stage; the deployment fails if a needed flag is not true. Other flags cover skipping tiles with missing prerequisites, purging data on schema mismatch, and taking over paginated reports. Example: {"allowCreateArtifact": true, "allowOverwriteArtifact": true}.
- `update_app_in_target_workspace` (`boolean`, optional): Whether to update the published app in the target workspace. Only items already in the app are updated.

Example input: `{"pipeline_id":"<pipeline_id>","source_stage_order":0}`

### `microsoftpowerbi_push_dataset_create`

Create Push Semantic Model · Write

Create a push semantic model (dataset) with the tables and columns you define, ready to receive rows through the API.
Returns the new model's id, name, and defaultRetentionPolicy.
Use this to stream or push your own data into Power BI. Use microsoftpowerbi_push_dataset_rows_add to load rows into it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the new push semantic model.
- `tables` (`array`, required): Table definitions. Each table needs a name and a list of columns; each column needs a name and a dataType (Int64, Double, Boolean, Datetime, String, or Decimal). Tables can also carry DAX measures. Example: [{"name": "Sales", "columns": [{"name": "Region", "dataType": "String"}, {"name": "Amount", "dataType": "Double"}]}].
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `default_retention_policy` (`string`, optional): Row retention: None keeps all rows (up to the push limit); basicFIFO keeps the newest 200,000 rows and drops the oldest. One of: `None`, `basicFIFO`.

Example input: `{"name":"<name>","tables":[],"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_push_dataset_rows_add`

Add Rows to Push Semantic Model · Write

Append rows to a table in a push semantic model (dataset).
Returns an empty response on success.
Use this to load data into a push model. Use microsoftpowerbi_push_dataset_create first to create the model and its tables.
Push limits apply: up to 10,000 rows per request.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `rows` (`array`, required): Rows to append, each an object whose keys match the table's column names. Up to 10,000 rows per request. Example: [{"Region": "West", "Amount": 1250.5}].
- `table_name` (`string`, required): Name of the table in the push semantic model.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","rows":[{"Region":"West","Amount":1250.5}],"table_name":"<table_name>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_push_dataset_table_update`

Update Push Semantic Model Table · Write

Replace the schema (columns and measures) of a table in a push semantic model (dataset).
Returns the updated table definition.
Use this to add or change columns. Use microsoftpowerbi_push_dataset_rows_add to load data.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `columns` (`array`, required): Full list of columns for the table. Each column needs a name and a dataType (Int64, Double, Boolean, Datetime, String, or Decimal). Example: [{"name": "Region", "dataType": "String"}, {"name": "Amount", "dataType": "Double"}].
- `dataset_id` (`string`, required): ID (GUID) of the semantic model. Get it from microsoftpowerbi_datasets_list (semantic models were previously called datasets). It also appears in the Power BI URL after /datasets/.
- `table_name` (`string`, required): Name of the table in the push semantic model.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `measures` (`array`, optional): Optional DAX measures for the table, each with a name and a DAX expression. Example: [{"name": "Total Amount", "expression": "SUM(Sales[Amount])"}].

Example input: `{"columns":[{"name":"Region","dataType":"String"},{"name":"Amount","dataType":"Double"}],"dataset_id":"<dataset_id>","table_name":"<table_name>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_clone`

Clone Report · Write

Copy a Power BI report under a new name, optionally into another workspace or bound to another semantic model.
Returns the new report's id, name, webUrl, and datasetId.
Use this to duplicate a report. Use microsoftpowerbi_report_rebind to point an existing report at a different semantic model.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name for the new copy of the report.
- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...). This is the workspace of the source report.
- `target_model_id` (`string`, optional): Semantic model (dataset) ID to bind the copy to. Leave blank to keep the source report's semantic model.
- `target_workspace_id` (`string`, optional): Workspace (GUID) to put the copy in. Use 00000000-0000-0000-0000-000000000000 for My workspace. Leave blank to clone into the source report's workspace.

Example input: `{"name":"<name>","report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_report_rebind`

Rebind Report · Write

Bind a Power BI report to a different semantic model with a compatible schema.
Returns an empty response on success.
Use this to switch a report's data. Use microsoftpowerbi_report_clone to make a copy bound to another model instead.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): ID (GUID) of the semantic model (dataset) to bind the report to. If it lives in another workspace, Power BI creates a shared semantic model in the report's workspace.
- `report_id` (`string`, required): ID (GUID) of the report. Get it from microsoftpowerbi_reports_list. It also appears in the Power BI URL after /reports/.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).

Example input: `{"dataset_id":"<dataset_id>","report_id":"<report_id>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspace_create`

Create Workspace · Write

Create a new Power BI workspace with the given name; the connected user becomes its admin.
Returns the new workspace's id, name, and capacity details.
Use this to set up a workspace. Use microsoftpowerbi_workspace_update to rename an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the new workspace. Must be unique within the organization.

Example input: `{"name":"<name>"}`

### `microsoftpowerbi_workspace_update`

Update Workspace · Write

Rename a Power BI workspace or change its default semantic model storage format.
Returns an empty response on success.
Use this to edit workspace settings. Use microsoftpowerbi_workspace_create to make a new workspace.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `default_dataset_storage_format` (`string`, optional): Default storage format for new semantic models in the workspace: Small or Large. Only workspaces on Premium capacity can change this; shared-capacity workspaces can only change the name. One of: `Small`, `Large`.
- `name` (`string`, optional): New name for the workspace. Must be unique within the organization.

Example input: `{"workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspace_user_add`

Add Workspace User · Write

Grant a user, security group, or app a role in a Power BI workspace.
Returns an empty response on success.
Use this to add a new member. Use microsoftpowerbi_workspace_user_update to change the role of someone who already has access.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `access_right` (`string`, required): Workspace role to give the principal: Admin, Member, Contributor, or Viewer. One of: `Admin`, `Member`, `Contributor`, `Viewer`.
- `identifier` (`string`, required): The principal to grant access to. For a user, give the user principal name (UPN, usually the work email). For a security group or app, give its Microsoft Entra object ID.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `principal_type` (`string`, optional): Kind of principal in identifier: User, Group, or App. Defaults to User. One of: `User`, `Group`, `App`. Default: `User`.

Example input: `{"access_right":"Admin","identifier":"<identifier>","workspace_id":"<workspace_id>"}`

### `microsoftpowerbi_workspace_user_update`

Update Workspace User · Write

Change the workspace role of a user, security group, or app that already has access to a Power BI workspace.
Returns an empty response on success.
Use this to promote or demote a member. Use microsoftpowerbi_workspace_user_add for someone without access yet.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `access_right` (`string`, required): Workspace role to give the principal: Admin, Member, Contributor, or Viewer. One of: `Admin`, `Member`, `Contributor`, `Viewer`.
- `identifier` (`string`, required): The principal to grant access to. For a user, give the user principal name (UPN, usually the work email). For a security group or app, give its Microsoft Entra object ID.
- `workspace_id` (`string`, required): ID (GUID) of the Power BI workspace that holds the item. Get it from microsoftpowerbi_workspaces_list or from the workspace URL (app.powerbi.com/groups/<workspace_id>/...).
- `principal_type` (`string`, optional): Kind of principal in identifier: User, Group, or App. Defaults to User. One of: `User`, `Group`, `App`. Default: `User`.

Example input: `{"access_right":"Admin","identifier":"<identifier>","workspace_id":"<workspace_id>"}`

## Related

Other Analytics connectors ([all 109](/agentkit/connectors/?category=analytics)):

- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Snowflake](/agentkit/connectors/snowflake/): Scalekit connector, OAuth, 42 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
