mcp-dataverse 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +1039 -1039
- package/LICENSE +21 -21
- package/README.md +114 -105
- package/dist/auth-provider.factory-MSMLSOX3.js +1 -0
- package/dist/chunk-24RDOMG4.js +29 -0
- package/dist/chunk-OXKMMPM3.js +37 -0
- package/dist/chunk-PAX4NW5B.js +1 -0
- package/dist/chunk-SUDI4JM6.js +3 -0
- package/dist/config.loader-VTIKUDN7.js +1 -0
- package/dist/dataverse-client-advanced-T5ZJMRLK.js +1 -0
- package/dist/doctor.js +2 -102
- package/dist/http-server.js +3 -61
- package/dist/install.js +8 -233
- package/dist/server.js +43 -202
- package/dist/setup-auth.js +18 -41
- package/package.json +95 -94
- package/server.json +51 -50
- package/dist/auth/auth-provider.factory.d.ts +0 -4
- package/dist/auth/auth-provider.factory.d.ts.map +0 -1
- package/dist/auth/auth-provider.factory.js +0 -5
- package/dist/auth/auth-provider.factory.js.map +0 -1
- package/dist/auth/auth-provider.interface.d.ts +0 -21
- package/dist/auth/auth-provider.interface.d.ts.map +0 -1
- package/dist/auth/auth-provider.interface.js +0 -2
- package/dist/auth/auth-provider.interface.js.map +0 -1
- package/dist/auth/device-code-auth-provider.d.ts +0 -18
- package/dist/auth/device-code-auth-provider.d.ts.map +0 -1
- package/dist/auth/device-code-auth-provider.js +0 -167
- package/dist/auth/device-code-auth-provider.js.map +0 -1
- package/dist/config/config.loader.d.ts +0 -3
- package/dist/config/config.loader.d.ts.map +0 -1
- package/dist/config/config.loader.js +0 -39
- package/dist/config/config.loader.js.map +0 -1
- package/dist/config/config.schema.d.ts +0 -16
- package/dist/config/config.schema.d.ts.map +0 -1
- package/dist/config/config.schema.js +0 -20
- package/dist/config/config.schema.js.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.d.ts +0 -53
- package/dist/dataverse/dataverse-client-advanced.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.js +0 -199
- package/dist/dataverse/dataverse-client-advanced.js.map +0 -1
- package/dist/dataverse/dataverse-client.actions.d.ts +0 -11
- package/dist/dataverse/dataverse-client.actions.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.actions.js +0 -25
- package/dist/dataverse/dataverse-client.actions.js.map +0 -1
- package/dist/dataverse/dataverse-client.batch.d.ts +0 -10
- package/dist/dataverse/dataverse-client.batch.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.batch.js +0 -74
- package/dist/dataverse/dataverse-client.batch.js.map +0 -1
- package/dist/dataverse/dataverse-client.d.ts +0 -46
- package/dist/dataverse/dataverse-client.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.js +0 -275
- package/dist/dataverse/dataverse-client.js.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.d.ts +0 -41
- package/dist/dataverse/dataverse-client.metadata.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.js +0 -124
- package/dist/dataverse/dataverse-client.metadata.js.map +0 -1
- package/dist/dataverse/dataverse-client.utils.d.ts +0 -14
- package/dist/dataverse/dataverse-client.utils.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.utils.js +0 -65
- package/dist/dataverse/dataverse-client.utils.js.map +0 -1
- package/dist/dataverse/http-client.d.ts +0 -38
- package/dist/dataverse/http-client.d.ts.map +0 -1
- package/dist/dataverse/http-client.js +0 -111
- package/dist/dataverse/http-client.js.map +0 -1
- package/dist/dataverse/types.d.ts +0 -68
- package/dist/dataverse/types.d.ts.map +0 -1
- package/dist/dataverse/types.js +0 -2
- package/dist/dataverse/types.js.map +0 -1
- package/dist/doctor.d.ts +0 -7
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/http-server.d.ts +0 -3
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js.map +0 -1
- package/dist/install.d.ts +0 -3
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/resources/resource-provider.d.ts +0 -11
- package/dist/resources/resource-provider.d.ts.map +0 -1
- package/dist/resources/resource-provider.js +0 -79
- package/dist/resources/resource-provider.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/setup-auth.d.ts +0 -3
- package/dist/setup-auth.d.ts.map +0 -1
- package/dist/setup-auth.js.map +0 -1
- package/dist/tools/actions.tools.d.ts +0 -206
- package/dist/tools/actions.tools.d.ts.map +0 -1
- package/dist/tools/actions.tools.js +0 -256
- package/dist/tools/actions.tools.js.map +0 -1
- package/dist/tools/annotations.tools.d.ts +0 -94
- package/dist/tools/annotations.tools.d.ts.map +0 -1
- package/dist/tools/annotations.tools.js +0 -225
- package/dist/tools/annotations.tools.js.map +0 -1
- package/dist/tools/audit.tools.d.ts +0 -51
- package/dist/tools/audit.tools.d.ts.map +0 -1
- package/dist/tools/audit.tools.js +0 -170
- package/dist/tools/audit.tools.js.map +0 -1
- package/dist/tools/auth.tools.d.ts +0 -23
- package/dist/tools/auth.tools.d.ts.map +0 -1
- package/dist/tools/auth.tools.js +0 -36
- package/dist/tools/auth.tools.js.map +0 -1
- package/dist/tools/batch.tools.d.ts +0 -52
- package/dist/tools/batch.tools.d.ts.map +0 -1
- package/dist/tools/batch.tools.js +0 -89
- package/dist/tools/batch.tools.js.map +0 -1
- package/dist/tools/crud.tools.d.ts +0 -260
- package/dist/tools/crud.tools.d.ts.map +0 -1
- package/dist/tools/crud.tools.js +0 -290
- package/dist/tools/crud.tools.js.map +0 -1
- package/dist/tools/customization.tools.d.ts +0 -127
- package/dist/tools/customization.tools.d.ts.map +0 -1
- package/dist/tools/customization.tools.js +0 -285
- package/dist/tools/customization.tools.js.map +0 -1
- package/dist/tools/environment.tools.d.ts +0 -106
- package/dist/tools/environment.tools.d.ts.map +0 -1
- package/dist/tools/environment.tools.js +0 -274
- package/dist/tools/environment.tools.js.map +0 -1
- package/dist/tools/file.tools.d.ts +0 -73
- package/dist/tools/file.tools.d.ts.map +0 -1
- package/dist/tools/file.tools.js +0 -160
- package/dist/tools/file.tools.js.map +0 -1
- package/dist/tools/guardrails.d.ts +0 -22
- package/dist/tools/guardrails.d.ts.map +0 -1
- package/dist/tools/guardrails.js +0 -56
- package/dist/tools/guardrails.js.map +0 -1
- package/dist/tools/impersonate.tools.d.ts +0 -44
- package/dist/tools/impersonate.tools.d.ts.map +0 -1
- package/dist/tools/impersonate.tools.js +0 -87
- package/dist/tools/impersonate.tools.js.map +0 -1
- package/dist/tools/metadata.tools.d.ts +0 -279
- package/dist/tools/metadata.tools.d.ts.map +0 -1
- package/dist/tools/metadata.tools.js +0 -400
- package/dist/tools/metadata.tools.js.map +0 -1
- package/dist/tools/org.tools.d.ts +0 -32
- package/dist/tools/org.tools.d.ts.map +0 -1
- package/dist/tools/org.tools.js +0 -65
- package/dist/tools/org.tools.js.map +0 -1
- package/dist/tools/output.utils.d.ts +0 -63
- package/dist/tools/output.utils.d.ts.map +0 -1
- package/dist/tools/output.utils.js +0 -78
- package/dist/tools/output.utils.js.map +0 -1
- package/dist/tools/progress.d.ts +0 -15
- package/dist/tools/progress.d.ts.map +0 -1
- package/dist/tools/progress.js +0 -29
- package/dist/tools/progress.js.map +0 -1
- package/dist/tools/quality.tools.d.ts +0 -36
- package/dist/tools/quality.tools.d.ts.map +0 -1
- package/dist/tools/quality.tools.js +0 -97
- package/dist/tools/quality.tools.js.map +0 -1
- package/dist/tools/query.tools.d.ts +0 -151
- package/dist/tools/query.tools.d.ts.map +0 -1
- package/dist/tools/query.tools.js +0 -293
- package/dist/tools/query.tools.js.map +0 -1
- package/dist/tools/relations.tools.d.ts +0 -77
- package/dist/tools/relations.tools.d.ts.map +0 -1
- package/dist/tools/relations.tools.js +0 -96
- package/dist/tools/relations.tools.js.map +0 -1
- package/dist/tools/router.tools.d.ts +0 -5
- package/dist/tools/router.tools.d.ts.map +0 -1
- package/dist/tools/router.tools.js +0 -247
- package/dist/tools/router.tools.js.map +0 -1
- package/dist/tools/search.tools.d.ts +0 -74
- package/dist/tools/search.tools.d.ts.map +0 -1
- package/dist/tools/search.tools.js +0 -142
- package/dist/tools/search.tools.js.map +0 -1
- package/dist/tools/solution.tools.d.ts +0 -113
- package/dist/tools/solution.tools.d.ts.map +0 -1
- package/dist/tools/solution.tools.js +0 -176
- package/dist/tools/solution.tools.js.map +0 -1
- package/dist/tools/teams.tools.d.ts +0 -65
- package/dist/tools/teams.tools.d.ts.map +0 -1
- package/dist/tools/teams.tools.js +0 -127
- package/dist/tools/teams.tools.js.map +0 -1
- package/dist/tools/tool-registry.d.ts +0 -35
- package/dist/tools/tool-registry.d.ts.map +0 -1
- package/dist/tools/tool-registry.js +0 -31
- package/dist/tools/tool-registry.js.map +0 -1
- package/dist/tools/trace.tools.d.ts +0 -75
- package/dist/tools/trace.tools.d.ts.map +0 -1
- package/dist/tools/trace.tools.js +0 -233
- package/dist/tools/trace.tools.js.map +0 -1
- package/dist/tools/tracking.tools.d.ts +0 -41
- package/dist/tools/tracking.tools.d.ts.map +0 -1
- package/dist/tools/tracking.tools.js +0 -76
- package/dist/tools/tracking.tools.js.map +0 -1
- package/dist/tools/users.tools.d.ts +0 -141
- package/dist/tools/users.tools.d.ts.map +0 -1
- package/dist/tools/users.tools.js +0 -321
- package/dist/tools/users.tools.js.map +0 -1
- package/dist/tools/validation.utils.d.ts +0 -6
- package/dist/tools/validation.utils.d.ts.map +0 -1
- package/dist/tools/validation.utils.js +0 -14
- package/dist/tools/validation.utils.js.map +0 -1
- package/dist/tools/views.tools.d.ts +0 -36
- package/dist/tools/views.tools.d.ts.map +0 -1
- package/dist/tools/views.tools.js +0 -92
- package/dist/tools/views.tools.js.map +0 -1
- package/dist/tools/workflow.tools.d.ts +0 -111
- package/dist/tools/workflow.tools.d.ts.map +0 -1
- package/dist/tools/workflow.tools.js +0 -449
- package/dist/tools/workflow.tools.js.map +0 -1
- package/dist/transport.d.ts +0 -6
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -21
- package/dist/transport.js.map +0 -1
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { safeEntitySetName } from "./validation.utils.js";
|
|
3
|
-
import { formatData, mergeFormattedValues } from "./output.utils.js";
|
|
4
|
-
import { checkQueryGuardrails } from "./guardrails.js";
|
|
5
|
-
/**
|
|
6
|
-
* Dataverse entities whose EntitySetName does not follow the simple <logicalName>+s pattern.
|
|
7
|
-
* Used to resolve the correct entity set name when auto-extracting from FetchXML.
|
|
8
|
-
*/
|
|
9
|
-
const IRREGULAR_ENTITY_SET_NAMES = {
|
|
10
|
-
opportunity: "opportunities",
|
|
11
|
-
territory: "territories",
|
|
12
|
-
category: "categories",
|
|
13
|
-
activityparty: "activityparties",
|
|
14
|
-
activitymimeattachment: "activitymimeattachments",
|
|
15
|
-
queue: "queues",
|
|
16
|
-
queueitem: "queueitems",
|
|
17
|
-
dependency: "dependencies",
|
|
18
|
-
salesliteratureitem: "salesliteratureitems",
|
|
19
|
-
contractdetail: "contractdetails",
|
|
20
|
-
discounttype: "discounttypes",
|
|
21
|
-
entitlementtemplate: "entitlementtemplates",
|
|
22
|
-
pricelevel: "pricelevels",
|
|
23
|
-
};
|
|
24
|
-
export const queryTools = [
|
|
25
|
-
{
|
|
26
|
-
name: "dataverse_query",
|
|
27
|
-
description: "Queries a Dataverse table using OData ($filter, $select, $orderby, $top, $expand, $count). Use for simple to moderate reads on a single table or with shallow $expand for related fields. Always specify $select to minimize payload. For complex aggregations (count, sum, avg), multi-entity joins, many-to-many traversal, or advanced FetchXML-only operators, use dataverse_execute_fetchxml instead. WHEN TO USE: Single-table reads, simple filters, shallow expands, or server-side aggregation via $apply. BEST PRACTICES: Always pass $select; cap with $top; use $apply for server-side counts/grouping. WORKFLOW: query_data.",
|
|
28
|
-
inputSchema: {
|
|
29
|
-
type: "object",
|
|
30
|
-
properties: {
|
|
31
|
-
entitySetName: {
|
|
32
|
-
type: "string",
|
|
33
|
-
description: 'The OData entity set name (e.g., "accounts", "contacts", "new_mytables")',
|
|
34
|
-
},
|
|
35
|
-
select: {
|
|
36
|
-
type: "array",
|
|
37
|
-
items: { type: "string" },
|
|
38
|
-
description: "Columns to return. Always specify to minimize payload.",
|
|
39
|
-
},
|
|
40
|
-
filter: {
|
|
41
|
-
type: "string",
|
|
42
|
-
description: 'OData $filter expression (e.g., "statecode eq 0 and new_amount gt 1000")',
|
|
43
|
-
},
|
|
44
|
-
orderby: {
|
|
45
|
-
type: "string",
|
|
46
|
-
description: 'OData $orderby expression (e.g., "createdon desc")',
|
|
47
|
-
},
|
|
48
|
-
top: {
|
|
49
|
-
type: "number",
|
|
50
|
-
description: "Maximum number of records to return (default: 50)",
|
|
51
|
-
},
|
|
52
|
-
expand: {
|
|
53
|
-
type: "string",
|
|
54
|
-
description: 'OData $expand for related entities (e.g., "parentaccountid($select=name)")',
|
|
55
|
-
},
|
|
56
|
-
count: {
|
|
57
|
-
type: "boolean",
|
|
58
|
-
description: "Include total record count in response",
|
|
59
|
-
},
|
|
60
|
-
apply: {
|
|
61
|
-
type: "string",
|
|
62
|
-
description: 'OData $apply for server-side aggregation (e.g., "groupby((statuscode),aggregate($count as count))")',
|
|
63
|
-
},
|
|
64
|
-
formattedValues: {
|
|
65
|
-
type: "boolean",
|
|
66
|
-
description: "When true, includes human-readable labels for picklist fields alongside raw integer codes (e.g., { value: 1, label: 'Active' }). Uses OData formatted-value annotations.",
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
required: ["entitySetName"],
|
|
70
|
-
},
|
|
71
|
-
annotations: {
|
|
72
|
-
readOnlyHint: true,
|
|
73
|
-
destructiveHint: false,
|
|
74
|
-
idempotentHint: true,
|
|
75
|
-
openWorldHint: true,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: "dataverse_execute_fetchxml",
|
|
80
|
-
description: 'Executes a FetchXML query against Dataverse — use for complex scenarios requiring aggregations (count, sum, avg, min, max with grouping), linked-entity joins across multiple tables, many-to-many relationship traversal, or advanced filtering not expressible in OData. Returns a typed array of records. entitySetName is optional — if omitted it is extracted from the <entity name="..."> element in the FetchXML. WHEN TO USE: Multi-table joins, aggregations with groupby, N:N traversal, or filtering not supported by OData. BEST PRACTICES: Add page/count attributes for large result sets; prefer dataverse_query for simple reads. WORKFLOW: query_data.',
|
|
81
|
-
inputSchema: {
|
|
82
|
-
type: "object",
|
|
83
|
-
properties: {
|
|
84
|
-
entitySetName: {
|
|
85
|
-
type: "string",
|
|
86
|
-
description: 'OData entity set name of the root entity (e.g., "accounts"). If omitted, extracted from the <entity name="..."> element in the FetchXML.',
|
|
87
|
-
},
|
|
88
|
-
fetchXml: {
|
|
89
|
-
type: "string",
|
|
90
|
-
description: "The complete FetchXML query string",
|
|
91
|
-
},
|
|
92
|
-
formattedValues: {
|
|
93
|
-
type: "boolean",
|
|
94
|
-
description: "When true, includes human-readable labels for picklist fields alongside raw integer codes.",
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
required: ["fetchXml"],
|
|
98
|
-
},
|
|
99
|
-
annotations: {
|
|
100
|
-
readOnlyHint: true,
|
|
101
|
-
destructiveHint: false,
|
|
102
|
-
idempotentHint: true,
|
|
103
|
-
openWorldHint: true,
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: "dataverse_retrieve_multiple_with_paging",
|
|
108
|
-
description: "Retrieves ALL records matching a query by automatically following OData nextLink pages. Use instead of dataverse_query when you need more than 5000 records or all records in a table. Returns totalRetrieved count. Set maxTotal to cap retrieval (default 5000, max 50000) to avoid overwhelming the context. WHEN TO USE: You need all matching records beyond the 5000-row OData page limit or a full table export. BEST PRACTICES: Always set $select; use maxTotal to cap results and avoid context overflow. WORKFLOW: query_data.",
|
|
109
|
-
inputSchema: {
|
|
110
|
-
type: "object",
|
|
111
|
-
properties: {
|
|
112
|
-
entitySetName: {
|
|
113
|
-
type: "string",
|
|
114
|
-
description: 'OData entity set name (e.g., "accounts")',
|
|
115
|
-
},
|
|
116
|
-
select: { type: "array", items: { type: "string" } },
|
|
117
|
-
filter: { type: "string" },
|
|
118
|
-
orderby: { type: "string" },
|
|
119
|
-
expand: { type: "string" },
|
|
120
|
-
maxTotal: {
|
|
121
|
-
type: "number",
|
|
122
|
-
description: "Maximum records to retrieve (default: 5000, max: 50000)",
|
|
123
|
-
},
|
|
124
|
-
formattedValues: {
|
|
125
|
-
type: "boolean",
|
|
126
|
-
description: "Include formatted label annotations.",
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
required: ["entitySetName"],
|
|
130
|
-
},
|
|
131
|
-
annotations: {
|
|
132
|
-
readOnlyHint: true,
|
|
133
|
-
destructiveHint: false,
|
|
134
|
-
idempotentHint: true,
|
|
135
|
-
openWorldHint: true,
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
];
|
|
139
|
-
const QueryInput = z.object({
|
|
140
|
-
entitySetName: safeEntitySetName,
|
|
141
|
-
select: z.array(z.string()).optional(),
|
|
142
|
-
filter: z.string().optional(),
|
|
143
|
-
orderby: z.string().optional(),
|
|
144
|
-
top: z.number().positive().max(5000).optional().default(50),
|
|
145
|
-
expand: z.string().optional(),
|
|
146
|
-
count: z.boolean().optional(),
|
|
147
|
-
apply: z.string().optional(),
|
|
148
|
-
formattedValues: z.boolean().optional(),
|
|
149
|
-
});
|
|
150
|
-
const FetchXmlInput = z.object({
|
|
151
|
-
fetchXml: z.string().min(1).describe("Complete FetchXML query string"),
|
|
152
|
-
entitySetName: z
|
|
153
|
-
.string()
|
|
154
|
-
.optional()
|
|
155
|
-
.describe('OData entity set name (e.g., "accounts"). If omitted, extracted from the <entity name="..."> element in the FetchXML.'),
|
|
156
|
-
formattedValues: z.boolean().optional(),
|
|
157
|
-
});
|
|
158
|
-
const RetrieveWithPagingInput = z.object({
|
|
159
|
-
entitySetName: safeEntitySetName,
|
|
160
|
-
select: z.array(z.string()).optional(),
|
|
161
|
-
filter: z.string().optional(),
|
|
162
|
-
orderby: z.string().optional(),
|
|
163
|
-
expand: z.string().optional(),
|
|
164
|
-
maxTotal: z.number().positive().max(50000).optional(),
|
|
165
|
-
formattedValues: z.boolean().optional(),
|
|
166
|
-
});
|
|
167
|
-
export async function handleQueryTool(name, args, client, progress) {
|
|
168
|
-
switch (name) {
|
|
169
|
-
case "dataverse_query": {
|
|
170
|
-
const params = QueryInput.parse(args);
|
|
171
|
-
const queryOptions = {};
|
|
172
|
-
if (params.select !== undefined)
|
|
173
|
-
queryOptions.select = params.select;
|
|
174
|
-
if (params.filter !== undefined)
|
|
175
|
-
queryOptions.filter = params.filter;
|
|
176
|
-
if (params.orderby !== undefined)
|
|
177
|
-
queryOptions.orderby = params.orderby;
|
|
178
|
-
if (params.top !== undefined)
|
|
179
|
-
queryOptions.top = params.top;
|
|
180
|
-
if (params.expand !== undefined)
|
|
181
|
-
queryOptions.expand = params.expand;
|
|
182
|
-
if (params.count !== undefined)
|
|
183
|
-
queryOptions.count = params.count;
|
|
184
|
-
if (params.apply !== undefined)
|
|
185
|
-
queryOptions.apply = params.apply;
|
|
186
|
-
if (params.formattedValues !== undefined)
|
|
187
|
-
queryOptions.formattedValues = params.formattedValues;
|
|
188
|
-
const result = await client.query(params.entitySetName, queryOptions);
|
|
189
|
-
const records = Array.isArray(result?.value) ? result.value : [];
|
|
190
|
-
const totalCount = result["@odata.count"];
|
|
191
|
-
const countSuffix = totalCount !== undefined
|
|
192
|
-
? totalCount === records.length
|
|
193
|
-
? " (showing all results)"
|
|
194
|
-
: ` (total in dataset: ${totalCount})`
|
|
195
|
-
: "";
|
|
196
|
-
const finalRecords = params.formattedValues
|
|
197
|
-
? mergeFormattedValues(records)
|
|
198
|
-
: records;
|
|
199
|
-
const displayResult = params.formattedValues && Array.isArray(result?.value)
|
|
200
|
-
? { ...result, value: finalRecords }
|
|
201
|
-
: result;
|
|
202
|
-
const queryWarnings = checkQueryGuardrails({
|
|
203
|
-
...(params.top !== undefined ? { top: params.top } : {}),
|
|
204
|
-
...(params.select !== undefined ? { select: params.select } : {}),
|
|
205
|
-
...(params.filter !== undefined ? { filter: params.filter } : {}),
|
|
206
|
-
entitySetName: params.entitySetName,
|
|
207
|
-
}).map((w) => `[${w.severity.toUpperCase()}] ${w.code}: ${w.message}`);
|
|
208
|
-
return formatData(`${records.length} records returned from ${params.entitySetName}${countSuffix}`, displayResult, [
|
|
209
|
-
"Use dataverse_execute_fetchxml for complex joins or aggregations",
|
|
210
|
-
"Add $select to minimize payload",
|
|
211
|
-
], queryWarnings.length > 0 ? queryWarnings : undefined);
|
|
212
|
-
}
|
|
213
|
-
case "dataverse_execute_fetchxml": {
|
|
214
|
-
const parsed = FetchXmlInput.parse(args);
|
|
215
|
-
let entitySetName = parsed.entitySetName;
|
|
216
|
-
const { fetchXml } = parsed;
|
|
217
|
-
if (!entitySetName) {
|
|
218
|
-
const match = fetchXml.match(/<entity\s+name=["']([^"']+)["']/i);
|
|
219
|
-
if (!match) {
|
|
220
|
-
return {
|
|
221
|
-
content: [
|
|
222
|
-
{
|
|
223
|
-
type: "text",
|
|
224
|
-
text: JSON.stringify({
|
|
225
|
-
isError: true,
|
|
226
|
-
error: "entitySetName is required when not present in FetchXML <entity> element",
|
|
227
|
-
}),
|
|
228
|
-
},
|
|
229
|
-
],
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
const logicalName = match[1];
|
|
233
|
-
entitySetName =
|
|
234
|
-
IRREGULAR_ENTITY_SET_NAMES[logicalName] ?? logicalName + "s";
|
|
235
|
-
}
|
|
236
|
-
const result = await client.executeFetchXml(entitySetName, fetchXml, parsed.formattedValues);
|
|
237
|
-
const records = Array.isArray(result)
|
|
238
|
-
? result
|
|
239
|
-
: Array.isArray(result?.value)
|
|
240
|
-
? result.value
|
|
241
|
-
: [];
|
|
242
|
-
const finalRecords = parsed.formattedValues
|
|
243
|
-
? mergeFormattedValues(records)
|
|
244
|
-
: records;
|
|
245
|
-
return formatData(`${finalRecords.length} records returned via FetchXML`, parsed.formattedValues && Array.isArray(result?.value)
|
|
246
|
-
? { ...result, value: finalRecords }
|
|
247
|
-
: result, [
|
|
248
|
-
"Use dataverse_query for simple OData reads",
|
|
249
|
-
"Add page/count attributes for large result sets",
|
|
250
|
-
]);
|
|
251
|
-
}
|
|
252
|
-
case "dataverse_retrieve_multiple_with_paging": {
|
|
253
|
-
const params = RetrieveWithPagingInput.parse(args);
|
|
254
|
-
const pagingOptions = {};
|
|
255
|
-
if (params.select !== undefined)
|
|
256
|
-
pagingOptions.select = params.select;
|
|
257
|
-
if (params.filter !== undefined)
|
|
258
|
-
pagingOptions.filter = params.filter;
|
|
259
|
-
if (params.orderby !== undefined)
|
|
260
|
-
pagingOptions.orderby = params.orderby;
|
|
261
|
-
if (params.expand !== undefined)
|
|
262
|
-
pagingOptions.expand = params.expand;
|
|
263
|
-
if (params.maxTotal !== undefined)
|
|
264
|
-
pagingOptions.maxTotal = params.maxTotal;
|
|
265
|
-
await progress?.report(0, 1);
|
|
266
|
-
const result = await client.queryWithPaging(params.entitySetName, pagingOptions);
|
|
267
|
-
const totalRetrieved = result?.totalRetrieved ??
|
|
268
|
-
(Array.isArray(result?.value)
|
|
269
|
-
? result.value.length
|
|
270
|
-
: 0);
|
|
271
|
-
const pages = result?.pageCount ?? 1;
|
|
272
|
-
await progress?.report(1, 1);
|
|
273
|
-
const pagingRecords = Array.isArray(result?.records)
|
|
274
|
-
? result.records
|
|
275
|
-
: [];
|
|
276
|
-
const displayPagingResult = params.formattedValues && pagingRecords.length > 0
|
|
277
|
-
? { ...result, records: mergeFormattedValues(pagingRecords) }
|
|
278
|
-
: result;
|
|
279
|
-
const pagingWarnings = checkQueryGuardrails({
|
|
280
|
-
...(params.select !== undefined ? { select: params.select } : {}),
|
|
281
|
-
...(params.filter !== undefined ? { filter: params.filter } : {}),
|
|
282
|
-
entitySetName: params.entitySetName,
|
|
283
|
-
}).map((w) => `[${w.severity.toUpperCase()}] ${w.code}: ${w.message}`);
|
|
284
|
-
return formatData(`${totalRetrieved} records retrieved across ${pages} pages from ${params.entitySetName}`, displayPagingResult, [
|
|
285
|
-
"Set maxTotal to limit retrieval",
|
|
286
|
-
"Use $select to minimize payload size",
|
|
287
|
-
], pagingWarnings.length > 0 ? pagingWarnings : undefined);
|
|
288
|
-
}
|
|
289
|
-
default:
|
|
290
|
-
throw new Error(`Unknown query tool: ${name}`);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
//# sourceMappingURL=query.tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.tools.js","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import type { DataverseClient } from "../dataverse/dataverse-client.js";
|
|
2
|
-
export declare const relationTools: ({
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object";
|
|
7
|
-
properties: {
|
|
8
|
-
entitySetName: {
|
|
9
|
-
type: string;
|
|
10
|
-
};
|
|
11
|
-
id: {
|
|
12
|
-
type: string;
|
|
13
|
-
description: string;
|
|
14
|
-
};
|
|
15
|
-
relationshipName: {
|
|
16
|
-
type: string;
|
|
17
|
-
description: string;
|
|
18
|
-
};
|
|
19
|
-
relatedEntitySetName: {
|
|
20
|
-
type: string;
|
|
21
|
-
description: string;
|
|
22
|
-
};
|
|
23
|
-
relatedId: {
|
|
24
|
-
type: string;
|
|
25
|
-
description: string;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
required: string[];
|
|
29
|
-
};
|
|
30
|
-
annotations: {
|
|
31
|
-
readOnlyHint: boolean;
|
|
32
|
-
destructiveHint: boolean;
|
|
33
|
-
idempotentHint: boolean;
|
|
34
|
-
openWorldHint: boolean;
|
|
35
|
-
};
|
|
36
|
-
} | {
|
|
37
|
-
name: string;
|
|
38
|
-
description: string;
|
|
39
|
-
inputSchema: {
|
|
40
|
-
type: "object";
|
|
41
|
-
properties: {
|
|
42
|
-
entitySetName: {
|
|
43
|
-
type: string;
|
|
44
|
-
};
|
|
45
|
-
id: {
|
|
46
|
-
type: string;
|
|
47
|
-
description?: never;
|
|
48
|
-
};
|
|
49
|
-
relationshipName: {
|
|
50
|
-
type: string;
|
|
51
|
-
description?: never;
|
|
52
|
-
};
|
|
53
|
-
relatedId: {
|
|
54
|
-
type: string;
|
|
55
|
-
description: string;
|
|
56
|
-
};
|
|
57
|
-
relatedEntitySetName: {
|
|
58
|
-
type: string;
|
|
59
|
-
description: string;
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
required: string[];
|
|
63
|
-
};
|
|
64
|
-
annotations: {
|
|
65
|
-
readOnlyHint: boolean;
|
|
66
|
-
destructiveHint: boolean;
|
|
67
|
-
idempotentHint: boolean;
|
|
68
|
-
openWorldHint: boolean;
|
|
69
|
-
};
|
|
70
|
-
})[];
|
|
71
|
-
export declare function handleRelationTool(name: string, args: unknown, client: DataverseClient): Promise<{
|
|
72
|
-
content: Array<{
|
|
73
|
-
type: "text";
|
|
74
|
-
text: string;
|
|
75
|
-
}>;
|
|
76
|
-
}>;
|
|
77
|
-
//# sourceMappingURL=relations.tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relations.tools.d.ts","sourceRoot":"","sources":["../../src/tools/relations.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAIxE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgEzB,CAAC;AAkBF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+C7D"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { formatData } from "./output.utils.js";
|
|
3
|
-
import { safeEntitySetName, safeRelationshipName } from "./validation.utils.js";
|
|
4
|
-
export const relationTools = [
|
|
5
|
-
{
|
|
6
|
-
name: "dataverse_associate",
|
|
7
|
-
description: "Creates an association between two Dataverse records via a named N:N or 1:N relationship. Requires the relationship schema name obtainable from dataverse_get_relationships. Use for N:N relationships or to link records without modifying a lookup field directly — for simple 1:N lookups, setting the lookup field in dataverse_update is simpler. WHEN TO USE: Linking two records via an N:N relationship or 1:N navigation property. BEST PRACTICES: Get the relationship schema name from dataverse_get_relationships first; for simple 1:N lookups use dataverse_update. WORKFLOW: update_record.",
|
|
8
|
-
inputSchema: {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
entitySetName: { type: "string" },
|
|
12
|
-
id: { type: "string", description: "Source record GUID" },
|
|
13
|
-
relationshipName: {
|
|
14
|
-
type: "string",
|
|
15
|
-
description: "Relationship schema name",
|
|
16
|
-
},
|
|
17
|
-
relatedEntitySetName: {
|
|
18
|
-
type: "string",
|
|
19
|
-
description: "Related entity set name",
|
|
20
|
-
},
|
|
21
|
-
relatedId: { type: "string", description: "Related record GUID" },
|
|
22
|
-
},
|
|
23
|
-
required: [
|
|
24
|
-
"entitySetName",
|
|
25
|
-
"id",
|
|
26
|
-
"relationshipName",
|
|
27
|
-
"relatedEntitySetName",
|
|
28
|
-
"relatedId",
|
|
29
|
-
],
|
|
30
|
-
},
|
|
31
|
-
annotations: {
|
|
32
|
-
readOnlyHint: false,
|
|
33
|
-
destructiveHint: false,
|
|
34
|
-
idempotentHint: true,
|
|
35
|
-
openWorldHint: true,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: "dataverse_disassociate",
|
|
40
|
-
description: "Removes an existing association between two Dataverse records on a named relationship. For N:N relationships, provide relatedId and relatedEntitySetName to build the correct $id URL. For 1:N relationships, relatedId and relatedEntitySetName are optional. Use dataverse_get_relationships to find the correct relationship schema name. WHEN TO USE: Removing an N:N or 1:N link between two records without deleting either record. BEST PRACTICES: Get the relationship schema name from dataverse_get_relationships; relatedId is required for N:N. WORKFLOW: update_record.",
|
|
41
|
-
inputSchema: {
|
|
42
|
-
type: "object",
|
|
43
|
-
properties: {
|
|
44
|
-
entitySetName: { type: "string" },
|
|
45
|
-
id: { type: "string" },
|
|
46
|
-
relationshipName: { type: "string" },
|
|
47
|
-
relatedId: {
|
|
48
|
-
type: "string",
|
|
49
|
-
description: "Required for N:N relationships",
|
|
50
|
-
},
|
|
51
|
-
relatedEntitySetName: {
|
|
52
|
-
type: "string",
|
|
53
|
-
description: 'Entity set name of the related record (required for N:N). E.g., "contacts"',
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
required: ["entitySetName", "id", "relationshipName"],
|
|
57
|
-
},
|
|
58
|
-
annotations: {
|
|
59
|
-
readOnlyHint: false,
|
|
60
|
-
destructiveHint: true,
|
|
61
|
-
idempotentHint: true,
|
|
62
|
-
openWorldHint: true,
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
const AssociateInput = z.object({
|
|
67
|
-
entitySetName: safeEntitySetName,
|
|
68
|
-
id: z.string().uuid(),
|
|
69
|
-
relationshipName: safeRelationshipName,
|
|
70
|
-
relatedEntitySetName: safeEntitySetName,
|
|
71
|
-
relatedId: z.string().uuid(),
|
|
72
|
-
});
|
|
73
|
-
const DisassociateInput = z.object({
|
|
74
|
-
entitySetName: safeEntitySetName,
|
|
75
|
-
id: z.string().uuid(),
|
|
76
|
-
relationshipName: safeRelationshipName,
|
|
77
|
-
relatedId: z.string().uuid().optional(),
|
|
78
|
-
relatedEntitySetName: safeEntitySetName.optional(),
|
|
79
|
-
});
|
|
80
|
-
export async function handleRelationTool(name, args, client) {
|
|
81
|
-
switch (name) {
|
|
82
|
-
case "dataverse_associate": {
|
|
83
|
-
const { entitySetName, id, relationshipName, relatedEntitySetName, relatedId, } = AssociateInput.parse(args);
|
|
84
|
-
await client.associate(entitySetName, id, relationshipName, relatedEntitySetName, relatedId);
|
|
85
|
-
return formatData(`Associated ${entitySetName}(${id}) with ${relatedEntitySetName}(${relatedId}) via ${relationshipName}`, { message: "Records associated successfully" }, ["Use dataverse_get_relationships to verify relationship names"]);
|
|
86
|
-
}
|
|
87
|
-
case "dataverse_disassociate": {
|
|
88
|
-
const { entitySetName, id, relationshipName, relatedId, relatedEntitySetName, } = DisassociateInput.parse(args);
|
|
89
|
-
await client.disassociate(entitySetName, id, relationshipName, relatedId, relatedEntitySetName);
|
|
90
|
-
return formatData(`Disassociated records via ${relationshipName}`, { message: "Records disassociated successfully" }, ["This removes the N:N link but does not delete records"]);
|
|
91
|
-
}
|
|
92
|
-
default:
|
|
93
|
-
throw new Error(`Unknown relation tool: ${name}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=relations.tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relations.tools.js","sourceRoot":"","sources":["../../src/tools/relations.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,4kBAA4kB;QAC9kB,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACjC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACzD,gBAAgB,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,oBAAoB,EAAE;oBACpB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yBAAyB;iBACvC;gBACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAClE;YACD,QAAQ,EAAE;gBACR,eAAe;gBACf,IAAI;gBACJ,kBAAkB;gBAClB,sBAAsB;gBACtB,WAAW;aACZ;SACF;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,sjBAAsjB;QACxjB,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACjC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtB,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACpC,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,oBAAoB,EAAE;oBACpB,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4EAA4E;iBAC/E;aACF;YACD,QAAQ,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC;SACtD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,iBAAiB;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,gBAAgB,EAAE,oBAAoB;IACtC,oBAAoB,EAAE,iBAAiB;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,aAAa,EAAE,iBAAiB;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,gBAAgB,EAAE,oBAAoB;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,oBAAoB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,IAAa,EACb,MAAuB;IAEvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,EACJ,aAAa,EACb,EAAE,EACF,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,GACV,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,MAAM,CAAC,SAAS,CACpB,aAAa,EACb,EAAE,EACF,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,CACV,CAAC;YACF,OAAO,UAAU,CACf,cAAc,aAAa,IAAI,EAAE,UAAU,oBAAoB,IAAI,SAAS,SAAS,gBAAgB,EAAE,EACvG,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAC9C,CAAC,8DAA8D,CAAC,CACjE,CAAC;QACJ,CAAC;QACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,EACJ,aAAa,EACb,EAAE,EACF,gBAAgB,EAChB,SAAS,EACT,oBAAoB,GACrB,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,MAAM,CAAC,YAAY,CACvB,aAAa,EACb,EAAE,EACF,gBAAgB,EAChB,SAAS,EACT,oBAAoB,CACrB,CAAC;YACF,OAAO,UAAU,CACf,6BAA6B,gBAAgB,EAAE,EAC/C,EAAE,OAAO,EAAE,oCAAoC,EAAE,EACjD,CAAC,uDAAuD,CAAC,CAC1D,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
|
|
2
|
-
import type { ToolDefinition, ToolResult } from "./tool-registry.js";
|
|
3
|
-
export declare const routerTools: ToolDefinition[];
|
|
4
|
-
export declare function handleRouterTool(name: string, args: unknown, _client: DataverseAdvancedClient): Promise<ToolResult>;
|
|
5
|
-
//# sourceMappingURL=router.tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.tools.d.ts","sourceRoot":"","sources":["../../src/tools/router.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA+MrE,eAAO,MAAM,WAAW,EAAE,cAAc,EAyCvC,CAAC;AAIF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
|