
Step 1: Connect your stack
27+ native integrations plus 9,800+ tools via managed connectors. Mostly one-click OAuth, a few API keys. No webhooks, no Zapier zaps.
Viktor works in Microsoft Power BI for you. Ask in Slack or Microsoft Teams.
Viktor is an AI employee that connects to Microsoft Power BI and helps you query data and build dashboards and reports, running 15 Microsoft Power BI actions for you like Get Reports, List Reports, and List Datasets. Ask in plain English from your workspace; Viktor does the work in Microsoft Power BI and reports back. Viktor connects in one click via OAuth.
Viktor connects to your Microsoft Power BI account and completes work in it. He doesn't just answer questions about Microsoft Power BI, he takes the actions on your behalf and delivers the finished result to your workspace.
Unlike workflow builders such as Zapier or Make, there is nothing to configure - no triggers to map, no workflows to maintain. You describe the outcome in plain English, and Viktor picks the right Microsoft Power BI actions, chains them with the other 9,800+ tools he connects to, and asks for approval before anything sensitive runs.
About Microsoft Power BI
Visualize any data and integrate the visuals into the apps you use every day with Power BI, a unified platform for self-service and business intelligence.
Message Viktor in a Slack channel, a Microsoft Teams chat or a direct message. He opens Microsoft Power BI, does the work and posts the result in the same thread, so nobody has to switch tabs.
He can also run Microsoft Power BI work on a schedule, like a weekly Microsoft Power BI summary posted to your team's channel. Anything sensitive waits for your approval before it runs.
Viktor is not affiliated with or endorsed by Microsoft Power BI.
You ask in your workspace
Describe what you need in plain English
Viktor picks the actions
Selects from 15 Microsoft Power BI actions, chains them together
Runs in Microsoft Power BI
Helps you query data and build dashboards and reports - your real data.
Reports back
Delivers the finished result to your workspace
Messages you'd actually send. Paste one into your workspace, swap in your specifics, and Viktor takes it from there.
“Query Microsoft Power BI for last month's key metrics and build a quick dashboard.”
— you, to @Viktor
“Pull this week's numbers from Microsoft Power BI and post a summary every Monday.”
— you, to @Viktor
“Investigate why a metric moved in Microsoft Power BI last week and report what you find.”
— you, to @Viktor
“Watch a key dashboard in Microsoft Power BI for anomalies and alert me with context.”
— you, to @Viktor

27+ native integrations plus 9,800+ tools via managed connectors. Mostly one-click OAuth, a few API keys. No webhooks, no Zapier zaps.
Message Viktor like a teammate: "Pull this week's MRR from Stripe." "Triage new Linear bugs." "Pause Meta ads over $40 CPA." Any tool.
Viktor opens the tools, runs the work, and posts back exactly what changed. Sensitive actions wait for your approval. It’s all logged.
Ask in plain English from your workspace. Viktor picks the right Microsoft Power BI actions, runs the work, and reports back. No workflows to build.
Execute a DAX (Data Analysis Expressions) query against a Power BI dataset (semantic model). This is the primary analytics tool — use it to answer questions about values, aggregates, or filtered rows in a dataset. Use List Datasets first to resolve a dataset name → datasetId. The query must be a single valid DAX expression starting with EVALUATE. Table discovery (standard datasets): For datasets published from Power BI Desktop, the REST GET /datasets/{id}/tables endpoint is scoped to push datasets only and will not list tables. Use EVALUATE INFO.TABLES() instead — it returns every table name in the semantic model. Typical agent flow: List Workspaces → List Datasets → Execute DAX Query (EVALUATE INFO.TABLES()) → Execute DAX Query (EVALUATE 'TableName'). Common patterns: • Discover all tables — EVALUATE INFO.TABLES() (use this before querying an unknown dataset) • List all rows of a table — EVALUATE 'Species' • Filter — EVALUATE FILTER('Species', 'Species'[dietType] = "Carnivore") • Top N by column — EVALUATE TOPN(5, 'Species', 'Species'[weightKg], DESC) • Aggregate single value — EVALUATE ROW("Total", SUMX('Species', 'Species'[weightKg])) • Peek at a table's columns — EVALUATE TOPN(0, 'Species') (returns an empty rowset with column names in the response). Limits: max 100,000 rows or 1,000,000 values per query, and DEFINE/multiple-statement queries are not supported via REST. The tenant must have 'Dataset Execute Queries REST API' enabled (admin setting) or the call returns 401/403. Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace.
Trigger a refresh of a Power BI dataset. Returns 202 Accepted on success; the request ID is available in the Location response header (last path segment) and x-ms-request-id header — use Get Refresh History to check status. Use List Datasets first to resolve a dataset name → datasetId. Pass workspaceId (from List Workspaces) or workspaceName to target a specific workspace, or omit both for My workspace. notifyOption controls email notifications on refresh outcome: NoNotification (default), MailOnCompletion, or MailOnFailure. Power BI Pro licenses allow up to 8 scheduled refreshes per day; Premium allows 48. Note: Push datasets accept this endpoint but the refresh is metadata-only (tile refresh), not a data refresh — no cancellable history entry is produced.
List the Power BI workspaces (groups) the authenticated user can access. Use this tool first whenever the user refers to a workspace by name — it returns the id you need to pass as workspaceId to other tools. Power BI has no /me endpoint, so the set of accessible workspaces is the user's primary context (the 'who am I' signal for this app). Every item in the response includes id, name, isReadOnly, isOnDedicatedCapacity, and type. Note: when a user says 'my workspace' without a name, they may mean personal My workspace (implicit — pass no workspaceId to other tools) OR a specific named workspace — ask only if ambiguous.
List Power BI reports in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace — the tool resolves the name to an ID server-side. Each report includes id, name, webUrl, embedUrl, datasetId, and reportType (PowerBIReport or PaginatedReport). Note: reports cannot be created via the REST API — they are published from Power BI Desktop.
List Power BI datasets (semantic models) in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace. Each dataset includes id, name, webUrl, addRowsAPIEnabled (true for Push Datasets), isRefreshable, and defaultMode (Push, Streaming, PushStreaming, AsOnPrem, AsAzure). Use this tool to resolve a dataset name → ID before calling Refresh Dataset, Execute DAX Query, Get Refresh History, or Add Rows To Push Dataset. For push-dataset row inserts, call the dataset's GET tables endpoint (not exposed as a separate tool) by inspecting the dataset's name → tables are defined at dataset creation; the table name is the string configured at creation time (e.g., Species).
List Power BI dashboards in a workspace. Defaults to the authenticated user's personal My workspace when no workspace is specified. Pass workspaceId (preferred, from List Workspaces) OR workspaceName to scope to a specific workspace. Each dashboard includes id, displayName, isReadOnly, webUrl, and embedUrl. Note: dashboards cannot be created via the REST API — they are built interactively in the Power BI service.
Get reports from a Power BI workspace.
Retrieve metadata for a single Power BI report by ID. Uses My workspace by default; set Workspace (Group) ID for a specific workspace.
Get the refresh history for a Power BI dataset. Use List Datasets first to resolve a dataset name → datasetId. Pass workspaceId (from List Workspaces) or workspaceName to scope to a specific workspace, or omit both for My workspace. Each entry includes requestId, refreshType (OnDemand, Scheduled, ViaApi, etc.), startTime, endTime, status (Completed, Failed, Disabled, Cancelled, Unknown — Unknown means still in progress), and serviceExceptionJson on failures.
Ask for outcomes that span tools - Viktor pulls from Microsoft Power BI, cross-references the rest of your stack, and delivers one finished result.
Yes. Microsoft Power BI is one of the 9,800+ tools Viktor connects to, in one click via OAuth. Once connected, anyone on your team can put Viktor to work in Microsoft Power BI from their workspace - no workflow builder, no code.
Ask Viktor in your workspace to connect Microsoft Power BI, then approve the one-click OAuth prompt. Viktor never sees your password, handles authentication itself, and starts working right away. Setup takes about two minutes, and you can revoke access at any time.
Viktor can run 15 Microsoft Power BI actions, including Get Reports, List Reports, and List Datasets - and chain them with other tools in a single request. In practice that means Viktor helps you query data and build dashboards and reports. If a task spans several actions, Viktor plans the sequence itself and reports back when the work is done.
No. Viktor isn't a workflow builder - there are no triggers to map and nothing to maintain. You ask for the outcome in plain English in your workspace, and Viktor decides which Microsoft Power BI actions to take, runs them, and reports back.
Start free. Viktor delivers.
Start for free today. No credit card required.