Connect your AI Agents to Microsoft Power BI in minutes

Merge lets you securely connect your agents to Microsoft Power BI and thousands of tools instantly

Available tools

list_admin_workspaces

List every workspace in the tenant, including ones the account is not a member of. Requires the Fabric Administrator role, not just the connected credential. Use list_workspaces for only the account's own workspaces.

list_admin_reports

List every report in the tenant, across all workspaces. Requires the Fabric Administrator role, not just the connected credential. Use list_reports for the reports in one workspace.

list_admin_datasets

List every semantic model in the tenant, across all workspaces. Requires the Fabric Administrator role, not just the connected credential. Use list_datasets for the models in one workspace.

list_admin_dashboards

List every dashboard in the tenant, across all workspaces. Requires the Fabric Administrator role, not just the connected credential. Use list_dashboards for the dashboards in one workspace.

list_admin_dataflows

List every dataflow in the tenant, across all workspaces. Requires the Fabric Administrator role, not just the connected credential. This is the only tenant-wide view of dataflows; the user surface has no such endpoint.

list_apps

List the Power BI apps the connected account can open. Apps are published, read-only collections of reports and dashboards. Returns every app in one response; the API does not page this endpoint.

get_app

Get one Power BI app by ID. Use listapps to find appid.

list_app_reports

List the reports published inside a Power BI app. These are separate from the reports in a workspace; use listreports for those. Use listapps to find app_id.

list_app_dashboards

List the dashboards published inside a Power BI app. These are separate from the dashboards in a workspace; use listdashboards for those. Use listapps to find app_id.

list_dashboards

List the dashboards in a Power BI workspace. Returns every dashboard in one response; the API does not page this endpoint. Use listworkspaces to find workspaceid.

get_dashboard

Get one dashboard by ID. Use listdashboards to find dashboardid.

create_dashboard

Create an empty dashboard in a Power BI workspace. Tiles are pinned from reports in the Power BI UI; the API cannot add them. Note the REST API has no dashboard delete, so one created here can only be removed in Power BI itself.

list_dashboard_tiles

List the tiles pinned to a dashboard, including the report and semantic model behind each one. Use listdashboards to find dashboardid.

list_dataflows

List the Power BI (Gen1) dataflows in a workspace. Fabric Dataflow Gen2 is a different item type served by a different API and is not returned here. Dataflows exist only inside a workspace, so use listadmindataflows for a tenant-wide view.

get_dataflow

Get a Power BI (Gen1) dataflow's stored definition, containing its entities and Power Query expressions. Returns the model document rather than a summary row; use list_dataflows for names and owners.

list_datasets

List the semantic models (datasets) in a Power BI workspace. Returns every model in one response; the API does not page this endpoint. Check addrowsapi_enabled to find models that accept pushed rows.

get_dataset

Get one semantic model by ID. Use listdatasets to find datasetid.

delete_dataset

Delete a semantic model and every report built on it. This cannot be undone. Use listdatasets to find datasetid.

refresh_dataset

Start a refresh of a semantic model. Returns as soon as the refresh is queued, not when it finishes; poll getrefreshhistory to watch it. Only models with is_refreshable true can be refreshed.

get_refresh_history

List past and in-progress refreshes of a semantic model, newest first. A status of 'Unknown' means the refresh is still running. Unlike the list endpoints, this one does honour the 'top' limit.

get_dataset_datasources

List the data sources a semantic model reads from, including the gateway serving each one. Use listdatasets to find datasetid.

list_gateways

List the on-premises data gateways the connected account can administer. A gateway connects Power BI to data sources behind a firewall. Returns every gateway in one response; the API does not page this endpoint.

get_gateway

Get one on-premises data gateway by ID. Use listgateways to find gatewayid.

list_gateway_datasources

List the data sources bound to an on-premises data gateway. Use this to see what a gateway serves before changing anything that depends on it. Use listgateways to find gatewayid.

list_imports

List the .pbix and Excel imports performed into a Power BI workspace, with the state of each. Importing a file is how reports get into a workspace; the API cannot build a report from nothing.

get_import

Get one import by ID to check its progress. importstate reads 'Publishing' while it runs and 'Succeeded' when the reports and semantic models it created become available. Use listimports to find import_id.

create_push_dataset

Create a push semantic model from a table schema, with no .pbix file. This is the only way to create a semantic model through the API alone. The schema is fixed once created, so changing it means creating a new model. Follow with push_rows to add data.

push_rows

Append rows to a table in a push semantic model. Row keys must match the column names the model was created with. Only models with addrowsapienabled true accept rows; an imported model rejects them. Use truncatetable to clear the table first.

truncate_table

Delete every row from a table in a push semantic model, leaving the table and its schema in place. This cannot be undone. Use listdatasettables to find table_name.

list_dataset_tables

List the table names in a push semantic model. The API returns names only, not the columns each table was created with, so the column names for push_rows must come from whoever defined the model.

list_reports

List the reports in a Power BI workspace. Returns every report in one response; the API does not page this endpoint. Use listworkspaces to find workspaceid.

get_report

Get one report by ID, including the semantic model it reads from. Use listreports to find reportid.

delete_report

Delete a report from a Power BI workspace. This does not delete the semantic model behind it. Use listreports to find reportid.

clone_report

Copy a report, optionally into another workspace or onto another semantic model. This is the only way to create a report through the API; a report cannot be built from nothing. Use listreports to find reportid.

validate_credential

Validate Power BI credentials by reading the tenant's available features. Returns success and a message explaining any problem, including an account with no Power BI licence.

list_workspaces

List the Power BI workspaces the connected account can open. Supports an OData filterquery to narrow results server-side. Returns every match in one response; this endpoint does not page. Use listadmin_workspaces for workspaces across the whole tenant.

get_workspace

Get one Power BI workspace by ID. Use listworkspaces to find workspaceid.

create_workspace

Create a Power BI workspace. The name must be unique in the tenant. Returns the new workspace including its ID, which the workspace-scoped tools take.

delete_workspace

Delete a Power BI workspace and everything inside it. This cannot be undone. Use listworkspaces to find workspaceid.

list_workspace_users

List the users, groups and service principals with access to a Power BI workspace, and the access level each holds. Use listworkspaces to find workspaceid.

add_workspace_user

Grant a user, group or service principal access to a Power BI workspace. Pass emailaddress for a person, or identifier with principaltype 'App' or 'Group'. Use removeworkspaceuser to revoke it.

remove_workspace_user

Revoke a principal's access to a Power BI workspace. Use listworkspaceusers to find the exact email address or object ID to pass.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's Microsoft Power BI  MCP server

FAQs on using Merge's Microsoft Power BI  MCP server

Explore other MCP servers built and managed by Merge

looker
Looker
lucidchart
Lucidchart
luma
Luma
make
Make
metabase
Metabase
dynamics365_business_central
Microsoft Dynamics 365 Business Central
excel
Microsoft Excel
microsoft_graph_security
Microsoft Graph Security
microsoft_planner
Microsoft Planner
microsoft_teams
Microsoft Teams
microsoft_teams_gcc
Microsoft Teams GCC High
miro
Miro
monday
Monday.com
n8n
n8n
netsuite
NetSuite
nextech
Nextech Practice+
nooks
Nooks
notion
Notion
npi_registry
NPI Registry
okta
Okta
onedrive
OneDrive
onedrive_gcc
OneDrive GCC High
onenote
OneNote
oracle_hcm
Oracle HCM

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now