Skip to main content
Glama
Kenny-666

Dynamics 365 MCP Server

by Kenny-666

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ORG_URLNoOrganization root URL, such as https://your-org.crm.dynamics.com. Do not include /api/data/v9.2, credentials, a query string, or a fragment.
AD_DOMAINNoOn-premises AD/NTLM authentication: AD domain.
AUTH_TYPENoAuthentication type: 'online' (OAuth 2.0 client credentials, default), 'op_ad' (on-premises AD/NTLM), or 'op_ifd' (on-premises IFD/ADFS).online
CACHE_TTLNoCache lifetime in seconds, a non-negative integer; 0 disables TTL-based expiration.7200
CLIENT_IDNoOnline authentication: application client ID.
TENANT_IDNoOnline authentication: tenant ID, domain, or a supported authority URL.
AD_PASSWORDNoOn-premises AD/NTLM authentication: AD password.
AD_USERNAMENoOn-premises AD/NTLM authentication: AD username.
API_VERSIONNoWeb API version, for example v9.1 or v9.2; no automatic version probing or switching.v9.2
IFD_ADFS_URLNoOn-premises IFD/ADFS authentication: ADFS server URL.
IFD_PASSWORDNoOn-premises IFD/ADFS authentication: password.
IFD_RESOURCENoOn-premises IFD/ADFS authentication: optional resource; defaults to the organization URL.
IFD_USERNAMENoOn-premises IFD/ADFS authentication: username.
CLIENT_SECRETNoOnline authentication: application client secret.
IFD_CLIENT_IDNoOn-premises IFD/ADFS authentication: ADFS client ID.
AD_WORKSTATIONNoOn-premises AD/NTLM authentication: optional AD workstation.
IFD_TOKEN_PATHNoOn-premises IFD/ADFS authentication: optional token path; defaults to /adfs/oauth2/token.
ENVIRONMENT_URLNoAccepted as an alias for ORG_URL. If both are supplied, they must identify the same organization.
D365_DOTNET_PATHNoOptional path to the .NET executable, required for local DLL inspection, assembly updates, and the full test suite.dotnet
MAX_READ_RETRIESNoMaximum retries for transient GET failures, 0-5.2
CACHE_TTL_SECONDSNoCompatibility alias for CACHE_TTL; CACHE_TTL takes precedence when both are set.
IFD_CLIENT_SECRETNoOn-premises IFD/ADFS authentication: optional client secret.
MAX_RETRY_DELAY_MSNoMaximum permitted retry wait, 0-300000 ms.30000
REQUEST_TIMEOUT_MSNoPer-request HTTP timeout, 1-300000 ms.30000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_solutionsB

List native solution identity/state with optional exact unique-name/ID/managed filters. Bounded paging stays in the current query scope. Visible rows are not deployment validation.

list_solution_componentsA

List visible solutioncomponent membership rows for an exact solution; objectid/type, membership row ID and root inclusion behavior are separate. Optional filters combine with the solution. No code/XML/configuration is read; completeness does not prove export payload contents.

get_solution_component_dependenciesB

Invoke native RetrieveRequiredComponents, RetrieveDependentComponents or RetrieveDependenciesForDelete after current CSDL validation. Default direction required. Returns projected dependency edges and explicit bounded completeness. Does not compute transitive closure, authorize deletion or prove deployment readiness.

add_solution_componentA

Default preview of adding one existing component to a visible ordinary unmanaged solution. Validates the actual object/type, current CSDL and complete visible membership/required-dependency baseline. Types: 1 Entity, 2 Attribute, 9 global Option Set, 10 Entity Relationship, 14 Entity Key, 26 Saved Query, 60 System Form, 61 Web Resource, 90–93 plugin types/assemblies/steps/images. Attribute/Key requires logical_name. Fixed AddRequiredComponents=false/DoNotIncludeSubcomponents=true; implicit parent shells may still be added. Execute with planHash plus explicit unprotected Action; reread membership and report observed deltas without claiming export completeness.

inspect_solution_packageA

Inspect a local solution ZIP or base64 without CRM configuration. Bounds ZIP headers, paths, inflated sizes and every payload CRC; reads only solution.xml identity, publisher and declaration counts. No extraction/execution. Does not prove authenticity, safe code, dependencies, contents or deployability.

export_solutionA

Preview by default. Native ExportSolution from a visible ordinary unmanaged source; choose managed output explicitly. Current CSDL and caller/environment identity are validated. Execute with planHash; writes an exclusive new local .zip, verifies identity/hash, never returns base64 or overwrites files. No publish. On failure the reserved path can be empty/partial; no automatic replay.

import_solution_asyncA

Preview first import of an ordinary unmanaged ZIP into the configured environment. Execute with planHash and allow_unprotected_write=true. Same solution-name updates, managed/patch/upgrade imports are blocked. First import can change shared unmanaged components. Fixed overwrite overlay/workflow activation/dependency skip/holding/upgrade flags false; no environment overrides or separate publish. Submits once using ImportSolutionAsync; accepted is not completed. Unknown outcomes retain a client-assigned importJobId for manual status checks.

get_solution_import_statusA

Read native asyncoperation and/or importjob by explicit receipt IDs once, without polling or resubmission. Separates terminal async state, progress, unavailable/hidden/forbidden evidence and solution identity readback. Caller-supplied IDs are independent observations, not an independently verified relation. Progress=100/identity match is not deployment/runtime proof. No raw job/log/configuration text returned.

get_solution_snapshotA

Capture the configured environment and current-caller explicit visible membership with selected properties. Profiles: 1 table, 9 global Picklist, 10 relationship, 61 Web Resource, 91 non-package database assembly. Binary content is hashed, never returned/executed. Normalize labels/option values and retain IDs only as evidence. Unsupported/forbidden/partial/unstable inventory is explicit. No nested expansion, atomic snapshot, publication, full schema/dependency/runtime proof. Pass or save the returned snapshot JSON to compare separately configured environments.

compare_solution_snapshotsA

Compare two versioned snapshot objects locally without CRM settings. Verify canonical shape and integrity hashes; match portable names and selected properties/root scope, ignoring environment GUIDs and label transport fields. Report missing/extra/changed component references and property paths. Gaps/ambiguous keys/unknown scope make the comparison inconclusive, never a false pass. Option display order, unselected settings, full payload, managed layers, publication and runtime are outside this profile. Read-only; no authentication or environment switching.

verify_solution_deploymentA

Read-only selected-scope verification of the configured target against an expected snapshot. Returns a live snapshot comparison and, for explicit receipt IDs, independent native job/import-log evidence with text withheld. No full deployment/publication/runtime/causal package-job linkage is asserted, and job success never overwrites known component differences. Does not import, publish, repair, poll or replay.

get_solution_import_logA

Explicitly read a native solution importjob data XML by GUID and return bounded result summaries. <=2 MiB XML; no DTD/entities/namespaces or execution. Counts include manifest/section results, not unique components; failures/warnings prioritized. Raw XML is never returned. Error text is opt-in and bounded with best-effort credential redaction. Logs do not prove async completion or deployment; missing/forbidden/unsupported data is distinct from success. Uses importjobs, not record-data importlogs.

get_ribbon_definitionC

Read native effective classic entity Ribbon through current CSDL-validated RetrieveEntityRibbon, with typed enum/alias encoding. Validate/decompress the bounded ZIP RibbonXml.xml part without extraction/execution. Summarize buttons, commands, rule references and candidate insertion locations; full XML is opt-in. Does not evaluate user visibility/security, execute JavaScript, edit merged definitions or support modern commanding.

inspect_ribbon_solutionB

Inspect one entity classic RibbonDiffXml from a local solution ZIP without CRM configuration. Returns package identity and bounded button/command summaries, optional selected diff XML. Native merged definitions and solution diffs are different representations; a package is not target/runtime evidence.

edit_ribbon_solutionA

Preview by default; edit only one entity classic RibbonDiffXml in an ordinary unmanaged local ZIP. Add standalone custom JS buttons with publisher-scoped IDs, explicit current-table insertion location, ordered parameters, multilingual labels and packaged JS/raster icons; update labels/sequence; hide/unhide via a dedicated contradictory client display rule on an unshared custom command. Preserve other languages/rules/handlers, all other archive payloads and outside-Ribbon XML semantics. Execute with current planHash to write an exclusive NEW ZIP; never overwrite input, import, publish or run code. Built-in replacements, arbitrary rules, handler updates, modern commands and deployment remain separate workflows.

import_ribbon_solutionA

Preview first, then submit one native async import into an EXISTING ordinary unmanaged solution for reviewed classic Ribbon edits. Replay the structured edits and require exact candidate bytes; match organization/caller/table/publisher/version/complete visible membership and a fresh target export payload baseline. This is a WHOLE-SOLUTION import, including other unchanged components. Execute with current planHash, allow_unprotected_write and allow_full_solution_import. No upgrade/managed/override/automatic publish. Unknown acceptance retains client importJobId and is never replayed. Accepted responses yield a same-server-process provenance receipt for separate publication; receipt loss/restart is not permission to reimport.

publish_ribbon_solutionB

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.

verify_ribbon_deploymentA

Read-only recovery/inspection: replay local source/changes, validate the candidate, resolve the current configured target and compare changed button attributes, command/action/parameter structure, labels and local display rules against native effective classic Ribbon. Missing/ambiguous/expanded evidence remains inconclusive or different. No receipt or reimport required; no publish/retry/repair, code execution or claim that the package was imported/published or the button works for a user.

get_api_operationA

Read current service CSDL to inspect Action/Function overloads, exact parameter types/facets, binding and import names. Optional entity-set binding narrows signatures. Returns direct input type definitions; nested types are not expanded. Read-only metadata does not prove permissions/runtime support.

call_d365_api_actionA

Invoke a current CSDL-defined Action/Function after typed validation. Preserves legacy defaults: Action POST and immediate execution, returning native data directly. Supports single-entity or collection binding, explicit overload IDs, primitive/enum/structural collections and safe Function parameter aliases. Optional dry_run previews without invocation and withholds parameter values by default. Optional expected_hash checks preview planHash; return_details=true returns receipt/data. No Action replay or generic business readback.

update_model_column_settingsA

Default preview of existing ordinary unmanaged custom column settings; nine supported base types. Allows length/range/precision expansion, requirement level, auditing/search managed values, Boolean/existing Picklist defaults and DateTime display format. Preserves full definition, labels, choices and date behavior. Rejects narrowing, primary/derived/calculated/rollup/autonumber columns and type/schema changes. Execute with preview planHash as expected_hash plus allow_unprotected_write=true; full native PUT then readback, no automatic publication.

update_model_relationshipA

Preview/update an existing unmanaged custom 1:N menu/cascade or N:N per-side menus by full native PUT with language merging. Preserves table/column/intersect identity and omitted settings. Menu must be confirmed customizable. Cascade changes can affect future related-record deletion, ownership and access; native cross-relationship rules remain platform-validated. Requires planHash and explicit unprotected write; saves and reads back separately from publication.

reactivate_model_keyA

Preview/submit the native ReactivateEntityKey Action only for an existing unmanaged Failed key index after its cause has been corrected. Uses actual key LogicalName, preserves key columns and never recreates/deletes the key. Requires planHash and explicit unprotected Action. Acceptance is separate from a new job link and Active state; performs one metadata readback, never polls/replays the submission. Inspect later with get_model_key.

d365_plugin_assembly_inspectA

Read actual DLL identity, target framework, public plugin contract types and reference metadata locally using a fixed .NET 10 metadata-reader process. No CRM settings required. Does not load/execute inspected code, verify its signature or resolve dependencies.

d365_plugin_assemblies_queryB

List native plugin assembly metadata with optional exact ID/name filters. Excludes content, credentials and configuration; bounded completeness is explicit. Does not invoke the .NET reader.

d365_plugin_assembly_updateA

Default preview only. Compare actual DLL against a stored unmanaged database assembly and preserve all existing plugin type IDs/names. Permit same major/minor non-decreasing build/revision, same identity/framework/references and AnyCPU signed managed DLL only. Managed, packaged, workflow, added/removed/unresolved types and dependency changes are blocked. Execute with preview fingerprint and metadata-gated concurrency; verify stored bytes, identity and type IDs after saving. .NET 10 Runtime required. Never creates assemblies or retargets steps.

d365_plugin_images_queryB

List native images for an exact step without reading plugin configuration. Bounded results report completeness; does not follow continuation links.

d365_plugin_image_registerA

Preview/register a native Pre/Post/Both image with explicit readable fields. Supports entity-specific Create, Update, Delete, Assign and SetState steps. Validates stage/message and overlapping aliases. Preview fingerprint required to write. No assembly upload or automatic publication.

d365_plugin_image_updateA

Preview/update an unmanaged customizable image. Omitted patch values are preserved. Checks fields, parent step and duplicate aliases, requires preview fingerprint and metadata-gated concurrency, then reads back saved fields.

d365_plugin_image_deleteA

Preview/delete an unmanaged customizable image by exact ID. Requires preview fingerprint, metadata-gated concurrency and a subsequent 404 to confirm deletion. Does not delete its parent step or retry a write.

list_model_ui_componentsB

List bounded native saved/unpublished system forms or views for one table. Returns IDs and types, with explicit list limits; no XML or automatic published-version fallback.

get_model_ui_componentB

Read a native unpublished system form/view definition, structural inventory, SHA-256 preview fingerprint and native ETag when available. Publication state is not inferred.

edit_model_formA

Structurally edit a Main form: append a scalar field using an explicit compatible existing control template, add a verified JavaScript library, or bind onload/onsave/onchange. No arbitrary XML, PCF/Lookup template copying or code execution. Default preview. Execute with current expected_hash; native ETag support is checked, otherwise explicit allow_unprotected_write is required. No automatic publication.

edit_model_viewA

Structurally edit a public system view: add/remove root display columns, set widths or replace simple root-field ordering. Preserves filters, joins and FetchXML attributes needed by other dependencies. Rejects aggregate/distinct query rewrites. Default preview, fingerprint and metadata-gated ETag/fallback checks, saved readback, no automatic publish.

get_model_choicesA

Read bounded native global or local Boolean/Picklist/MultiSelectPicklist options with multilingual labels and a fingerprint. Explicit global_choice_name OR a table/column pair. Reports shared global references without silently retargeting a later write.

create_model_choicesA

Create a global Picklist choice with an existing unmanaged solution and publisher prefix. Default preview. Omit option value to request native publisher-based allocation; supplied numeric values and label sets must be unique. Verifies saved labels and allocated values; no automatic publication.

change_model_choice_valueA

Insert a numeric choice option or update existing option labels/description through native InsertOptionValue/UpdateOptionValue (MergeLabels=true). Unmanaged choices only. Explicitly address a global choice to change shared values. Default preview; execution needs current expected_hash and allow_unprotected_write=true. No delete, renumber, state/status mutation or automatic publish.

publish_model_choicesA

Publish one entire shared global choice by native PublishXml; includes other pending changes to this global choice. Default preview. Local choices use the separate whole-table publish_model_table tool. Publication never replays a save and does not verify UI behavior.

get_model_relationshipB

Read a native relationship definition by schema name, cast to 1:N or N:N metadata. Does not infer publication or UI placement.

create_model_relationshipB

Create native 1:N (with a new Lookup) or N:N relationship. Default preview runs metadata reads and read-only POST eligibility checks, then exposes cascade rules and native create body. Checks publisher, managed properties and duplicate names. No implicit publish, form editing or update of existing relationships.

get_model_keyB

Read one native alternate-key definition and Pending/InProgress/Active/Failed index state. Optional linked job projection excludes free-text messages/data. A saved key is usable for alternate-key operations only after its native index is Active; no automatic reactivation.

create_model_keyA

Create a native alternate-key definition on 1–16 columns with solution/publisher, type, field-security and duplicate checks. Default preview; server validates index size and existing uniqueness asynchronously. Pending/unknown is not Active. No record scan, index reactivation, save replay or implicit publication.

get_model_definitionB

Retrieve a complete table or supported column definition and SHA-256 fingerprint using strong consistency. Supports nine basic/choice column types, including expanded choices. Publication state remains unknown; fingerprint is not a platform lock.

create_model_tableA

Create an ordinary custom table with a primary text name column using native EntityDefinitions. Requires an existing unmanaged solution and matching publisher prefixes. Default preview; does not place fields on forms or request publication.

create_model_columnB

Create native String, Memo, Integer, Decimal, Money, DateTime, Boolean, Picklist or MultiSelectPicklist column. Choice columns use local options or a validated global choice binding. Checks parent managed properties, publisher prefix and duplicate logical name. Default preview; save and publication remain separate.

update_model_labelsA

Update table/column labels by native full-definition PUT with MSCRM.MergeLabels=true. Preserves other retrieved properties, including choice definitions. Does not update option values: use change_model_choice_value. Execution requires current expected_hash and allow_unprotected_write=true; a concurrency race remains. Default preview.

publish_model_tableA

PublishXml for one entire table, including OTHER pending fields, forms, views and ribbon customizations. Default preview exposes scope; publication is separate from save. No automatic save replay on publication failure.

get_diagnostic_settingsA

Read current organization trace/audit switches and optional table audit metadata. Reports forbidden/unavailable/unknown evidence separately; current switches do not prove historical settings or deleted logs. Does not enable logging or auditing.

query_plugin_trace_logsA

Read bounded native plugin trace rows by time, correlation ID, step and exact plugin type. Default excludes message/exception text; configuration and secureconfiguration are always excluded. Empty results do not prove no execution, disabled logging or log deletion.

query_failed_system_jobsA

Read native failed system jobs (statuscode 31) using completion-time bounds and optional correlation/owning step IDs. Excludes job data/configuration and message text by default. Does not retry, cancel or change jobs.

diagnose_plugin_failureA

Build a read-only evidence report from exception-filtered traces, failed jobs and current plugin steps, anchored by correlation, step or plugin type. Uses native IDs for links, reports missing/forbidden/limited sources and keeps root cause undetermined. Current step state is not historical configuration.

query_security_principalsA

Read bounded visible users, teams or roles with optional ID/name/business-unit filters. Disabled users are included unless enabled is explicit. Catalog entries do not imply effective record permissions.

get_principal_security_contextA

Read a user/team profile, direct roles and bounded visible team memberships/roles. Preserves partial/forbidden sources and business-unit role identities. Does not reconstruct all inherited/group/shared/field privileges; use get_record_access for native record rights.

get_record_accessB

Use native bound RetrievePrincipalAccess for the specified principal and record. Returns effective record rights without inventing why they were granted or claiming field/business-rule access. Does not change permissions.

get_record_audit_historyA

Read one native RetrieveRecordChangeHistory page. Default withholds attribute values. Preserves MoreRecords/cookie and current audit-setting evidence; no actor/time/ID is invented if native AuditRecord is absent. Empty history does not prove logs were deleted or auditing was disabled.

get_audit_detailsB

Read native bound RetrieveAuditDetails and independent audit summary metadata. Attribute audit old/new values are opt-in and bounded; other detail types are named without fabricating unsupported fields. Detail and summary permissions are reported separately.

create_new_recordA

Create a native record. Accepts returned entity/ID headers or a supplied primary key, reports confirmed save separately from ID availability. dry_run previews without writing.

update_existing_recordA

Update a native record with row-version protection where supported. Defaults to a fresh ETag; unsupported concurrency stops writes unless unprotected operation is explicit. Does not upsert a missing GUID.

delete_record_by_idA

Delete a native record with validated GUID and concurrency conditions. dry_run identifies the target without deleting. A specific supplied ETag is never downgraded.

upsert_record_by_keyB

Use one active native alternate key with conditional PATCH. Validates key metadata/types and never silently changes key values. Races return errors; writes are never automatically repeated.

associate_recordsA

Associate records using a validated native navigation property. Single-valued lookup uses conditional PATCH; collection membership uses $ref and requires explicit allow_unprotected_write because parent ETags do not guarantee membership concurrency.

disassociate_recordsA

Remove a native association. A single lookup is cleared only if it currently points to the supplied target; collection membership uses DELETE on the specific $ref. No related record is deleted.

execute_record_batchA

Execute up to 100 validated record mutations in native $batch chunks. Each operation has its own change set, so a later failure does not roll back earlier operations. Preflights all operations before dispatch, reports per-item outcomes, stops after unknown results and respects request cancellation.

execute_record_transactionA

Execute up to 100 validated mutations in ONE native $batch change set, without chunking or fallback to individual writes. Reports committed false for confirmed rejection and unknown for transport/server ambiguity. Preflight reads are outside the transaction; arbitrary HTTP and Content-ID dependencies are not accepted.

search_web_resources_by_nameA

Find Web Resources by a substring of name, with bounded OData results. Defaults to published definitions; include_unpublished=true reads the latest saved definitions. Content is excluded by default. Supports the legacy camelCase parameters.

create_web_resource_and_publishA

Create a Web Resource without overwriting an existing saved name. Defaults to scoped PublishXml after saving. publish=false saves only; dry_run=true previews without writing. A publication error preserves saved=true and the created ID; recover with publish_web_resource.

update_web_resource_and_publishA

Update an existing Web Resource by GUID and optionally publish it. Uses If-Match:* to prevent accidental upsert; pass if_match for optimistic concurrency. dry_run reads the latest saved/unpublished definition and returns hashes and ETag. Does not rename or change the resource type.

publish_web_resourceA

Publish a single saved Web Resource with native PublishXml, without saving/re-uploading content. Use for save-only workflows or recovery after a publish failure. Publishes the latest saved version at execution time.

d365_plugin_registration_metadataA

Discover native plugin types, assemblies, SDK messages and message filters. Bounded read-only listings report limits; metadata does not prove write permission. Does not upload assemblies.

d365_plugin_steps_queryA

Query native plugin steps with exact filters. Secure Configuration is excluded by default; explicit include_secure_configuration=true is required to read plaintext. All supplied filters, including step_id, are combined. Results are bounded by top.

d365_plugin_step_registerA

Register a step for an existing native plugin type. Resolves message/entity filters, validates filtering fields and detects duplicate signatures. No write is automatically replayed. Optional secure configuration is allocated separately and bound in the step create; all phases report their IDs on failure. dry_run previews without writing.

d365_plugin_step_updateA

Update one plugin step. Omitted fields/configuration are kept; configuration supports keep/set/clear. Uses table concurrency metadata and a specific ETag by default. Secure set creates a replacement row and binds it in the same PATCH as step changes; clear unbinds. Existing configuration rows are retained, never blindly deleted. Write/readback failures preserve phase evidence.

get_environment_capabilitiesA

Read WhoAmI, RetrieveVersion and table definitions to inspect the configured CRM environment. Reports metadata evidence separately from untested permissions and SDK support; does not change the connection or select another API version.

get_entity_metadata_summaryB

Get a summary of entity metadata including primary key, name field, and business-relevant attributes. System-redundant fields are excluded.

get_field_picklist_optionsB

Get OptionSet (enum) definitions for a specific field within an entity. Supports both local and global OptionSets.

get_entity_navigation_linksB

Get navigation properties (relationships) for an entity, including 1:N, N:1, and N:N relationships.

preview_fetchxml_queryB

Preview the first result using the same FetchXML state/filter logic as query_by_fetchxml. Returns effective query and paging information without claiming the sample is a full result set.

query_by_fetchxmlA

Execute FetchXML with explicit state policy and bounded native cookie/simple paging. Defaults to one page. Returns value, effective query, completeness and continuation; use fetch_all for multiple pages.

clear_server_cacheA

Clear local cached metadata and authentication tokens and invalidate query continuations. Does not change CRM data.

get_current_user_contextB

Get information about the currently connected user and organization context.

list_all_entity_definitionsB

List basic definitions (logical name, display name, etc.) for all entities in the system.

search_records_by_odataA

Query records using OData with explicit state policy, stable ordering and bounded server-driven paging. Defaults to one page and legacy statecode=0 where valid; all adds no implicit state filter. Returns completeness and continuation.

get_record_by_idC

Retrieve detailed information for a single record by its GUID.

get_detailed_field_metadataC

Get full metadata details for a specific attribute (field) for deep analysis.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 84 tools

Disambiguation3/5

The set covers many distinct Dynamics 365 subdomains, but several tools overlap in purpose, especially metadata readers (get_model_definition, get_entity_metadata_summary, get_detailed_field_metadata, list_all_entity_definitions), choice readers (get_field_picklist_options, get_model_choices), and relationship readers (get_model_relationship, get_entity_navigation_links). The very detailed descriptions help disambiguate most cases, but with 84 tools there is still meaningful selection risk.

Naming Consistency3/5

Most names are snake_case verb_noun, but the d365_plugin_* family uses noun_verb forms such as d365_plugin_assembly_inspect and d365_plugin_steps_query, while other areas use create_model_*, get_model_*, and generic record verbs. The conventions are mixed but generally readable.

Tool Count1/5

84 tools is far beyond the 50+ threshold for an extreme mismatch, even for a large enterprise platform like Dynamics 365. The surface should be consolidated or split into smaller purpose-specific servers to reduce cognitive load.

Completeness3/5

The server covers records, metadata, solutions, ribbon, plugins, web resources, audit, security, diagnostics, and querying, but lifecycle coverage is uneven. Notable gaps include no create_solution, no remove_solution_component, no delete_web_resource, no delete_plugin_step, and no delete operations for model tables, columns, relationships, or keys.

Maintenance

ActivityMaintained
ResponsivenessNo issues