Skip to main content
Glama
Kenny-666

Dynamics 365 MCP Server

by Kenny-666

publish_ribbon_solution

Destructive

Publish Ribbon changes for an entire table using a validated import receipt and plan hash. This publishes all pending table customizations; referenced web resources need separate publication.

Instructions

Separate preview/publish after a same-process authenticated import receipt, matching native succeeded import job and successful bounded manifest log. Check current target/exportable non-Ribbon baseline, CSDL and effective Ribbon before native PublishXml. Execute with planHash, allow_unprotected_write and allow_full_table_publish. Publishes the ENTIRE table, including unrelated pending fields/forms/views; pending contents are not locked/read completely. Referenced JS/images are NOT published by this request; use separate Web Resource publication. Compare changed button definitions after acceptance without running code or claiming UI/security/runtime success. Preserve published=true on readback failure; no reimport or automatic republish.

Input Schema

NameRequiredDescriptionDefault
dryRunNoDefault true. Read-only ExportSolution POST can occur during preflight; import/publish is not sent.
changesNo
dry_runNoDefault true. Read-only ExportSolution POST can occur during preflight; import/publish is not sent.
logicalNameNo
expectedHashNo
logical_nameNo
expected_hashNo
importReceiptNoUnchanged importReceipt from import_ribbon_solution in this server process. Cannot survive process restart; do not reimport to regenerate.
import_receiptNoUnchanged importReceipt from import_ribbon_solution in this server process. Cannot survive process restart; do not reimport to regenerate.
sourceFilePathNoAbsolute original unmanaged source ZIP path.
source_file_pathNoAbsolute original unmanaged source ZIP path.
candidateFilePathNoAbsolute candidate ZIP path produced from this source and the same structured edits on this server version.
candidate_file_pathNoAbsolute candidate ZIP path produced from this source and the same structured edits on this server version.
allowFullTablePublishNoExplicitly accept publication of all other pending table customizations.
allowUnprotectedWriteNoExplicitly accept the remaining platform concurrency window; no atomic package/table/pending-customization lock.
allow_unprotected_writeNoExplicitly accept the remaining platform concurrency window; no atomic package/table/pending-customization lock.
allow_full_table_publishNoExplicitly accept publication of all other pending table customizations.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

B3.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

This is the description's strongest dimension and is fully consistent with destructiveHint=true. It discloses blast radius ("publishes the ENTIRE table, including unrelated pending fields/forms/views"), concurrency risk ("pending contents are not locked/read completely", "no atomic package/table/pending-customization lock"), scope exclusions (JS/images require separate publication), and failure semantics ("Preserve published=true on readback failure; no reimport or automatic republish") – behavior the annotations alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical fact – whole-table publish – appears only in the fourth sentence, after two dense, jargon-heavy clauses about manifests, CSDL, and PublishXml. Sentences are run-on and mix routine description with post-publication verification guidance, so the agent must decode rather than scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter, non-idempotent destructive tool with no output schema, the description covers blast radius and failure handling well but says nothing about return values or what the agent should do with them (the sibling verify_ribbon_deployment / get_solution_import_status are never mentioned as follow-ups). The "compare changed button definitions after acceptance" line partly compensates but stays abstract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 71% schema coverage the schema already documents dryRun, the file paths, import_receipt, and the two opt-in flags. The description restates allow_unprotected_write and allow_full_table_publish without adding meaning beyond their schema descriptions, and it references "planHash," a parameter that does not exist in the schema (the schema has expected_hash) – a small but real source of confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource is buried but recoverable: "Publishes the ENTIRE table" plus the tool name make clear this publishes Ribbon customizations after an import. However, the opening sentence ("Separate preview/publish after a same-process authenticated import receipt, matching native succeeded import job and successful bounded manifest log") is nearly unparseable, and nothing distinguishes it from siblings like publish_model_table or verify_ribbon_deployment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies sequencing (preflight baseline checks before native PublishXml; dryRun defaults true) and names one explicit alternative: "Referenced JS/images are NOT published by this request; use separate Web Resource publication" – i.e., publish_web_resource. But there is no crisp when-to-use/when-not statement, and the import-receipt prerequisite only appears in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools