Install
$ agentstack add skill-microsoft-skills-for-fabric-semantic-model-consumption ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
> Update Check — ONCE PER SESSION (mandatory) > The first time this skill is used in a session, run the check-updates skill before proceeding. > - GitHub Copilot CLI / VS Code: invoke the check-updates skill. > - Claude Code / Cowork / Cursor / Windsurf / Codex: compare local vs remote package.json version. > - Skip if the check was already performed earlier in this session.
> CRITICAL NOTES > 1. To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering > 2. To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering
Power BI Semantic Model Consumption
Table of Contents
| Task | Reference | Notes | |---|---|---| | Finding Workspaces and Items in Fabric | [COMMON-CLI.md § Finding Workspaces and Items in Fabric](../../common/COMMON-CLI.md#finding-workspaces-and-items-in-fabric) | Mandatory — READ link first [needed for finding workspace id by its name or item id by its name, item type, and workspace id] | | Fabric Topology & Key Concepts | [COMMON-CORE.md § Fabric Topology & Key Concepts](../../common/COMMON-CORE.md#fabric-topology--key-concepts) | Hierarchy; Finding Things in Fabric | | Environment URLs | [COMMON-CORE.md § Environment URLs](../../common/COMMON-CORE.md#environment-urls) | Production (Public Cloud) | | Authentication & Token Acquisition | [COMMON-CORE.md § Authentication & Token Acquisition](../../common/COMMON-CORE.md#authentication--token-acquisition) | Wrong audience = 401; covers token audiences, delegated vs app permissions, OAuth flows, identity types, and Entra app registration | | Core Control-Plane REST APIs | [COMMON-CORE.md § Core Control-Plane REST APIs](../../common/COMMON-CORE.md#core-control-plane-rest-apis) | Includes workspace/item CRUD, resolve-by-name, pagination, LRO polling, and rate-limiting patterns | | OneLake Data Access | [COMMON-CORE.md § OneLake Data Access](../../common/COMMON-CORE.md#onelake-data-access) | Requires storage.azure.com token, not Fabric token; covers URL structure, ADLS Gen2 parity, and shortcuts | | Job Execution | [COMMON-CORE.md § Job Execution](../../common/COMMON-CORE.md#job-execution) | Run On-Demand Job; Get / Cancel Job | | Capacity Management | [COMMON-CORE.md § Capacity Management](../../common/COMMON-CORE.md#capacity-management) | List Capacities; Assign Workspace to Capacity | | Gotchas, Best Practices & Troubleshooting | [COMMON-CORE.md § Gotchas, Best Practices & Troubleshooting](../../common/COMMON-CORE.md#gotchas-best-practices--troubleshooting) | Common Errors; Best Practices | | Tool Selection Rationale | [COMMON-CLI.md § Tool Selection Rationale](../../common/COMMON-CLI.md#tool-selection-rationale) || | Authentication Recipes | [COMMON-CLI.md § Authentication Recipes](../../common/COMMON-CLI.md#authentication-recipes) | az login flows, environment detection, token acquisition, and debugging | | Fabric Control-Plane API via az rest | [COMMON-CLI.md § Fabric Control-Plane API via az rest](../../common/COMMON-CLI.md#fabric-control-plane-api-via-az-rest) | Always pass --resource; includes workspace/item operations, pagination, and LRO patterns | | OneLake Data Access via curl | [COMMON-CLI.md § OneLake Data Access via curl](../../common/COMMON-CLI.md#onelake-data-access-via-curl) | Use curl not az rest (different token audience); file list/read/upload/delete and directory creation | | SQL / TDS Data-Plane Access | [COMMON-CLI.md § SQL / TDS Data-Plane Access](../../common/COMMON-CLI.md#sql--tds-data-plane-access) | sqlcmd (Go) connect, query, CSV export, service principal auth, and connection parameter discovery | | Job Execution (CLI) | [COMMON-CLI.md § Job Execution](../../common/COMMON-CLI.md#job-execution) | Run notebooks/pipelines, refresh semantic models, check/cancel jobs | | OneLake Shortcuts | [COMMON-CLI.md § OneLake Shortcuts](../../common/COMMON-CLI.md#onelake-shortcuts) | Create a Shortcut; List Shortcuts; Delete a Shortcut | | Capacity Management (CLI) | [COMMON-CLI.md § Capacity Management](../../common/COMMON-CLI.md#capacity-management) | List Capacities; Assign Workspace to Capacity | | Composite Recipes | [COMMON-CLI.md § Composite Recipes](../../common/COMMON-CLI.md#composite-recipes) | End-to-end workspace→lakehouse→file, SQL endpoint→query, and notebook execution recipes | | Gotchas & Troubleshooting (CLI-Specific) | [COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)](../../common/COMMON-CLI.md#gotchas--troubleshooting-cli-specific) || | Quick Reference | [COMMON-CLI.md § Quick Reference](../../common/COMMON-CLI.md#quick-reference) | az rest Template; Token Audience ↔ CLI Tool Matrix | | Prerequisites | [SKILL.md § Prerequisites](#prerequisites) || | Must/Prefer/Avoid | [SKILL.md § Must/Prefer/Avoid](#mustpreferavoid) | Guardrails for read-only semantic model usage. MUST DO; PREFER; AVOID | | Metadata Discovery | [SKILL.md § Metadata Discovery](#metadata-discovery) | INFO.VIEW. and INFO. functions. | | Recommended Discovery Order | [SKILL.md § Recommended Discovery Order](#recommended-discovery-order) | Preferred order for metadata exploration | | Frequently Used INFO Functions | [SKILL.md § Frequently Used INFO Functions](#frequently-used-info-functions) | High-usage function list for first-pass discovery | | Complete INFO Function Catalog (Dynamic) | [discovery-queries.md § Complete INFO Function Catalog (Dynamic)](./references/discovery-queries.md#complete-info-function-catalog-dynamic) || | Metadata Object → INFO Function Map | [SKILL.md § Metadata Object → INFO Function Map](#metadata-object--info-function-map) | Inlined mapping for object-focused discovery | | Query Execution | [SKILL.md § Query Execution](#query-execution) | ExecuteQuery usage shape | | Troubleshooting | [SKILL.md § Troubleshooting](#troubleshooting) | Resolve common execution and metadata issues | | Examples | [SKILL.md § Examples](#examples) | Sample Metadata Query; Sample Data Query | | Scope Estimation Queries | [discovery-queries.md § Scope Estimation Queries](./references/discovery-queries.md#scope-estimation-queries) || | INFO Output Columns | [discovery-queries.md § INFO Output Columns](./references/discovery-queries.md#info-output-columns) | INFO.VIEW. (preferred first-pass metadata); Critical INFO. (deep metadata / diagnostics) | | Narrowing Results (Projection + Filtering) | [discovery-queries.md § Narrowing Results (Projection + Filtering)](./references/discovery-queries.md#narrowing-results-projection--filtering) || | Deep Metadata Queries | [discovery-queries.md § Deep Metadata Queries](./references/discovery-queries.md#deep-metadata-queries) || | Dependency Discovery | [discovery-queries.md § Dependency Discovery](./references/discovery-queries.md#dependency-discovery) | Dependency rowset for a DAX query; Dependency rows scoped to a measure; Reverse dependencies (what references a measure) |
Prerequisites
- [COMMON-CORE.md](../../common/COMMON-CORE.md) — Fabric concepts, authentication, and control-plane API context.
- [COMMON-CLI.md](../../common/COMMON-CLI.md) — CLI-oriented discovery and token/audience patterns.
Must/Prefer/Avoid
MUST DO
- Call MCP tools for discovery and execution — use
DiscoverArtifactsto find the semantic model GUID andExecuteQueryto run DAX queries. These are MCP tool invocations, not shell commands. Do NOT useaz rest,Get-Command, or PowerShell scripts to discover or invoke them. - Keep this skill read-only: metadata discovery and analytical DAX queries only.
- Treat DAX data queries and
INFO.VIEW.*as available to any user with read access to the semantic model; assume otherINFO.*functions may require elevated permissions. - Resolve workspace and semantic model item identity dynamically; do not hardcode IDs.
- Use DAX
INFO.VIEW.*/INFO.*for metadata discovery before writing data queries.
PREFER
- Validate semantic model scope early (
artifactId) before iterative query refinement. - Discover semantic model schema progressively: use filtered and projected
INFO.VIEW.*/INFO.*calls (e.g.,SELECTCOLUMNS+FILTER) to fetch only the information directly relevant to the current task instead of retrieving the full schema up front. See [discovery-queries.md § Narrowing Results (Projection + Filtering)](./references/discovery-queries.md#narrowing-results-projection--filtering). - Keep guidance provider-agnostic so tool endpoint migration is low risk.
AVOID
- Model-change operations in this skill.
Recommended Discovery Order
- Run the [discovery-queries.md § Scope Estimation Queries](./references/discovery-queries.md#scope-estimation-queries) to estimate metadata scope (table, column, measure, and relationship counts) before deep discovery.
- Start with
INFO.VIEW.TABLES()for a fast table inventory. - Expand to
INFO.VIEW.COLUMNS()andINFO.VIEW.MEASURES()for semantic details. - Use
INFO.VIEW.RELATIONSHIPS()to validate joins and filter behavior. - Use the full query catalog in [discovery-queries.md](./references/discovery-queries.md) for deeper patterns.
Frequently Used INFO Functions
INFO.VIEW.TABLESINFO.VIEW.MEASURESINFO.VIEW.COLUMNSINFO.VIEW.RELATIONSHIPSINFO.PARTITIONSINFO.MODELINFO.STORAGETABLECOLUMNSEGMENTSINFO.DEPENDENCIESINFO.EXPRESSIONSINFO.ROLESINFO.STORAGETABLECOLUMNSINFO.CALCULATIONGROUPSINFO.CALCULATIONITEMSINFO.CULTURESINFO.OBJECTTRANSLATIONSINFO.USERDEFINEDFUNCTIONSINFO.REFRESHPOLICIESINFO.ATTRIBUTEHIERARCHYSTORAGESINFO.COLUMNPARTITIONSTORAGESINFO.COLUMNSTORAGESINFO.DICTIONARYSTORAGESINFO.HIERARCHYSTORAGESINFO.PARTITIONSTORAGESINFO.RELATIONSHIPINDEXSTORAGESINFO.RELATIONSHIPSTORAGESINFO.SEGMENTMAPSTORAGESINFO.SEGMENTSTORAGESINFO.STORAGEFOLDERSINFO.STORAGEFILESINFO.TABLESTORAGESINFO.GENERALSEGMENTMAPSEGMENTMETADATASTORAGESINFO.DELTATABLEMETADATASTORAGESINFO.PARQUETFILESTORAGESINFO.STORAGETABLES
Metadata Object → INFO Function Map
| Metadata Object | Primary INFO functions | |---|---| | Model | INFO.MODEL | | Tables | INFO.VIEW.TABLES | | Columns | INFO.VIEW.COLUMNS, INFO.GROUPBYCOLUMNS, INFO.RELATEDCOLUMNDETAILS | | Measures | INFO.VIEW.MEASURES, INFO.FORMATSTRINGDEFINITIONS, INFO.DETAILROWSDEFINITIONS | | Relationships | INFO.VIEW.RELATIONSHIPS | | Partitions | INFO.PARTITIONS, INFO.EXPRESSIONS, INFO.QUERYGROUPS, INFO.REFRESHPOLICIES, INFO.DATACOVERAGEDEFINITIONS | | Security roles & permissions | INFO.ROLES, INFO.TABLEPERMISSIONS, INFO.COLUMNPERMISSIONS | | Hierarchies | INFO.HIERARCHIES, INFO.LEVELS, INFO.ATTRIBUTEHIERARCHIES, INFO.VARIATIONS | | Calculation groups/items | INFO.CALCULATIONGROUPS, INFO.CALCULATIONITEMS, INFO.CALCULATIONEXPRESSIONS | | Perspectives | INFO.PERSPECTIVES, INFO.PERSPECTIVETABLES, INFO.PERSPECTIVECOLUMNS, INFO.PERSPECTIVEHIERARCHIES, INFO.PERSPECTIVEMEASURES | | Calendars | INFO.CALENDARS, INFO.CALENDARCOLUMNGROUPS, INFO.CALENDARCOLUMNREFERENCES | | Cultures | INFO.CULTURES | | Object translations | INFO.OBJECTTRANSLATIONS | | Functions | INFO.USERDEFINEDFUNCTIONS | | Dependencies / lineage | INFO.DEPENDENCIES, INFO.CHANGEDPROPERTIES, INFO.EXCLUDEDARTIFACTS | | Storage internals / size | INFO.STORAGEFOLDERS, INFO.STORAGEFILES, INFO.TABLESTORAGES, INFO.COLUMNSTORAGES, INFO.PARTITIONSTORAGES, INFO.SEGMENTMAPSTORAGES, INFO.DICTIONARYSTORAGES, INFO.COLUMNPARTITIONSTORAGES, INFO.SEGMENTSTORAGES, INFO.RELATIONSHIPSTORAGES, INFO.RELATIONSHIPINDEXSTORAGES, INFO.ATTRIBUTEHIERARCHYSTORAGES, INFO.HIERARCHYSTORAGES, INFO.GENERALSEGMENTMAPSEGMENTMETADATASTORAGES, INFO.DELTATABLEMETADATASTORAGES, INFO.PARQUETFILESTORAGES, INFO.STORAGETABLES, INFO.STORAGETABLECOLUMNS, INFO.STORAGETABLECOLUMNSEGMENTS |
Query Execution
Use the FabricIQ MCP server tools directly — call them as MCP tool invocations:
| Parameter | Description | |-----------|-------------| | artifactId | GUID of the target semantic model | | daxQueries | Array of 1–4 DAX queries (each must contain a single EVALUATE statement) | | maxRows | Optional. Default 250, max 1,000 rows per query |
How to find the artifact ID
- Preferred: Call
DiscoverArtifacts(MCP tool) withsearchQueryset to the model name andartifactTypes: ["SemanticModel"]. - Fallback only if MCP discovery is unavailable: Resolve via Fabric REST (
az rest) — list items of typeSemanticModelin the workspace and filter bydisplayName.
Executing a query
Call the ExecuteQuery MCP tool directly:
ExecuteQuery(
artifactId = "",
daxQueries = ["EVALUATE SUMMARIZECOLUMNS(...)"]
)
Getting the schema first
Call GetSemanticModelSchema(artifactId = "") to retrieve table/column/measure definitions before writing DAX.
Troubleshooting
- ExecuteQuery capability is unavailable in the MCP server
- Issue: Query execution cannot start because
ExecuteQueryis not available in the active tool list. - Cause: The FabricIQ MCP server is not registered, not loaded, or the current client session has stale tool metadata.
- Fix: Verify the active MCP server/tool inventory and confirm
ExecuteQueryis exposed. - Advanced INFO functions return permission errors
- Issue: Queries against
INFO.*fail with authorization or privilege-related errors. - Cause: Many
INFO.*functions require elevated semantic model permissions beyond standard read access. - Fix: Start with
INFO.VIEW.*functions for read-oriented discovery. - Metadata output volume is too large for focused analysis
- Issue: Returning full metadata rowsets introduces too many properties and crowds the working context.
- Cause: Unbounded
INFO.VIEW.*andINFO.*queries return broad object/property surfaces that are often unnecessary for the current task. - Fix: Use the scope estimation queries in [discovery-queries.md § Scope Estimation Queries](./references/discovery-queries.md#scope-estimation-queries) to estimate scope and inspect output schemas, then narrow results with projection and filtering as shown in [discovery-queries.md § Narrowing Results (Projection + Filtering)](./references/discovery-queries.md#narrowing-results-projection--filtering).
- Do not use
INFODAX functions to retrieve role memberships - Issue:
INFO.ROLEMEMBERSHIPS()returns empty or incomplete results. - Cause: Role members are assigned at the service level (Entra ID) after deployment, not in the model definition — so DAX
INFOfunctions cannot reliably surface them. - Fix: Redirect to Manage role membership documentation for current guidance on role membership management.
Examples
For the full query catalog (including dependency patterns), see [discovery-queries.md](./references/discovery-queries.md).
Sample Metadata Query
EVALUATE
INFO.VIEW.TABLES()
ORDER BY [Name]
Sample Data Query
DEFINE
MEASURE 'Sales'[Total Sales] = SUM('Sales'[Amount])
EVALUATE
SUMMARIZECOLUMNS(
'Customer'[Customer Name],
"Total Sales", [Total Sales]
)
ORDER BY [Total Sales] DESC
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: microsoft
- Source: microsoft/skills-for-fabric
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.