Skip to content

Commit 9288921

Browse files
author
Dev Agent Amelia
committed
fix: role privileges action names + contract tests + crm-action-names constants
1 parent 0eead11 commit 9288921

15 files changed

Lines changed: 281 additions & 113 deletions

CAPABILITIES.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
# MCP Dataverse Server — Complete Capabilities Reference
22

3-
> **Version**: 0.4.5 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
3+
> **Version**: 0.4.6 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
44
5-
67 tools across 25 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, RBAC, attribute management, environment variables, workflows, and more.
5+
73 tools across 25 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, RBAC, attribute management, environment variables, workflows, and more.
66

77
---
88

99
## Table of Contents
1010

1111
- [Quick Start](#quick-start)
1212
- [Architecture Overview](#architecture-overview)
13-
- [Tool Reference (67 tools)](#tool-reference-67-tools)
13+
- [Tool Reference (73 tools)](#tool-reference-73-tools)
1414
- [1. Auth (1)](#1-auth-1-tool)
15-
- [2. Metadata (8)](#2-metadata-8-tools)
15+
- [2. Metadata (9)](#2-metadata-9-tools)
1616
- [3. Query (3)](#3-query-3-tools)
1717
- [4. CRUD (6)](#4-crud-6-tools)
18-
- [5. Relations (2)](#5-relations-2-tools)
18+
- [5. Relations (4)](#5-relations-4-tools)
1919
- [6. Actions & Functions (6)](#6-actions--functions-6-tools)
2020
- [7. Batch (1)](#7-batch-1-tool)
2121
- [8. Change Tracking (1)](#8-change-tracking-1-tool)
22-
- [9. Solutions (3)](#9-solutions-3-tools)
22+
- [9. Solutions (2)](#9-solutions-2-tools)
2323
- [10. Impersonation (1)](#10-impersonation-1-tool)
24-
- [11. Customization (3)](#11-customization-3-tools)
25-
- [12. Environment (3)](#12-environment-3-tools)
24+
- [11. Customization (4)](#11-customization-4-tools)
25+
- [12. Environment (4)](#12-environment-4-tools)
2626
- [13. Trace (2)](#13-trace-2-tools)
2727
- [14. Search (1)](#14-search-1-tool)
2828
- [15. Audit (1)](#15-audit-1-tool)
@@ -32,9 +32,9 @@
3232
- [19. Views (1)](#19-views-1-tool)
3333
- [20. Files (2)](#20-files-2-tools)
3434
- [21. Org (2)](#21-org-2-tools)
35-
- [22. RBAC (4)](#22-rbac-4-tools)
36-
- [23. Workflows (2)](#23-workflows-2-tools)
37-
- [24. Assistance (5)](#24-assistance-5-tools)
35+
- [22. RBAC (7)](#22-rbac-7-tools)
36+
- [23. Workflows (4)](#23-workflows-4-tools)
37+
- [24. Assistance (2)](#24-assistance-2-tools)
3838
- [25. Attributes (4)](#25-attributes-4-tools)
3939
- [Error Handling & Retry Behavior](#error-handling--retry-behavior)
4040
- [Security](#security)
@@ -95,40 +95,40 @@ Server communicates over **stdio** (MCP SDK `StdioServerTransport`). Connect fro
9595

9696
```mermaid
9797
graph LR
98-
MCP["MCP Dataverse Server<br/><i>67 tools · 25 categories</i>"]
98+
MCP["MCP Dataverse Server<br/><i>73 tools · 25 categories</i>"]
9999
100100
MCP --> AUTH["🔑 Auth (1)"]
101-
MCP --> META["📋 Metadata (8)"]
101+
MCP --> META["📋 Metadata (9)"]
102102
MCP --> QUERY["🔍 Query (3)"]
103103
MCP --> CRUD["✏️ CRUD (6)"]
104-
MCP --> REL["🔗 Relations (2)"]
104+
MCP --> REL["🔗 Relations (4)"]
105105
MCP --> ACT["⚡ Actions & Functions (6)"]
106106
MCP --> BATCH["📦 Batch (1)"]
107107
MCP --> TRACK["🔄 Change Tracking (1)"]
108-
MCP --> SOL["🧩 Solutions (3)"]
108+
MCP --> SOL["🧩 Solutions (2)"]
109109
MCP --> IMP["👤 Impersonation (1)"]
110-
MCP --> CUST["🔧 Customization (3)"]
111-
MCP --> ENV["⚙️ Environment (3)"]
110+
MCP --> CUST["🔧 Customization (4)"]
111+
MCP --> ENV["⚙️ Environment (4)"]
112112
MCP --> TRACE["🔎 Trace (2)"]
113113
MCP --> SRCH["🔍 Search (1)"]
114114
MCP --> AUDIT["📜 Audit (1)"]
115115
MCP --> QUAL["✅ Quality (1)"]
116116
MCP --> NOTE["📝 Annotations (2)"]
117117
MCP --> USR["👥 Users (2)"]
118-
MCP --> RBAC["🛡️ RBAC (4)"]
118+
MCP --> RBAC["🛡️ RBAC (7)"]
119119
MCP --> VIEWS["👁️ Views (1)"]
120120
MCP --> FILES["📁 Files (2)"]
121121
MCP --> ORG["🏢 Org (2)"]
122-
MCP --> WF["⚙️ Workflows (2)"]
123-
MCP --> ASSIST["🤖 Assistance (5)"]
122+
MCP --> WF["⚙️ Workflows (4)"]
123+
MCP --> ASSIST["🤖 Assistance (2)"]
124124
MCP --> ATTR["🏗️ Attributes (4)"]
125125
```
126126

127127
All tool handlers validate inputs with **Zod** before calling the `DataverseAdvancedClient`. Auth tokens are cached and refreshed proactively; transient errors (429, 503, 504) are retried with exponential backoff.
128128

129129
---
130130

131-
## Tool Reference (67 tools)
131+
## Tool Reference (73 tools)
132132

133133
### 1. Auth (1 tool)
134134

@@ -140,7 +140,7 @@ Returns the current authenticated user context (userId, businessUnitId, organiza
140140
141141
---
142142

143-
### 2. Metadata (8 tools)
143+
### 2. Metadata (9 tools)
144144

145145
#### `dataverse_list_tables`
146146

@@ -375,7 +375,7 @@ Assigns a Dataverse record to a different user or team owner. Sets the `ownerid`
375375
376376
---
377377

378-
### 5. Relations (2 tools)
378+
### 5. Relations (4 tools)
379379

380380
#### `dataverse_associate`
381381

@@ -535,7 +535,7 @@ Delta-query for incremental sync. Pass `deltaToken: null` for initial snapshot;
535535

536536
---
537537

538-
### 9. Solutions (3 tools)
538+
### 9. Solutions (2 tools)
539539

540540
#### `dataverse_list_solutions`
541541

@@ -612,7 +612,7 @@ Executes any other tool on behalf of a different Dataverse user by injecting `MS
612612

613613
---
614614

615-
### 11. Customization (3 tools)
615+
### 11. Customization (4 tools)
616616

617617
#### `dataverse_list_custom_actions`
618618

@@ -672,7 +672,7 @@ Activates or deactivates a classic Dataverse workflow (statecode/statuscode upda
672672

673673
---
674674

675-
### 12. Environment (3 tools)
675+
### 12. Environment (4 tools)
676676

677677
#### `dataverse_get_environment_variable`
678678

@@ -1010,7 +1010,7 @@ Lists Dataverse teams (owner teams and access teams) within one or all business
10101010
10111011
---
10121012

1013-
### 22. RBAC (4 tools)
1013+
### 22. RBAC (7 tools)
10141014

10151015
#### `dataverse_list_roles`
10161016

@@ -1072,7 +1072,7 @@ Assigns a security role to a Dataverse team. All team members inherit the role p
10721072
10731073
---
10741074

1075-
### 23. Workflows (2 tools)
1075+
### 23. Workflows (4 tools)
10761076

10771077
#### `dataverse_list_workflows`
10781078

@@ -1100,7 +1100,7 @@ Retrieves a single workflow definition by ID, including its trigger, steps, and
11001100
11011101
---
11021102

1103-
### 24. Assistance (5 tools)
1103+
### 24. Assistance (2 tools)
11041104

11051105
#### `dataverse_suggest_tools`
11061106

@@ -1360,4 +1360,4 @@ Certain tools include an `errorCategory` field in the error text when the failur
13601360

13611361
---
13621362

1363-
_This document reflects the MCP Dataverse server codebase as of v0.4.067 tools across 25 categories._
1363+
_This document reflects the MCP Dataverse server codebase as of v0.4.673 tools across 25 categories._

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,26 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) — [Semantic V
55

66
---
77

8+
## [0.4.6] — 2026-03-08
9+
10+
### Added
11+
12+
- **`dataverse_create_sitemap`** — New tool to create or update a model-driven app sitemap. Builds the XML structure from `areas` (groups) containing `sub_areas` (entries), publishes it to Dataverse, and optionally attaches it to an existing App Module via `appModuleUniqueName`. Zod-validated inputs; idempotent upsert via GET + conditional PATCH.
13+
14+
### Fixed
15+
16+
- **BUG-038 — `dataverse_suggest_tools` phantom registry**: `TOOL_TAGS` and `TOOL_DESCRIPTIONS` in `router.tools.ts` previously held arbitrary string keys that were out-of-sync with the real tool registry (phantom entries, missing real tools). Both maps are now rebuilt against the live 73-tool registry — every key is a real callable tool name. `suggest_tools` and `list_tool_tags` now return accurate routing guidance.
17+
- **`dataverse_get_role_privileges` — documentation enriched**: Description now documents the Dataverse OData quirk where the entity set for role privileges is named `roleprivilegess` (double‑s). A FetchXML join pattern using `roleprivileges``privilege` is included as a reliable alternative when the OData endpoint returns empty results.
18+
19+
### Removed
20+
21+
- **`dataverse_list_solutions`** — Removed. Listing solutions has low AI-agent utility and is adequately covered by the Dataverse UI or PAC CLI for human operators.
22+
- **`dataverse_solution_components`** — Removed. Superseded; component management is out of scope for AI-agent automation at this stage.
23+
- **`dataverse_add_solution_component`** — Removed. ALM operations require human review and are better handled via dedicated ALM tools (PAC CLI, pipelines).
24+
- **`dataverse_remove_solution_component`** — Removed. Same rationale as above.
25+
26+
---
27+
828
## [0.4.5] — 2026-03-06
929

1030
### Fixed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
**The most complete MCP server for Microsoft Dataverse.**
88

9-
67 tools · 4 resources · 10 guided workflows · Zero config auth
9+
73 tools · 4 resources · 10 guided workflows · Zero config auth
1010

1111
[![npm](https://img.shields.io/npm/v/mcp-dataverse)](https://www.npmjs.com/package/mcp-dataverse)
1212
[![npm downloads](https://img.shields.io/npm/dm/mcp-dataverse)](https://www.npmjs.com/package/mcp-dataverse)

0 commit comments

Comments
 (0)