Connectors · Observability & analytics
Microsoft Power BI MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Microsoft Power BI and the rest of your systems. It gives your agent 282 Microsoft Power BI actions (147 reads, 103 writes and 32 that wait for a confirmation) and holds the Microsoft Power BI credential itself, so the agent never does. It paces Microsoft Power BI's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "powerbi.reports.get_reports", intent: "check which Microsoft Power BI account is connected"}# Returns a list of reports from My workspace · read · 1 upstream call- 282actionsin one signed file
- 147readlook, never change
- 103writecreate and update
- 32wait for a yesdestructive, confirmed first
Set up
Connect Microsoft Power BI in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Microsoft Power BI.
OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
client_idEntra application (client) idclient_secretEntra client secrettenant_idYour Microsoft Power BI tenant id
account { op: "connections.requirements", service: "powerbi" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "powerbi.reports.get_reports" }# returns a list of reports from my workspace · read · 1 upstream callcheck { action: "powerbi.reports.rebind_report", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Microsoft Power BI at a glance
- Sign-in
- OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.
- You provide
client_idclient_secret- Setup fields
tenant_id- Limits we pace to
- 200 calls an hour, per connection
- API covered
- Microsoft Power BI API v1.0
api.powerbi.com/v1.0/myorg - Built from
- Microsoft Power BI's documentation, read 19 September 2026OpenAPI spec (GitHub)learn.microsoft.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 145 of 147 reads, for up to an hour; a write clears what it affects
- Ready-made plans
- 9 in the store
- Shared entities
- 3, so ask can line Microsoft Power BI up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Microsoft Power BI.
282 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.
- 147readlook, never change
- 103writecreate and update
- 32destructivewait for a confirmation
Bi
282147 read · 103 write · 32 destructive
Returns a list of reports from the specified workspace · Returns a list of users that have access to the specified workspace · Returns a list of reports from the specified app · Returns a list of reports from My workspace
Top actions
The Microsoft Power BI API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 101 of Microsoft Power BI's 105 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
powerbi.reports.get_reports_in_groupReturns a list of reports from the specified workspace | Returns a list of reports from the specified workspace. | read | analytics.report.list37 connectors |
powerbi.groups.get_group_usersReturns a list of users that have access to the specified workspace | Returns a list of users that have access to the specified workspace. | read | identity.role_assignment.list41 connectors |
powerbi.apps.get_reportsReturns a list of reports from the specified app | Returns a list of reports from the specified app. | read | analytics.report.list37 connectors |
powerbi.datasets.get_dataset_usersReturns a list of principals that have access to the specified dataset | Returns a list of principals that have access to the specified dataset. | read | identity.role_assignment.list41 connectors |
powerbi.datasets.get_datasetsReturns a list of datasets from My workspace | Returns a list of datasets from My workspace. | read | analytics.dataset.list28 connectors |
powerbi.push_datasets.get_tablesReturns a list of tables within the specified dataset from My workspace | Returns a list of tables within the specified dataset from My workspace. | read | analytics.dataset.list28 connectors |
powerbi.scorecards.getReturns a list of scorecards from a workspace | Returns a list of scorecards from a workspace. | read | analytics.dashboard.list22 connectors |
powerbi.apps.get_dashboardsReturns a list of dashboards from the specified app | Returns a list of dashboards from the specified app. | read | analytics.dashboard.list22 connectors |
powerbi.reports.rebind_reportRebinds the specified report from My workspace to the specified dataset | Rebinds the specified report from My workspace to the specified dataset. | write | analytics.report.update16 connectors |
powerbi.reports.take_over_in_groupTransfers ownership of the data sources for the specified paginated report (RDL) to the current authorized use | Transfers ownership of the data sources for the specified paginated report (RDL) to the current authorized user. | write | analytics.report.update16 connectors |
powerbi.reports.update_report_contentUpdates the content of the specified report from My workspace with the content of a specified source report | Updates the content of the specified report from My workspace with the content of a specified source report. | write | analytics.report.update16 connectors |
powerbi.reports.delete_reportDeletes the specified report from My workspace | Deletes the specified report from My workspace. | destructive | analytics.report.delete16 connectors |
Try it
Prompts to paste into Claude.
Each one names the Microsoft Power BI actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Returns a list of reports from My workspace in Microsoft Power BI and tell me what stands out.
calls
powerbi.reports.get_reports - Planread
Inventory everything inside a workspace in Microsoft Power BI.
calls
powerbi.groups.get_grouppowerbi.reports.get_reports_in_grouppowerbi.datasets.get_datasets_in_grouppowerbi.dashboards.get_dashboards_in_grouppowerbi.dataflows.get_dataflows+1 more - Planread
Audit what the tenant has published to the web in Microsoft Power BI.
calls
powerbi.admin.published_to_webpowerbi.admin.get_apps_as_adminpowerbi.admin.get_dashboards_as_adminpowerbi.admin.get_reports_as_adminpowerbi.admin.get_activity_events - Writewrite
Rebinds the specified report from My workspace to the specified dataset in Microsoft Power BI. Show me exactly what you will send before you save it.
calls
powerbi.reports.rebind_report
The plan store
Ready-made plans for Microsoft Power BI.
9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.
Review a gateway's datasources and who can use them
Use it when An admin is reviewing gateway connections before a credential rotation or an access review.
Audit what the tenant has published to the web
Use it when An admin or auditor asks what content is publicly exposed or shared across the whole Power BI tenant.
Inventory everything inside a workspace
Use it when Someone asks what is in a workspace, or who has access to it, before a migration or a review.
Clone a report into another workspace and point it at a dataset
Use it when A report needs to be duplicated into another workspace, for example promoting a template or spinning up a per-customer copy.
Export a report to a file and poll until it is ready
Use it when Someone wants a PDF or PPTX copy of a Power BI report to send on or file away.
Refresh every dataset in a workspace and wait for the results
Use it when Someone needs the data in a workspace brought up to date right now rather than waiting for the schedule.
Create a workspace and add the team to it
Use it when A new team or project needs its own Power BI workspace with members set up in one go.
A person decides
Grant access right access to workspace name for number of members people.
Deploy a pipeline stage after review
Use it when Content in a Power BI deployment pipeline is ready to move from one stage to the next.
A person decides
Deploy every artifact from stage source stage order of pipeline displayName to the next stage.
Retire a report after checking what it is wired to
Use it when A report is believed obsolete and should be deleted, but only after its dependencies are understood.
A person decides
Permanently delete report report id, which has number of items pages and number of items active subscriptions.
account { op: "plans.install", slug: "powerbi-gateway-datasource-review" }
# then ask for it by name; a schedule can run it on a timetableGovernance for Microsoft Power BI
Destructive actions wait for a yes.
32 Microsoft Power BI actions are destructive. The first 10:
- Deletes the specified report from My workspace
powerbi.reports.delete_report - Deletes the specified report from the specified workspace
powerbi.reports.delete_report_in_group - Deletes the specified user permissions from the specified workspace
powerbi.groups.delete_user_in_group - Removes user permissions from the specified deployment pipeline
powerbi.pipelines.delete_pipeline_user - Removes the specified user from the specified data source
powerbi.gateways.delete_datasource_user - Removes user permissions from the specified workspace
powerbi.admin.delete_group_user_as_admin - Removes user permissions from a specified deployment pipeline
powerbi.admin.delete_pipeline_user_as_admin - Grants user permissions to the specified workspace
powerbi.admin.add_user_as_admin - Deletes the specified dataset from My workspace
powerbi.datasets.delete_dataset - Deletes all rows from the specified table within the specified dataset from My workspace
powerbi.push_datasets.delete_rows
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Deletes the specified report from My workspace?
intent: the user asked me to deletes the specified report from My workspace
account { op: "keys.create", name: "powerbi-agent", allowed_actions: ["powerbi.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "powerbi.reports.delete_report", approver: "[email protected]" }, { match: "powerbi.reports.delete_report_in_group", approver: "[email protected]" }, { match: "powerbi.groups.delete_user_in_group", approver: "[email protected]" } ]}Cost
What Microsoft Power BI costs on actionlake.
Every Microsoft Power BI action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Microsoft Power BI refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 282 Microsoft Power BI actions
- 27actions pageeach page of a long list is one call
- 145reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Microsoft Power BI action.
282 actions by area: the id your agent calls, what it does, and its effect.
Bi282
powerbi.admin.get_capacity_users_as_adminReturns a list of users that have access to the specified workspacereadpowerbi.admin.get_group_users_as_adminReturns a list of users that have access to the specified workspacereadpowerbi.admin.get_reports_in_group_as_adminReturns a list of reports from the specified workspacereadpowerbi.apps.get_reportsReturns a list of reports from the specified appreadpowerbi.groups.get_group_usersReturns a list of users that have access to the specified workspacereadpowerbi.reports.get_reportsReturns a list of reports from My workspaceread- and 276 more in this area
This index shows a sample of each area. All 282 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.
Questions
The Microsoft Power BI MCP server, answered.
Is there a Microsoft Power BI MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 282 Microsoft Power BI actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Microsoft Power BI.
What do I need to connect Microsoft Power BI?
Entra application (client) id and Entra client secret. Plus your tenant id. The free call account { op: "connections.requirements", service: "powerbi" } lists exactly what to paste.
Can an AI agent delete or change things in Microsoft Power BI?
Only if its key allows it, and only with an explicit confirmation. 32 Microsoft Power BI actions are destructive, including deletes the specified report from My workspace, deletes the specified report from the specified workspace and deletes the specified user permissions from the specified workspace. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Microsoft Power BI API limit?
actionlake paces every call to the limits in the Microsoft Power BI service file: 200 calls an hour per connection. Repeated reads are answered from cache (145 Microsoft Power BI actions can be), which never reaches Microsoft Power BI.
What does a Microsoft Power BI action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (27 Microsoft Power BI actions page). Cache hits, searches, dry runs and calls Microsoft Power BI refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Microsoft Power BI API does it cover?
The Microsoft Power BI API v1.0 at api.powerbi.com/v1.0/myorg. It is built from Microsoft Power BI's documentation as read on 19 September 2026. 282 actions in 1 area, each one in the signed service file (version 1.0.0).
Does actionlake keep my Microsoft Power BI data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Microsoft Power BI credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Microsoft Power BI today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.