Skip to main content

dataverse

Microsoft Dataverse / Power Platform for coding agents -- connect to an environment, then record CRUD, bulk data, queries & analytics (pandas DataFrames, Jupyter notebooks), schema & metadata, solution ALM, administration, security, plug-in / custom-API / .NET (IOrganizationService) and Python-SDK / Web-API development, and Finance & Operations X++. Use whenever the user mentions Dataverse, Dynamics 365, Power Platform, or CRM, or asks to connect to, read, query, analyze, write, build an app / notebook / plugin / custom API against, register components on, or explore data, records, tables, entities, or an environment in any of them -- even if they do not say "Dataverse" or ask to connect first.

Source facts

Repository
JetBrains/skills
Last source activity
October 9, 2026 at 23:03
Detected SKILL.md language
English
Stars
385
Forks
33

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
3 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
dataverse
description
Microsoft Dataverse / Power Platform for coding agents -- connect to an environment, then record CRUD, bulk data, queries & analytics (pandas DataFrames, Jupyter notebooks), schema & metadata, solution ALM, administration, security, plug-in / custom-API / .NET (IOrganizationService) and Python-SDK / Web-API development, and Finance & Operations X++. Use whenever the user mentions Dataverse, Dynamics 365, Power Platform, or CRM, or asks to connect to, read, query, analyze, write, build an app / notebook / plugin / custom API against, register components on, or explore data, records, tables, entities, or an environment in any of them -- even if they do not say "Dataverse" or ask to connect first.
license
Complete terms in LICENSE.txt
compatibility
Requires network/internet access to reach the Dataverse Web API and Microsoft Entra ID for authentication.
metadata
{"short-description":"Connect to Dataverse and unpack the full dv-* skill set","author":"Microsoft","source":"https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse"}
# Microsoft Dataverse Entry point for working with Microsoft Dataverse (Power Platform / Dynamics 365) from a coding agent. It installs the specialist Dataverse skills, connects the environment, and routes each request to the right skill. | Need | Skill | | --- | --- | | Connect, authenticate, configure MCP, verify / troubleshoot | `dv-connect` | | Record CRUD, bulk create/update/upsert, CSV / FK-ordered import | `dv-data` | | Reads & analytics -- OData, QueryBuilder, FetchXML, DataFrames | `dv-query` | | Schema -- tables, columns, relationships, forms, views | `dv-metadata` | | Solution ALM -- create, export, import, pack/unpack | `dv-solution` | | Environment administration -- bulk delete, retention, org settings | `dv-admin` | | Security & access -- roles, users, business units | `dv-security` | | Finance & Operations X++ -- author, build, deploy | `erp-xpp` | ## How to use this skill (read first -- act, do not stall) When the user asks to **connect / set up / authenticate / switch** an environment, or to **read / query / write** Dataverse data: 1. **Act now, in this turn.** Work through the steps below immediately. Do **not** stop or report a blocker because the specialist skills, the Dataverse CLI, Python, or MCP tools are missing -- **installing and authenticating them IS the task**, not a reason to stop. 2. **Do not re-ask for what you were given.** If the request already contains the environment URL, use it. 3. **A Dataverse CLI profile is enough** to authenticate AND answer data queries. The MCP server and Python SDK are **optional** -- never require them for a connect or a simple read. 4. If a cached or stale skill path fails to resolve, find the active `dataverse` skill and continue from it. ## Step 1: Install the specialist skills (run now) If `dv-overview` / `dv-connect` / the needed `dv-*` skill is not already installed, run this immediately -- do not ask first, and do not report the missing skill as a blocker: ``` npx skills add microsoft/Dataverse-skills -s "*" -g ``` The `-g` flag installs the skills **globally for every agent and project** (under your global skills dir, e.g. `~/.agents/skills` and `~/.codex/skills`), so they persist across sessions and projects. **Read `dv-overview` and `dv-connect` in the same turn** and continue. If network policy blocks the command, request network escalation and retry before reporting it blocked. ## Step 2: Install the Dataverse CLI | Tool | Check | Install | | --- | --- | --- | | Node.js | `node --version` | prerequisite for the CLI | | Dataverse CLI | `npm list -g @microsoft/dataverse` | `npm install -g @microsoft/dataverse@latest` (only if missing) | **Python is optional.** It is needed only for the Python SDK paths (`dv-data` / `dv-query` bulk + analytics) and `scripts/auth.py`. If Python is absent, continue with the CLI, note that the SDK path was skipped, and do not install an interpreter unless the task needs it. ## Step 3: Authenticate (CLI) ``` dataverse auth create --environment <your-environment-url> ``` If interactive auth produces no prompt (a restricted or headless host), stop it and retry with `--deviceCode`, then share the device code with the user. Record `DATAVERSE_URL` and `TENANT_ID` in a project `.env`. If an admin-consent error appears, share the exact consent URL the CLI prints -- never synthesize one. ## Step 4: Verify, then serve the request ``` dataverse auth who # confirms the profile + environment dataverse org who # confirms the data plane ``` Once the profile targets the right environment, **you are connected for CLI data work** -- route to the specialist skill and answer the request now. Example read: ``` dataverse data query --sql "SELECT TOP 10 firstname, lastname FROM contact WHERE lastname LIKE 'A%' ORDER BY lastname, firstname" --json ``` When the user says "top N" without giving a ranking, pick a sensible sort (e.g. alphabetical) and state which you used. ## Step 5 (optional): MCP server + Python SDK Do this only when the user wants in-agent Dataverse **tools** (MCP) or **bulk / analytics** via the Python SDK. Neither is required for CLI reads. - **MCP:** set `MCP_CLIENT_ID` in `.env` (Copilot `aebc6443-996d-45c2-90f0-388ff96faa56`; Claude / Cursor / Codex `0c412cc3-0dd6-449b-987f-05b053db9457`), register `npx @microsoft/dataverse mcp <url>` in the agent's MCP config (`.mcp.json` for Copilot, `claude mcp add` for Claude, `~/.cursor/mcp.json` for Cursor, `~/.codex/config.toml` for Codex), then allowlist with `dataverse mcp allow <MCP_CLIENT_ID>` (or `python scripts/enable-mcp-client.py` if `dv-connect` fetched it). The agent must restart before MCP tools load. Tenant admin consent gates **MCP registration only** -- CLI reads may proceed from the authenticated profile while consent is pending. - **Python SDK:** `pip install --upgrade PowerPlatform-Dataverse-Client python-dotenv azure-identity msal msal-extensions requests pandas`. ## Connection states (report precisely -- do not conflate) - **CLI authenticated** -- `dataverse auth who` shows the intended URL + user. - **Data-plane reachable** -- a real read succeeds (e.g. a small `dataverse data query`). - **MCP configured** -- client allowlisted, GA validation passes, host config points at the URL (a Preview `403` is expected when GA is valid). - **MCP loaded** -- the agent was restarted and now exposes the Dataverse tools. Never claim MCP is connected just because CLI auth succeeded. ## Telemetry attribution (JetBrains) When `dv-connect` runs under a JetBrains IDE it detects the surface and appends a `/jetbrains` suffix to the agent, writing `DATAVERSE_PLUGIN_AGENT=<agent>/jetbrains` (e.g. `codex/jetbrains`) to `.env`; `scripts/auth.py` then stamps `agent=<agent>/jetbrains` into the operation-context so Dataverse telemetry attributes the traffic to JetBrains. If the suffix is missing after connect, append `/jetbrains` to the `DATAVERSE_PLUGIN_AGENT` value yourself. Use the **verified** plugin version in any attribution context (read it from the plugin manifest) -- never guess it. ## Helper scripts `scripts/auth.py` (auth + attribution) and `scripts/enable-mcp-client.py` (MCP allowlist) are **not bundled with this tile** -- the `dv-connect` skill fetches them from canonical (`microsoft/Dataverse-skills`) into the project `scripts/` directory at connect-time. Only the Python SDK path and the script-based MCP allowlist need them; CLI reads do not. If a task needs `scripts/auth.py` and it is absent, run `dv-connect` first. Do not imply `auth.py` ran if Python is absent.
View on GitHub