Ontology CLI
MicrosoftOfficialPublished by Microsoft
- Skill
- Tool integration
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The ontology-cli skill provides a specialized interface for interacting with Microsoft Fabric Ontology items. It operates in two distinct, non-convertible modes: an authoring mode for managing legacy V1 entity and relationship definitions, and a consumption mode for querying new-experience (V2) Ontologies. The skill acts as a mode dispatcher, requiring users to read specific reference documentation before executing commands to ensure correct payload generation and state management. It does not support V1-to-V2 upgrades or V2 authoring.
What it does
- Creates and updates legacy V1 Ontology entity and relationship definitions.
- Answers natural-language questions about existing new-experience (V2) Ontologies.
- Generates grounded code or data insights from V2 Ontologies via the Ontology Agent.
- Manages data bindings for V1 Ontology entity types.
- Provides a structured workflow for resolving workspace and item identifiers.
When to use it
- When you need to define or modify the structure of a legacy V1 Ontology.
- When you need to query data or metadata from a new-experience (V2) Ontology.
- When you need to generate runnable code based on V2 Ontology rules.
- When you are working within the Microsoft Fabric ecosystem and require specific Ontology item operations.
Advantages
- Ensures grounded, validated responses by using the Ontology Agent for V2 queries.
- Provides a clear separation between legacy authoring and modern consumption workflows.
- Reduces errors by enforcing mandatory reference reading before command execution.
- Maintains consistency in Fabric item management through standardized CLI patterns.
Usage examples
- “Using the ClinicOperations ontology, how many clinics are there?”
- The agent enters consumption mode, verifies the ontology, and queries the data to return the clinic count.
- “Create a legacy V1 ontology item with Customer and Order entity types bound to the lakehouse.”
- The agent enters authoring mode, prepares the required JSON definition tree, and executes the creation call.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/ontology-cli/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip ontology-cli.zip -d .agents/skills
Documentation by Microsoft
Telemetry — MANDATORY. Every
api.fabric.microsoft.comcall must carryx-ms-fabric-skill: ontology-cli(az rest:--headers "x-ms-fabric-skill=ontology-cli"), including every LRO poll,fabric_lroand retry. Snippets omit it — add it anyway.
CRITICAL NOTES
To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering
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
Skill disambiguation: use
ontology-clifor operations on an Ontology item and questions grounded in that Ontology. Natural-language data questions over existing Power BI reports/models arefabriciq; report creation, editing, publishing, or rebinding ispowerbi-report-cli; semantic-model or DAX authoring issemantic-model-authoring. Naming an Ontology as a report's data source does not move report authoring into this skill.Consumption runs through the Ontology Agent MCP server, never around it. Do not decode an ontology definition to hand-compose KQL / T-SQL / Spark SQL, and do not delegate ontology data questions to
eventhouse-cli/sqldw-cli/spark-cli. That path loses the agent's grounding and validation and is not metered.Natural-language consumption supports only new-experience (V2) Ontologies. Call
tools/listfirst. Ifask_ontologyis absent, stop and tell the user that V1 natural-language queries are unsupported and the Ontology must be upgraded or recreated in the new experience outside this skill's authoring flow. Never fall back tosearch_ontology.Authoring is legacy V1-only. The JSON
EntityTypes/.../definition.jsonitem-definition flow below cannot create, convert, or upgrade a new-experience (V2) Ontology. Do not route a V2 upgrade/recreation request intoauthoring.Kusto bindings use the parent Eventhouse item ID, never the KQL database ID. Validate the staged binding against discovered source metadata before presenting an authoring preview; unresolved or mismatched source identities block the write.
Ontology CLI Skill
This skill owns two explicit, non-convertible surfaces: legacy V1 JSON-definition authoring, and read-only questions over existing new-experience (V2) Ontologies through the Ontology Agent MCP endpoint. It does not upgrade V1 items to V2 or author V2 items.
It is a mode dispatcher and contains NO procedures. Pick the mode that matches the request from the table below, then read the matching references/<mode>.md file end to end with your file-reading tool BEFORE issuing a single command. That file holds the endpoints, payload shapes, templates and gotchas; acting without it produces wrong payloads and wrong results.
Mode selection
| Mode | Use when the request ... | Example triggers | Read this first |
|---|---|---|---|
authoring | creates or updates a legacy V1 Ontology's JSON entity/relationship definitions or data bindings; V2 creation/upgrade is out of scope | create legacy ontology item, bind V1 entity type, add V1 relationship type, update legacy ontology definition | references/authoring.md |
consumption | asks a question about an existing new-experience (V2) Ontology -- its data, entities, or rules -- or wants grounded runnable code generated from it | how many clinics are there, which treatment rooms are busiest, what entities exist, list the ontology rules, generate KQL from this ontology | references/consumption.md |
Consumption sub-references (read directly, not through chained links):
references/consumption/examples.md: verified calls, worked examples and troubleshooting.
references/consumption/request-files.md: read before preparing a PowerShell MCP request; absolute payload paths and local JSON validation.
Mode boundary rule
consumption is read-only. Any definition write goes through the authoring mode's preview-and-confirm flow -- never call updateDefinition from a consumption request.
If a request genuinely spans modes, handle them one at a time and read each reference before you start that part. If the mode is ambiguous after reading this table, ask one short clarifying question instead of guessing.
Terminal write -- the step you must not skip
Reading the reference and planning the change is NOT completing the task. Each mutating mode ends with one state-changing call. If you did not issue it, nothing was persisted -- say so explicitly rather than reporting success.
| Mode | Terminal write |
|---|---|
authoring | createItem (POST /v1/workspaces/{ws}/items) to create a legacy V1 Ontology, then POST .../updateDefinition to persist entity types, relationships and bindings. This cannot create or upgrade V2. |
consumption | none -- this mode is read-only |
Before you report the task done, confirm the terminal call returned success and, where the reference documents a readback, read the artefact back to prove the change landed.
Shared essentials (all modes)
Resolve the workspace and item first; every mode depends on it.
| Task | Reference | Notes |
|---|---|---|
| Finding Workspaces and Items in Fabric | COMMON-CLI.md | Mandatory -- read before resolving any workspace or item id |
| Catalog Search | COMMON-CORE.md | Request/response shape, Catalog.Read.All scope, 24 h indexing delay |
| Pagination Pattern | COMMON-CLI.md | Catalog Search and item listings both page via continuationToken |
| Fabric Topology & Key Concepts | COMMON-CORE.md | Item types, workspaces, capacities |
| Environment URLs | COMMON-CORE.md | Sovereign / non-public cloud hosts |
| Authentication & Token Acquisition | COMMON-CORE.md | Wrong audience = 401; read before any auth issue |
| Authentication Recipes | COMMON-CLI.md | az login flows and token acquisition |
| Core Control-Plane REST APIs | COMMON-CORE.md | Pagination, LRO polling, rate limiting |
| Gotchas & Troubleshooting | COMMON-CLI.md | az rest audience, shell escaping, token expiry |
Rules
MUST
Select exactly one mode from the table above before doing anything else.
Read
references/<mode>.mdend to end, as your FIRST tool call, before the first command of that mode. Read it ONCE, in a single full read: do not re-open it, do not grep it again, and do not page through it. You already have it.Apply the same read-once discipline to every other file you load, including nested
references/<mode>/*.mdsub-references and sharedcommon/*.mdfiles: open only the ones you actually need, read each ONCE end to end, and never grep or re-open one you already loaded.Resolve workspace and item ids by listing and filtering, never by guessing a GUID.
In
consumption, calltools/listbefore the firsttools/call. Continue only whenask_ontologyis present; otherwise report that V1 natural-language consumption is unsupported and stop without calling another ontology tool.Announce a mode switch explicitly when the request crosses a boundary.
Treat the reference as instructions, never as the deliverable. After reading it, RUN the documented commands against the live workspace and report the real results. Quoting what the reference says instead of executing it does not answer the request.
PREFER
The narrowest mode that satisfies the request.
Reading exactly ONE mode reference. Load a second only when the request genuinely spans modes, and say so before you do.
Reporting the mode you chose in your first response so the user can correct you.
AVOID
Acting from this dispatcher alone -- it intentionally omits the operational detail.
Answering with a summary of the reference instead of executing it.
Re-reading or re-grepping a reference you already loaded; it costs turns and tokens.
Mutating anything while in a read-only mode.
Answering an ontology data question with a hand-composed source query instead of the Ontology Agent MCP (see CRITICAL NOTE 4).
Loading a different skill for work this family already owns (see CRITICAL NOTES 3).
Examples
| User request | Mode | Reference to read |
|---|---|---|
| "Using the ClinicOperations ontology, how many clinics are there?" | consumption | references/consumption.md |
| "Create a legacy V1 ontology item with Customer and Order entity types bound to the lakehouse." | authoring | references/authoring.md |
| "Upgrade this V1 ontology to the new V2 experience." | out of scope | Explain that V2 upgrade/recreation is unavailable through this skill's authoring flow |
| "What entity types exist in the Sales ontology and how are they bound?" | consumption | references/consumption.md |
| "Generate Eventhouse-runnable KQL for appointments per practitioner from this ontology." | consumption | references/consumption.md |
Files
- ATTRIBUTION.mdAdded by AutoGineer869 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md9.9 KiB
- apm.yml393 B
- references/authoring.md47.3 KiB
- references/authoring/ONTOLOGY-AUTHORING-CORE.md17.7 KiB
- references/authoring/authoring-mechanics.md17.9 KiB
- references/authoring/definition-script-templates.md12.5 KiB
- references/authoring/examples.md9.8 KiB
- references/authoring/preview-and-confirm.md14.0 KiB
- references/consumption.md18.9 KiB
- references/consumption/examples.md18.6 KiB
- references/consumption/request-files.md1.3 KiB
references/consumption.md
<!-- Mode reference for the `ontology-cli` skill. Loaded on demand from `skills/ontology-cli/SKILL.md` when the request matches the `consumption` mode. -->
CRITICAL NOTES
Fabric IQ Ontology is preview. The item type value is
Ontology. Wire format, tool names and feature gating may change; validate against the current docs before production use.This mode is read-only and answers questions only through the Ontology Agent MCP server. It never decodes an item definition and never composes KQL / T-SQL / Spark SQL itself. Going around the MCP layer loses the agent's grounding and its metered-consumption accounting.
Natural-language consumption supports only new-experience (V2) Ontologies. Always call
tools/listbeforetools/calland continue only whenask_ontologyis present. If it is absent, report that V1 natural-language queries are unsupported and the Ontology must be upgraded or recreated in the new experience. Do not callsearch_ontology.A tool failure arrives as HTTP 200 with
result.isError: true. Check that field; HTTP status alone will not tell you the call failed.To find the workspace details (including its ID) from workspace name: list all workspaces and use JMESPath filtering.
To find the ontology item ID from workspace ID and item name: list all items of type
Ontologyin that workspace and use JMESPath filtering.Every call to a
*.fabric.microsoft.comhost — including the MCPtools/listandtools/call— must carryx-ms-fabric-skill: ontology-cli.
ontology-cli consumption mode — Natural-language questions via the Ontology Agent MCP
Contents
| Section | Covers |
|---|---|
| Why the MCP layer | What this mode does, and what it refuses to do |
| Endpoint | URL shapes, host, auth, JSON-RPC envelope |
| Tool Catalog | Tool names, schemas, version gating, selection tree |
| Workflow | Resolve, discover, ask, present |
| Writing a Good request | The single biggest quality lever |
| Code Generation | queryLanguage plus an execution target |
| Response Contract | isError, conversationId, latency budget |
| Must / Prefer / Avoid | Decision rules |
Shared prerequisites — az login, the az rest template, CLI escaping — are indexed in this
skill's SKILL.md under Shared essentials. One of them is not optional here:
COMMON-CLI.md § Finding Workspaces and Items in Fabric is mandatory before you resolve
any ID — load it from the SKILL.md index, then follow Workflow step 1. Verified
calls and the troubleshooting table live in the consumption/examples.md reference.
Why the MCP layer
The Ontology Agent MCP server is the supported and metered query path. It grounds business terms, composes, executes and validates queries across bound sources, and returns answers with evidence.
This mode answers business questions, returns grounded runnable code, and inspects entities and rules — all through the tools in the Tool Catalog. Creating, altering or rebinding an ontology belongs to the authoring mode.
Do not bypass MCP. Never decode definitions, map physical columns, or hand off source queries to sibling skills. That loses grounding, validation and metered accounting. If
ask_ontologycannot answer, report the failure and stop.
Endpoint
The MCP server is item-scoped: one instance per ontology, addressed by workspace ID and ontology item ID. There is no "which ontology" tool parameter — the URL is the scope.
URL shape
POST {host}/v1/mcp/dataPlane/workspaces/{workspaceId}/items/{ontologyItemId}/ontologyEndpointUse this data-plane form in Fabric production. Do not substitute legacy route aliases.
The two 404 texts mean different things — consumption/examples.md has the full table.
Host
Use https://api.fabric.microsoft.com. Resolve workspace and ontology IDs through that same
host. If Catalog Search does not find the ontology, verify the signed-in tenant and identity,
then ask for the workspace ID rather than probing alternate hosts.
Auth
Use delegated user authentication: az login, then az rest --resource "https://api.fabric.microsoft.com". The caller needs read access to the ontology item. Due to a documented preview limitation, Ontology MCP access does not currently support service principals; stop and request an interactive user sign-in instead of retrying a service-principal token.
JSON-RPC envelope
The endpoint speaks JSON-RPC 2.0 over a single POST: tools/list to discover, then tools/call
carrying params.name and params.arguments. Send Content-Type: application/json and
Accept: application/json, text/event-stream. Handle either a raw JSON response or the final
JSON-RPC response carried by an SSE data: frame. Ignore progress notifications,
including those after the response; recover the answer from the saved file rather than
repeating the call. The exact payloads for each tool are in
consumption/examples.md.
Always pass the body with --body @file.json, never inline. Business questions contain quotes, apostrophes and commas that break under shell escaping — this is the most common self-inflicted failure in this mode.
PowerShell: write, validate, and POST the same absolute file. Recreate variables in fresh shells; follow consumption/request-files.md, indexed in SKILL.md.
Tool Catalog
These names and schemas are verified against a live V2 ontology. Treat this table as a guide to interpreting tools/list, not as a substitute for calling it.
| Tool | Arguments | Available on | Purpose |
|---|---|---|---|
ask_ontology | request (string, required, 3-10000 chars) | V2 only | Answers a business question over the ontology and its bound data, or returns grounded, validated, runnable code. This is the tool for natural-language questions. |
list_ontology_entities | entityName (string, optional, exact match) | V2 only | Entities with properties, keys, backing tables, synonyms and annotations. |
list_ontology_rules | entityNames (array of string, optional, 1-100 items) | V2 only | Business rule definitions, including the natural-language statement and referenced entities. |
V2 support gate
The presence of ask_ontology is the support check. If tools/list omits it, the Ontology is not
on the supported new experience. Stop before tools/call, tell the user that V1 natural-language
queries are unsupported, and ask them to upgrade or recreate the Ontology in the new experience.
Do not try search_ontology, even if the server advertises it.
Tool selection
tools/list
|- ask_ontology absent? -> stop; report V1 unsupported and request upgrade/recreation
|- explicit entity/schema request? -> list_ontology_entities with a targeted entityName when possible
|- explicit business-rules request? -> list_ontology_rules with targeted entityNames when possible
|- otherwise -> ask_ontology for business questions and code generationDo not call a list_* tool as a warm-up before ask_ontology. The agent does its own grounding, and the listing is large — a 13-entity ontology returned roughly 44,000 characters. Call a list_* tool only when the user actually asked a schema question, or when ask_ontology reported that it could not find an entity and you need to show the user what does exist.
Workflow
Resolve scope. You need a workspace ID and an ontology item ID on a host that serves both. Follow COMMON-CLI.md § Finding Workspaces and Items in Fabric (indexed in
SKILL.md): when the user supplied a workspace, resolve that workspace and list/filter its Ontology items; use Catalog Search only when no workspace was specified.You were given Call Cost Workspace ID and ontology ID nothing — use them as given 0 Workspace ID + ontology name GET {host}/v1/workspaces/{ws}/items?type=Ontology, then exact-filter locally1 Workspace name + ontology name GET {host}/v1/workspaces, exact-filter workspace, thenGET .../items?type=Ontologyand exact-filter item2 No workspace + ontology name/partial name POST {host}/v1/catalog/searchwith{"search":"<name>","filter":"Type eq 'Ontology'"}1 No workspace + bare ontology GUID Catalog Search with {"filter":"Type eq 'Ontology'","pageSize":100}, then matchidlocally1 per 100 ontologies in the whole tenant Every Catalog Search hit carries
hierarchy.workspace.idbesideid, so a no-workspace search yields both halves of the MCP URL.Never put a GUID in
search. It matches artefacts named after the ontology (<name>_lh_<guid>) and misses the ontology itself. Filter by type and compareidyourself.searchis a case-insensitive word-prefix match over name and description — not exact, not typo-tolerant. Multiple hits are normal; list them and ask which one. Never silently take the first.Cap the bare-GUID scan at 3 pages. Pages 2+ send only
continuationToken; repeatingfilterfails. If unmatched, stop and ask for the workspace ID.Not found is rarely an indexing problem. Most often you are signed in to the wrong tenant or identity. Name the suspect and ask; a wider scan fixes neither. When a workspace was specified, do not broaden to tenant-wide Catalog Search. Catalog Search can lag up to 24 h for a brand-new item.
Discover tools.
tools/listagainst the item's MCP URL. One call per ontology per session — cache the result; the surface does not change mid-session.Pick the tool using the decision tree above.
Compose the request — see the next section. This is where answer quality is won or lost.
Call
tools/callwith--body "@file.json"and allow a generous timeout. Capture mistakes can cost another billed call:For text-producing clients (
az rest,curl), redirect the response to a file with1>, then read that file back in the same command. ForInvoke-RestMethod, never use1>on the returned object: PowerShell's formatter destroys nestedcontent[]asSystem.Object[]. Assign the response object and serialize it in the same process:$response = Invoke-RestMethod ...; $response | ConvertTo-Json -Depth 30 | Set-Content response.json.Save the complete response before any
--queryor field projection. Read bothisErrorand content from that file, never with separate service calls.Do not branch on captured
az reststdout being empty; read the saved response file instead.Never name a shell variable
$host. It is a reserved PowerShell automatic variable, the assignment fails, and you will re-run the whole call. Use$apiHost.
Check
result.isErrorbefore reading the text.Present the complete result in the final message, even if printed earlier. Lead with the finding in the user's vocabulary, bold key numbers, and use tables for rows. If too large, give the total, show as many rows as reasonably possible, and state the shown/omitted counts. Hide unrequested transport and cleanup details. For unsupported V1, state the new-experience requirement and upgrade/recreation action without narrating the plumbing.
An explicit verbatim request overrides summaries/tables. Copy the saved
result.content[].textinto a reply draft programmatically, machine-check it, then deliver that draft unchanged in chat. Do not re-author its JSON afterward or silently switch to file-only delivery. Seeconsumption/examples.md, "Verbatim JSON replies".
Multi-turn questions
ask_ontology has no conversation parameter: each call is independent. Restate follow-up context in request; result._meta.conversationId cannot be passed back. See consumption/examples.md.
Writing a Good request
request is the only input. Everything the agent needs has to be in that one string. A vague request is the number-one cause of a weak answer.
Include, when the user implied them:
The metric or object asked for, in business language ("number of overdue appointments", not "count of rows").
Scope and filters — entity, location, status, category.
Time range, stated absolutely or relatively ("in the last 30 days", "for calendar year 2025").
Grouping and ordering ("per department, highest first"). When the user says "for each X", group by X's identifier — prefer the ID when the entity has one — and ask for that ID in the output. Display names repeat: two departments in different sites can both be called
Radiology, and grouping on the name silently merges them into one row.Desired output — a number, a table of rows, a short explanation, or runnable code.
Keep the user's domain vocabulary. The ontology exists so that business terms resolve; translating "practitioners" into a guessed table name works against the agent. Weak and strong phrasings of the same question are in consumption/examples.md.
Constraints: 3 to 10000 characters. One question per call — a compound request produces a blurred answer and costs the same as two clean ones.
Code Generation
ask_ontology generates grounded, validated, runnable code when request names queryLanguage and an execution target. This is slower than a plain answer and uses real connection details, not placeholder tables.
Show the generated code to the user and let them decide whether to run it. Executing it belongs to the owning endpoint skill — eventhouse-cli, sqldw-cli, spark-cli or semantic-model-authoring. Never auto-execute generated code that writes.
Supported languages and a worked request are in the consumption/examples.md reference.
Response Contract
Success:
{ "jsonrpc": "2.0", "id": 2,
"result": {
"_meta": { "conversationId": "8b319d38-6472-4bd8-8351-80959687c0d3" },
"content": [ { "type": "text", "text": "There are **5 clinics**." } ],
"isError": false } }The answer is
result.content[], filtered to the singletype: "text"entry. Schema tools return JSON in that text: parse a copy for analysis; keep the original string for verbatim delivery.result.isError: truemeans the tool failed, even though HTTP said 200.A JSON-RPC-level
errorobject instead ofresultmeans the request itself was rejected — bad tool name, bad arguments, unknown method.Responses are capped at roughly 512 KB.
Latency — plan for it
These calls run a real agent conversation and are slow: measured 34-77 s for a simple aggregate on a live ontology, longer for code generation. Budget at least 120 s and raise your client timeout. Asynchronous task polling is not yet plumbed through the public gateway, so use the plain synchronous tools/call today.
Never re-send a request you have already paid for. Every tools/call opens a fresh agent conversation and is billed again. That includes re-sending the same body file just to reformat or re-extract the output: if you want a different view of the answer, read the response you already captured. On a timeout, tell the user the call exceeded the budget and ask whether to narrow the question — a retry may also still be racing the first call.
Must / Prefer / Avoid
Must
Require explicit ontology context. Route here only when the prompt names an ontology, by name or item ID, or is clearly a follow-up in an ontology session. A bare "Fabric IQ" or a Power BI report / semantic-model question is not an ontology task —
fabriciqowns those.Call
tools/listbefore the firsttools/callon an ontology, and pick from what it actually returned.Resolve IDs within the requested scope, per COMMON-CLI: list/filter inside a user-specified workspace, and use Catalog Search only when no workspace was specified. Never invent a GUID or broaden a scoped request tenant-wide.
Use absolute, locally validated UTF-8-without-BOM payload files. Write and parse the same path, then use quoted
--body "@$payloadPath"; never use a relative .NET writer after changing directories.Check
result.isErrorbefore you trust the text.Carry the telemetry header
x-ms-fabric-skill: ontology-clion every call,tools/listincluded.Report the real answer. Run the call and report what came back; describing what the tool would do is not an answer.
Machine-check verbatim reply drafts against the saved text. Recheck any edit; never retype or abbreviate identifiers, including
lineageTag, after checking.Reject unsupported Ontologies clearly. If
ask_ontologyis absent, say that natural-language consumption supports only new-experience (V2) Ontologies and ask the user to upgrade or recreate the item outside this legacy V1 authoring flow. Do not call another ontology tool.Say so when you cannot answer. If the tool is gated or the agent returns an error, state that plainly instead of substituting a hand-built query. When you did answer, do not explain which path served it.
Prefer
ask_ontologyfor supported business questions and code generation; use the targetedlist_ontology_entitiesorlist_ontology_rulestool for explicit schema or rule requests after the V2 support gate passes.One rich, self-contained request over several thin ones.
The user's domain vocabulary inside the request.
Caching the
tools/listresult for the life of the session.A targeted
entityNameorentityNamesfilter when you genuinely need a schema listing — the unfiltered form is large.
Avoid
Decoding the ontology item definition to hand-compose a query. It loses grounding and validation, and it does not meter. There is no approved fallback to
eventhouse-cli,sqldw-cliorspark-clifor ontology data questions.Calling a
list_*tool as a routine prelude toask_ontology.Re-sending a request you already paid for — to reformat the output, or blindly after a timeout or an
isErrorresponse.Calling
search_ontologyas a V1 fallback. V1 natural-language queries are unsupported.Blind retries after a timeout or an
isErrorresponse.Auto-running generated code, especially anything that writes.
Compound, multi-part questions in one request.
Mutating the ontology from this mode — that is the
authoringmode.Unrequested transport details — host, tool names, workspace/item GUIDs. Keep identifiers intact inside explicitly requested raw payloads.
Answering by reference — "the table above", "as shown earlier". The final message has to carry the result itself, in full.
Narrating the plumbing in the final message — which host, which tool served it, or which temp files you removed. Give the answer instead. For unsupported V1 items, give only the user-relevant new-experience requirement and upgrade/recreation action.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills-for-fabric · skills/ontology-cli · commit f8fac11
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- microsoft/skills-for-fabric
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download ontology-cli.zip