TALXIS.CLI 1.20.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global TALXIS.CLI --version 1.20.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local TALXIS.CLI --version 1.20.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=TALXIS.CLI&version=1.20.0
                    
nuke :add-package TALXIS.CLI --version 1.20.0
                    

TALXIS DevKit CLI (txc)

This project is currently in a development phase and not ready for production use. While we actively use these tools internally, our aim is to share and collaborate with the broader community to refine and enhance their capabilities. We are in the process of gradually open-sourcing the code, removing internal dependencies to make it universally applicable. At this stage, it serves as a source of inspiration and a basis for collaboration. We welcome feedback, suggestions, and contributions through pull requests.

If you wish to use this project for your team, please contact us at hello@networg.com for a personalized onboarding experience and customization to meet your specific needs.


TALXIS DevKit CLI (txc) is a code-first toolkit for Power Platform and Dataverse development. Scaffold components locally, validate with builds, and synchronize to a live environment.

Getting Started

Prerequisites

  • .NET 10 SDK or later (dotnet --version should show 10.0.x+)
  • PowerShell (pwsh) — required by template post-action scripts
  • GitHub Copilot CLI (or an alternative AI harness like Claude Code) for MCP

The easiest way to use TALXIS DevKit is through the MCP server with GitHub Copilot or another AI assistant. No manual CLI commands needed — the AI discovers and calls tools for you.

MCP Server setup instructions

CLI (advanced)

For scripting, CI/CD pipelines, or when you prefer manual control:

# Run without installing (dnx ships with .NET 10 SDK)
dnx TALXIS.CLI -- workspace explain

# Or install as a global tool
dotnet tool install --global TALXIS.CLI
txc workspace explain

Table of Contents

Detailed guides: Data Plane · Schema Management · Changeset Staging · Architecture · Profiles & Auth · Output Contract


Identity, Connections & Profiles

txc decouples who you are (credentials) from where you target (connections) and exposes the combination as a named profile. Every command that touches a live environment takes exactly one context flag — --profile <name>.

Quickstart for most developers:

txc config profile create --url https://contoso.crm4.dynamics.com/

Drop in the Dataverse environment URL, sign in in the browser, and txc creates and selects the profile for you.

For explicit credential / connection / profile steps, repository pinning, or headless / CI setup, see docs/profiles-and-authentication.md.


Example Usage

txc runs on modern .NET across macOS, Linux, and Windows — including Dataverse Package Deployer and Configuration Migration Tool (CMT), which traditionally require Windows.

txc commands fall into two layers:

Layer Purpose Speed Commands
Workspace Scaffold & manage components locally in your repo Instant (local) txc workspace …
Environment Synchronize with and operate on a live Dataverse environment Minutes txc env …, txc data …

The recommended workflow: Use txc workspace to create and modify components locally (entities, attributes, solution structures), then deploy to the environment with txc env. This is dramatically faster than round-tripping every change through a live org — especially for coding agents that make dozens of changes per session.

The environment layer is organised into three planes:

Plane What it covers Commands
Control Environment settings, feature toggles, governance txc env setting …
Application Solutions, packages, deployments, schema management txc env sln …, txc env pkg …, txc env deploy …, txc env entity …
Data Records, queries, bulk operations, CMT import/export txc env data …, txc data …

Workspace — Local-First Development

The fastest way to build Dataverse components. Everything happens locally in your repo — no environment round-trips, no publish waits. Ideal for coding agents that need to scaffold dozens of components in a session.

# Explore available component types and their parameters
txc workspace component type list
txc workspace component explain pp-entity

# Scaffold a Dataverse entity — instant, local, no environment needed
txc workspace component create pp-entity \
  --param Behavior=New \
  --param PublisherPrefix=tom \
  --param LogicalName=location \
  --param DisplayName=Location \
  --param DisplayNamePlural=Locations

# When ready, deploy the solution to a live environment
txc env sln import ./out/MySolution_managed.zip

Component scaffolding relies on the TALXIS/tools-devkit-templates repository, where all component types, metadata, and definitions are maintained.

The environment commands below assume you have an active profile (see above). Pass --profile <name> to override for a single call.

Control Plane

Manage environment-level settings exposed by the Power Platform admin API — feature toggles, Copilot flags, IP restrictions, and more.

List environment management settings:

txc env setting list --filter powerApps

Enable Power Apps Code Apps:

txc env setting update powerApps_AllowCodeApps true

Application Plane

Deploy, inspect, and manage solutions and packages in the target environment.

# Deploy a package straight from NuGet, inspect the result
txc env pkg import TALXIS.Controls.FileExplorer.Package
txc env deploy get --package-name TALXIS.Controls.FileExplorer.Package

# Import a solution, target a different environment for one call
txc env sln import ./Solutions/MySolution_managed.zip --profile customer-b-prod

# Uninstall a package cleanly
txc env pkg uninstall TALXIS.Controls.FileExplorer.Package --yes

Solution round-tripping and component inspection:

# Import from a folder or .cdsproj project — auto-packs via SolutionPackager
txc env sln import ./src/MySolution/

# Publish customizations after import (makes forms, views, sitemaps visible)
txc env sln publish

# Export, unpack, edit locally, pack, re-import
txc env sln export MySolution --output ./export/MySolution.zip --zip
txc env sln unpack ./export/MySolution.zip --output ./src/MySolution/
txc env sln pack ./src/MySolution/ --output ./out/MySolution.zip

# Inspect solution metadata and component breakdown
txc env sln get MySolution
txc env sln component list MySolution --type entity

# Drill into component layers and dependencies by name — no GUIDs needed
txc env component layer list --entity account --attribute revenue
txc env component dep delete-check --entity tom_project

Data Plane

Query, create, update, and bulk-operate on Dataverse records.

Three query languages — pick the one you think in:

# OData — familiar, filterable, composable
txc env data query odata accounts --select "name,revenue" --filter "revenue gt 1000000" --top 10

# FetchXML — full aggregation, linked entities, fiscal date filters
txc env data query fetchxml '<fetch top="5"><entity name="contact"><attribute name="fullname"/></entity></fetch>'

# T-SQL — because sometimes you just want SELECT ... WHERE
txc env data query sql "SELECT fullname, emailaddress1 FROM contact WHERE statecode = 0" --top 20

Single-record CRUD — apply now or stage for later:

txc env data record create --entity account --data '{"name":"Contoso Ltd","revenue":5000000}' --apply
txc env data record upload-file --entity account $ID --column logo --file ./logo.png --apply
txc env data record update $ID --entity contact --data '{"jobtitle":"VP Sales"}' --stage   # queue, apply later

Bulk writes — two paths, same CreateMultiple/UpdateMultiple SDK messages:

# 1. Heterogeneous mix? Stage anything (across entities + operations), review, submit as one batch:
txc env data record create --entity account --data '{...}' --stage   # × N
txc env changeset apply --strategy bulk

# 2. Got a prepared JSON array for one table? Skip staging entirely:
txc env data bulk upsert --entity contact --file ./contacts.json

See docs/data-plane.md for the full guide — decision matrix, query reference, JSON value formats for lookups/option sets/money.

Configuration Migration Tool (CMT) — import, export, convert. Runs natively on macOS/Linux (no Windows VM needed). Exports to a folder by default so you can commit data directly to your repo:

# Export → folder → edit → import round-trip
txc data pkg export --schema ./data_schema.xml --output ./data-package --export-files
txc data pkg import ./data-package

# Advanced tuning options not exposed by PAC CLI or CMT GUI:
txc data pkg import ./data-package \
  --batch-mode                  # ExecuteMultiple batching (vs one-by-one) \
  --batch-size 500              # records per batch (default: 200) \
  --connection-count 4          # parallel service channels \
  --override-safety-checks      # skip duplicate detection \
  --prefetch-limit 100          # pre-cache record lookups

txc data pkg convert --input export.xlsx --output data.xml

See docs/configuration-migration.md for the full deep-dive into CMT internals, deduplication logic, and tuning strategies.

Application Plane — Schema Management

Define your Dataverse schema from the terminal — entities, columns, relationships, option sets. Every mutating command supports --apply (execute now) or --stage (queue for batch). See docs/schema-management.md.

Staging (--stage + changeset apply) is cross-plane — schema, data writes, and file uploads share one queue and one optimised submission pipeline. See docs/data-plane.md for the data-plane angle.

# Spin up a new entity with a money column in seconds
txc env entity create --name tom_project \
  --display-name "Project" --plural-name "Projects" \
  --ownership user --apply

txc env entity attribute create tom_project \
  --name tom_budget --type money --display-name "Budget" --apply

# Or stage everything and apply in one optimised batch
txc env entity create --name tom_invoice \
  --display-name "Invoice" --plural-name "Invoices" --stage
txc env entity attribute create tom_invoice \
  --name tom_amount --type money --display-name "Amount" --stage
txc env entity attribute create tom_invoice \
  --name tom_duedate --type datetime --display-name "Due Date" --stage

txc env changeset status          # review what's queued
txc env changeset apply --strategy batch   # one batch, one publish

Changeset staging batches entity creation via the CreateEntities SDK action and consolidates all publishes into a single PublishXml call — dramatically faster than sequential operations. See docs/changeset-staging.md.

Run txc --help or txc <command> --help for the full command reference.


Local Development & Debugging

Clone and build:

git clone https://github.com/TALXIS/tools-cli.git
cd tools-cli
dotnet build

Run the CLI directly:

dotnet run --project src/TALXIS.CLI -- workspace explain

Run the MCP server locally:

dotnet run --project src/TALXIS.CLI.MCP

Working with all three repos locally

The CLI, templates, and build SDK are separate packages. To test changes across all three:

# 1. Clone all repos side by side
git clone https://github.com/TALXIS/tools-cli.git
git clone https://github.com/TALXIS/tools-devkit-templates.git
git clone https://github.com/TALXIS/tools-devkit-build.git

Local templates — pack and add as a local NuGet source so the CLI's template engine finds them:

cd tools-devkit-templates
dotnet pack --configuration Debug

Local build SDK — same approach:

cd tools-devkit-build
dotnet pack --configuration Debug

Configure a local NuGet source — add a nuget.config at the workspace root (or use dotnet nuget add source):

<configuration>
  <packageSources>
    <add key="LocalTemplates" value="/path/to/tools-devkit-templates/src/Dataverse/bin/Debug/" />
    <add key="LocalBuildSdk" value="/path/to/tools-devkit-build/src/Dataverse/Tasks/bin/Debug/" />
  </packageSources>
</configuration>

Local CLI — run directly from source:

cd tools-cli
dotnet run --project src/TALXIS.CLI -- <command>

Cleanup — remove local sources and clear cache to revert to published packages:

dotnet nuget locals all --clear

Versioning & Release

Releases are published through GitHub Releases:

  1. Go to ReleasesDraft a new release
  2. Create a tag in the format vX.Y.Z (e.g. v1.12.0)
  3. Write the changelog in the release body
  4. Click Publish release

The publish workflow runs tests, builds NuGet packages with the tag version, and pushes them to nuget.org. Release notes from all GitHub releases are embedded in the NuGet package.

The same process applies to tools-devkit-templates and tools-devkit-build.


Telemetry

txc collects anonymous usage data and authenticated user context to help improve the tool. See TELEMETRY.md for details.


Collaboration

We welcome collaboration! For feedback, suggestions, or contributions, please submit issues or pull requests.

For onboarding or customization, contact us at hello@networg.com.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.21.0 236 8/10/2026
1.20.0 266 6/29/2026
1.19.1 145 6/29/2026
1.19.0 133 6/29/2026
1.18.0 113 6/28/2026
1.17.2 141 6/27/2026
1.17.1 173 6/3/2026
1.17.0 140 5/26/2026
1.16.0 127 5/14/2026
1.15.0 114 5/14/2026
1.14.2 133 5/4/2026
1.14.1 116 5/4/2026
1.13.0 118 5/1/2026
1.12.0 116 4/29/2026
1.11.0 128 4/28/2026
1.10.0 108 4/28/2026
1.9.0 123 4/27/2026
1.8.0 128 4/26/2026
1.7.0 128 4/25/2026
1.6.0 127 4/24/2026
Loading failed

1.20.0:
 What's changed

 - Added txc config auth add-federated with add-workload-identity alias so workload identity federation credentials can be registered without storing a client secret.
 - Added guidance and tests for auto-detected OIDC assertion flows in GitHub Actions and Azure DevOps.
 - Fixed connected-org version fallback for WIF and device-code auth by returning 9.2.0.0 when the SDK reports its hardcoded 9.0.0.0 default.

 Impact

 - Minor release because it adds a new user-facing authentication command.
 - CI/CD authentication with federated credentials is now a first-class CLI flow.
 - Package Deployer and other connected-environment operations are more reliable when using workload identity federation or device-code auth.

1.19.1:
 What's changed

 - Fixed tenant-level txc env list and txc env create so they can bootstrap from stored auth credentials even when no profile can be resolved.
 - Added --auth and --cloud options to select the credential and cloud explicitly for environment bootstrap scenarios.
 - Kept txc env update and txc env delete profile-bound while improving the admin connection setup for tenant-level environment operations.
 - Added documentation and unit-test coverage for default, explicit, and ambiguous credential-selection flows.

 Impact

 - Patch release because this is a targeted fix to environment bootstrap and authentication behavior.
 - txc env list and txc env create are more reliable in setups that authenticate through stored credentials rather than an existing profile.

1.19.0:
 What's changed

 - Added txc env solution pull and txc env solution clone to sync existing Dataverse solutions into local TALXIS SDK projects.
 - Added device-code authentication with credential-vault auto-fallback for Codespaces and browser-isolated Linux environments.
 - Fixed browser sign-in launch behavior on macOS and Linux, including correct argument handling and AbsoluteUri usage to avoid double-encoding.
 - Made solution deployment safer by defaulting workflow publishing on and fixing SmartDiff behavior for the Update path.
 - txc workspace component create now rejects unknown parameters instead of silently ignoring them.

 Impact

 - Minor release because it adds new user-facing solution pull and clone commands.
 - Authentication is more reliable in remote and browser-constrained environments.
 - Browser-based sign-in should now open the correct URL consistently across macOS and Linux.

1.18.0:
 What's changed

 - Added a new txc env command group for tenant-level environment lifecycle management:
   - txc env list
   - txc env create
   - txc env update
   - txc env delete
 - Improved environment provisioning and management reliability, including better long-running polling behavior, token refresh during waits, safer production delete checks, and more robust provisioning response handling.
 - Updated workspace validate to skip Node/TypeScript subtrees and gitignored paths by default, reducing false positives from non-Dataverse project files.
 - Aligned MCP skill/tool-name references with the current CLI command catalog.
 - Updated MCP local-start guidance to avoid dotnet run build output interfering with stdio sessions.

 Impact

 - Minor release because it adds a new user-facing CLI command group.
 - workspace validate is now less noisy by default in mixed repos with PCF, Node, or TypeScript content.
 - txc env create / txc env delete use --wait for blocking behavior; the older --max-wait-minutes option is not part of this new command surface.

1.17.2:
 What's changed

 - Switched solution pack/unpack and related import/export flows to the shared TALXIS.Platform.Metadata.Packaging library.
 - Removed the local inline solution packager implementation in favor of the shared package.
 - Aligned CLI metadata dependencies to the TALXIS.Platform.Metadata 0.8.0 stack.

 Impact

 - Part of the coordinated metadata refresh with platform-metadata v0.8.0.
 - No template release is required to consume this CLI update.

1.17.1:
 What's changed

 Patch release for Windows MCP path normalization.

 - Fixed a remaining Windows regression where lowercase-drive file URIs such as file:///c:/... could normalize into invalid working-directory paths for MCP child processes.
 - Added a dedicated preprocessing step that strips the extra leading slash from /c:/...-style Windows file-URI paths before home expansion and full-path normalization.
 - Added regression coverage for lowercase-drive workspace roots and duplicate-drive path handling.

 Impact

 - Relevant for Windows users running the MCP server from GitHub Copilot / VS Code or other MCP clients that pass file-URI workspace roots.
 - No template, build SDK, or platform package release is required for this patch.

1.17.0:
 Highlights

 - Added Data Plane staging documentation and clarified how it differs from env data bulk.
 - Added structured MCP diagnostics, logging consistency improvements, telemetry flush on shutdown, and analyzer enforcement.
 - Improved MCP result/error display by extracting CommandResultEnvelope messages for humans while preserving structured content for tools.
 - Added telemetry span error context and service identity fixes for MCP-spawned child CLI processes.
 - Fixed MCP home-relative path normalization on all platforms.

 Full Changelog: https://github.com/TALXIS/tools-cli/compare/v1.16.0...v1.17.0

1.16.0:
 Breaking changes

 - Standardized single-item command retrieval on get instead of show across config, environment, component-layer, and docs command groups.
 - Renamed env setting update to env setting set.
 - Renamed env component layer remove-customization to env component layer remove.

 Highlights

 - Added smoother flow development workflows: project-directory solution import/export, auto-build before import, and env component url open/get --file support.
 - Reused platform metadata XML workspace resolution for local file/component URL detection.
 - Added shared solution project resolution helpers for project file lookup, SolutionRootPath, solution unique name, and workspace root discovery.
 - Added MCP skill documentation for project types and reference protocol.
 - Updated CLI metadata package references to TALXIS.Platform.Metadata packages v0.6.0.
 - Updated integration tests to match the renamed get commands.

 Full Changelog: https://github.com/TALXIS/tools-cli/compare/v1.15.0...v1.16.0

1.15.0:
 Highlights

 - Added the component type system foundation and browser/editor support backed by TALXIS.Platform.Metadata v0.5.0.
 - Added top-level txc component type list and txc component type explain commands for inspecting registered component definitions by name, alias, enum name, or type code.
 - Fixed record create/update JSON-to-SDK conversion for DateTime, Float, and MultiSelect values.
 - Fixed Windows DPAPI vault failures and path resolution issues.
 - Enabled SDK roll-forward.
 - Updated MCP server.json to the correct registry schema format.
 - Aligned workspace metadata dependencies to TALXIS.Platform.Metadata packages v0.5.0.
 - Normalized source package versions to 0.0.1; release package versions now come from the GitHub release tag.

 Full Changelog: https://github.com/TALXIS/tools-cli/compare/v1.14.2...v1.15.0

1.14.2:
 Fix
 - workspace validate: --file option no longer incorrectly required (65)

1.14.1:
 Fix
 - workspace validate: --file option no longer incorrectly required (65)

1.14.0:
 What's new since v1.13.0

 workspace validate upgrade
 - Replaced manual SchemaValidator + GuidValidator wiring with unified WorkspaceValidator facade
 - Added --file option for single-file validation (validate what you just modified)
 - Errors now include file:line:col locations for precise diagnostics
 - Shows component summary after model loading (entities, forms, views, plugins, flows, etc.)
 - Validates XSD schemas, JSON schemas, duplicate GUIDs, and loads the full metadata model in one pass

 platform-metadata v0.4.0
 - XSD schemas verified against live Dataverse v9.2 exports
 - Power Automate flow JSON parsing and diagnostics
 - Precise source locations (no more hardcoded 1,1)
 - Multi-solution workspace support
 - SchemaIntrospector for component type structure discovery
 - 21+ XSD schemas covering all major component types

 Other changes since v1.13.0
 - Bumped platform-metadata from v0.1.3 through v0.2.0, v0.3.0 to v0.4.0
 - Package icon updates

1.13.0:
 workspace validate command
 - New txc workspace validate <path> — validates solution XML against XSD schemas and checks for duplicate GUIDs
 - Powered by TALXIS.Platform.Metadata.Validation

 OptionSet command restructure
 - Moved from entity optionset global/option to environment optionset
 - optionset show --name / --entity + --attribute for global and local
 - --label and --value lookups for piping
 - --language flag for multi-language environments
 - option add/remove follows noun/verb convention

 Metadata-aware data operations
 - record create and bulk create auto-wrap OptionSetValue, Money, EntityReference
 - Multi-select picklists supported (JSON arrays)
 - Fresh metadata per operation (no cache)

 Post-action transaction rollback
 - Failed scaffolding rolls back all changes (template files + post-action modifications)
 - Snapshots .sln/.slnx file above output directory
 - 120s script timeout with deadlock-free stdout/stderr capture
 - 5 unit tests for PostActionTransaction

 Other
 - Prerequisites checker validates pwsh before scaffolding
 - Emojis removed from guide tool responses
 - ModelPreferences for guide sampling (speed=0.8, cost=0.6, intelligence=0.4)
 - MCP-first README with dnx setup for VS Code, Claude Code, Copilot CLI
 - Cross-solution workflow documented (Behavior=Existing)
 - dotnet-script removed from prerequisites (.NET 10 file-based apps)
 - OptionMetadataInput.ParseCsv shared helper (removed ChangesetApplier duplicate)
 - LabelHelper for language-aware label resolution

1.12.0:
 Data operations — metadata-aware type wrapping
 - Record create/update and bulk create/update/upsert auto-detect column types from Dataverse metadata
 - OptionSet values: pass plain integers (e.g. 375970000) — auto-wrapped to OptionSetValue
 - Money fields: pass decimals — auto-wrapped to Money
 - Lookups: pass bare GUID strings for single-target lookups — auto-wrapped to EntityReference
 - Multi-select picklists: pass JSON arrays of integers — auto-wrapped to OptionSetValueCollection
 - Fresh metadata per operation (no cache — CLI mutates schema)

 OptionSet command restructure
 Moved from entity optionset global/option (4–5 levels) to environment optionset (2 levels):
 - optionset list — all global option sets
 - optionset show --name <name> or --entity E --attribute A — values + labels
 - optionset show --label "Box" — label → value lookup (for piping)
 - optionset show --value 375970000 — value → label lookup
 - optionset show --language 1029 — specific language (LCID)
 - optionset option add/remove — noun/verb convention
 - --name everywhere (removed --global-optionset)

 Entity describe enriched
 - Shows OptionSet name column for picklist/status/state columns

 Other
 - MCP roots warning when client doesn't support workspace roots
 - dotnet sln add: fixed potential deadlock, stdout logged on success
 - Removed auto-version-bump CI job (tag is version source of truth)
 - Cross-repo local dev instructions in README

1.11.0:
 What's New in v1.11.0

 New Skills

 - Data Querying — decision guide for SQL vs OData vs FetchXML, covering $apply aggregation, $expand, formatted values, and pagination patterns
 - Security Roles — scaffolding chain for security roles, role privileges, and app security roles with privilege type/level reference

 Skill Enrichments

 - Schema Management — metadata propagation delays, column naming anti-patterns, lock contention guidance
 - Data Migration — adaptive chunk sizing, FK-ordered import, lookup resolution strategies
 - Form XML Reference — control ClassId table for all 11 types, form type codes, view querytype values
 - Troubleshooting — common Dataverse hex error codes with recovery actions

 Fixes

 - Deployment skill no longer recommends --wait on import
 - Plugin skill now includes build-first guidance before deployment
 - Added dotnet-script prerequisite note to relevant skills

1.10.0:
 What's New in v1.10.0

 Solution Unpack Command

 - txc env sln unpack — unpack a solution ZIP into a folder using SolutionPackager, without needing to export from an environment first

 MCP Error Reporting

 - Error details from workspace scaffolding (post-action failures, script errors) are now surfaced to MCP clients as structured output instead of being swallowed silently
 - Post-action errors include stderr content and exit codes with ANSI escape code stripping

 Scaffolding Concurrency Fix

 - Concurrent workspace_component_create calls from MCP agents are now serialized per workspace root, preventing race conditions on shared files (Solution.xml, .sln)

 Skill Documentation Fixes

 - Fixed incorrect template names in 5 skills (plugin, bpf, custom-api, pcf, form-xml)
 - Clarified publisher prefix limit as a convention (5 chars recommended) vs CLI enforcement (2-8 chars)
 - Added parameter convention docs and schema validation workflow to component creation skill

1.9.0:
 What's New in v1.9.0

 MCP Progressive Disclosure

 The MCP server has been completely redesigned. Instead of exposing 97 static tools (which consumed 76% of the VS Code/Copilot 128-tool hard cap and ~55K tokens of context), the server now uses 9 always-on tools with progressive disclosure:

 - Domain-specific guide tools (guide_workspace, guide_environment, guide_deployment, guide_data, guide_config) use MCP sampling to understand what the agent needs, then produce multi-step recipes with concrete operation calls, validation checkpoints, and error recovery
 - execute_operation — same-turn bridge that runs any CLI operation, with destructive safety enforcement
 - get_skill_details — public knowledge base with 14 skills covering common workflows (entity scaffolding, solution deployment, CMT tuning, build error recovery, and more)
 - txc docs list/show — CLI commands for browsing the skills knowledge base outside of MCP
 - Local-first steering — guide prompts encode preference for instant workspace operations over live environment round-trips
 - New Roslyn analyzers (TXC010-TXC013) enforce description quality, context requirements, destructive signaling, and workflow classification at build time

 Breaking: MCP clients must support sampling. The static 97-tool surface is no longer exposed.

 Fixes

 - Fixed component layer commands (list, show, remove-customization) silently exiting with code 2 due to a stray return statement — all three commands were non-functional in v1.8.0

1.8.0:
 What's New in v1.8.0

 Adds comprehensive solution management, component inspection, dependency analysis, and publisher management. Also improves CLI naming consistency and error reporting.

 Solution Management

 - txc env sln show — view solution details with component type breakdown
 - txc env sln create / delete — create and delete unmanaged solutions
 - txc env sln export — export and unpack solutions via SolutionPackager, or --zip for raw export
 - txc env sln pack — pack an unpacked solution folder into a ZIP
 - txc env sln publish — publish all or selective entity customizations
 - txc env sln import — now accepts folders (auto-packs) and .cdsproj/.csproj project directories
 - txc env sln uninstall — now validates solution type (rejects unmanaged with guidance) and runs dependency pre-check by default
 - txc env sln uninstall-check — pre-uninstall dependency safety check
 - txc env sln component list / count / add / remove — manage solution components with --type and --entity filters

 Component Inspection

 All commands support two identification modes: --id/--type for automation, or --entity/--attribute for human-friendly name-based lookup (resolves MetadataId automatically).

 - txc env component layer list — show solution layer stack for a component
 - txc env component layer show — view active layer definition as JSON
 - txc env component layer remove-customization — remove unmanaged active layer with safety checks
 - txc env component dep list — what depends on this component
 - txc env component dep required — what this component requires
 - txc env component dep delete-check — can I safely delete this?

 Publisher Management

 - txc env publisher list / show / create / delete — full publisher CRUD with prefix and option value prefix validation

 CLI Consistency Improvements

 - Standardized --yes description across all destructive commands
 - Added -o/-i short aliases for --output/--input options
 - Restructured optionset commands: optionset create-global is now optionset global create
 - env setting update now uses positional arguments: txc env setting update <name> <value>
 - Entity attribute commands use positional --entity argument instead of named option
 - Prevented auto-generated alias conflicts on all group commands

 Error Reporting

 - OData queries now surface Dataverse error messages instead of generic SDK exceptions
 - SQL and OData query errors include the entity set name for context
 - Connection creation warns if hostname is unreachable (non-blocking DNS check)
 - Record command GUID arguments now validate with clear messages instead of raw parse errors
 - All commands write structured error envelopes to stdout on failure, so scripts and MCP consumers get { "status": "failed", "message": "..." } instead of empty output

1.7.0:
 What's New in v1.7.0

 A major release bringing Dataverse schema management, Configuration Migration Tool support, full data operations, and significant quality-of-life improvements.

 Dataverse Schema Management

 - Entity management — create, update, and delete entities directly from the CLI with support for standard, activity, and elastic table types
 - Attribute management — create, get, update, and delete attributes across 16 types (string, number, choice, lookup, polymorphic lookup, file, image, and more)
 - Relationships — create, list, and delete entity relationships
 - Global option sets — create, delete, add/remove options, and list global option sets
 - Attribute introspection — attribute type list and type describe with JSON schema output for MCP consumers

 Configuration Migration Tool (CMT)

 - txc data package export — export data packages with file column support and overwrite control
 - txc data package import — enhanced with batch mode, batch size, safety overrides, and prefetch limit

 Changeset Staging

 - Stage schema changes — use --stage on any of the 17 mutating commands to queue changes instead of applying immediately
 - Apply strategies — txc env changeset apply with batch (ExecuteMultiple), transaction (ExecuteTransaction), or bulk (CreateMultiple/UpdateMultiple) strategies
 - Review and discard — txc env changeset status and txc env changeset discard
 - Batches entity creation via CreateEntities API and consolidates publishes into a single PublishXml call

 Dataverse Data Operations

 - Query your data — SQL (txc env data query sql), FetchXML, and OData queries with automatic pagination
 - Record operations — get, create, update, delete individual records or work in bulk with bulk create/update/upsert
 - File columns — download and upload file/image column data with chunked transfers
 - Relationship records — associate and disassociate N:N relationship records
 - Entity introspection — list entities and describe their columns with txc env entity list/describe

 Unified Environment Settings

 - One command for all settings — txc env setting list and txc env setting update work across all four Power Platform settings APIs transparently
 - No need to know which backend stores which setting — the CLI handles routing automatically

 Authentication and Token Handling

 - Tokens no longer expire mid-session — automatic refresh with proactive renewal before expiration
 - Service principal tokens persist across CLI invocations — no more re-authenticating every time
 - Token diagnostics — txc config auth show <alias> --check-token to inspect token health
 - Smarter profile setup — txc config profile create reuses existing connections and auto-populates environment metadata

 Production Safety

 - Destructive commands are blocked against production environments by default
 - Pass --allow-production explicitly when you intend to modify production — an extra safety net on top of --yes confirmation
 - Production environments detected automatically by type, URL, and name patterns

 Consistent Output

 - All commands now follow a unified output format — predictable JSON when piped, human-readable tables in the terminal
 - Global --format flag replaces per-command --json flags
 - Clean stdout — diagnostic and log output goes to stderr, so piping and scripting just works

 Fixes

 - Fixed ConnectedOrgVersion returning hardcoded 9.0.0.0 with token-provider auth
 - Fixed exit codes for validation errors (now correctly returns exit code 2)
 - Fixed MSAL token cache for headless CI environments
 - Numerous XrmShim compatibility fixes