salesforce-metadata-mcp 2.2.0 → 2.4.0
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/CHANGELOG.md +104 -0
- package/README.md +113 -3
- package/dist/index.js +4 -4
- package/dist/schemas/index.js +382 -5
- package/dist/services/salesforce.js +1025 -0
- package/dist/tools/audit.js +96 -0
- package/dist/tools/data.js +33 -2
- package/dist/tools/deployment.js +22 -2
- package/dist/tools/einstein.js +79 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/integrations.js +39 -2
- package/dist/tools/omnichannel.js +279 -0
- package/dist/tools/omnistudio.js +280 -0
- package/dist/tools/ui.js +32 -2
- package/package.json +26 -3
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateFlexCardSchema, UpdateFlexCardSchema, ActivateFlexCardSchema, GetFlexCardSchema,
|
|
3
|
+
CreateOmniScriptSchema, UpdateOmniScriptSchema, ActivateOmniScriptSchema, GetOmniScriptSchema,
|
|
4
|
+
CreateDataRaptorSchema, GetDataRaptorSchema,
|
|
5
|
+
CreateIntegrationProcedureSchema, UpdateIntegrationProcedureSchema,
|
|
6
|
+
GetIntegrationProcedureSchema, ActivateIntegrationProcedureSchema,
|
|
7
|
+
CreateCalculationMatrixSchema, CreateCalculationProcedureSchema,
|
|
8
|
+
} from "../schemas/index.js";
|
|
9
|
+
import {
|
|
10
|
+
getAuth,
|
|
11
|
+
createFlexCard, updateFlexCard, activateFlexCard, getFlexCard,
|
|
12
|
+
createOmniScript, updateOmniScript, activateOmniScript, getOmniScript,
|
|
13
|
+
createDataRaptor, getDataRaptor,
|
|
14
|
+
createIntegrationProcedure, updateIntegrationProcedure, activateIntegrationProcedure, getIntegrationProcedure,
|
|
15
|
+
createCalculationMatrix, createCalculationProcedure,
|
|
16
|
+
} from "../services/salesforce.js";
|
|
17
|
+
import { resultContent } from "./utils.js";
|
|
18
|
+
|
|
19
|
+
export function registerOmniStudioTools(server) {
|
|
20
|
+
// ─── FLEXCARDS ────────────────────────────────────────────────────────────
|
|
21
|
+
server.registerTool("sf_create_flexcard", {
|
|
22
|
+
title: "Create OmniStudio FlexCard",
|
|
23
|
+
description: `Creates an OmniStudio FlexCard (OmniUiCard metadata type). FlexCards display contextual data on Lightning pages and Experience Cloud sites.
|
|
24
|
+
|
|
25
|
+
A FlexCard defines:
|
|
26
|
+
- A data source (SOQL query, DataRaptor, Integration Procedure, Apex, or None)
|
|
27
|
+
- Fields to display from the data source
|
|
28
|
+
- Actions the user can take (navigate, launch OmniScript, open URL, start Flow)
|
|
29
|
+
- States (card variations based on data conditions)
|
|
30
|
+
|
|
31
|
+
The card is created in inactive state. Use sf_activate_flexcard to activate it after creation.
|
|
32
|
+
|
|
33
|
+
dataSourceType options:
|
|
34
|
+
- SOQL: provide a dataSourceName with a SOQL query string
|
|
35
|
+
- DataRaptor: provide the DataRaptor interface name
|
|
36
|
+
- IntegrationProcedure: provide the Integration Procedure key (Type_SubType)
|
|
37
|
+
- Apex: provide the Apex class name
|
|
38
|
+
- None: no data source (static card)`,
|
|
39
|
+
inputSchema: CreateFlexCardSchema,
|
|
40
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
41
|
+
}, async (params) => {
|
|
42
|
+
const auth = await getAuth();
|
|
43
|
+
const result = await createFlexCard(auth, params);
|
|
44
|
+
return resultContent(result);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
server.registerTool("sf_update_flexcard", {
|
|
48
|
+
title: "Update OmniStudio FlexCard",
|
|
49
|
+
description: `Updates an existing OmniStudio FlexCard (OmniUiCard). Reads the current definition, merges the provided changes, and redeploys.
|
|
50
|
+
|
|
51
|
+
Provide only the fields you want to change. The card will be deactivated automatically if active — use sf_activate_flexcard to reactivate after the update.
|
|
52
|
+
|
|
53
|
+
All fields arrays (fields, actions, states) are replaced entirely if provided.`,
|
|
54
|
+
inputSchema: UpdateFlexCardSchema,
|
|
55
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
56
|
+
}, async (params) => {
|
|
57
|
+
const auth = await getAuth();
|
|
58
|
+
const result = await updateFlexCard(auth, params);
|
|
59
|
+
return resultContent(result);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
server.registerTool("sf_activate_flexcard", {
|
|
63
|
+
title: "Activate OmniStudio FlexCard",
|
|
64
|
+
description: `Activates an OmniStudio FlexCard so it is visible on Lightning pages and Experience Cloud sites.
|
|
65
|
+
|
|
66
|
+
Reads the existing FlexCard definition and redeploys it with isActive=true. The card must already exist (created with sf_create_flexcard).`,
|
|
67
|
+
inputSchema: ActivateFlexCardSchema,
|
|
68
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
69
|
+
}, async (params) => {
|
|
70
|
+
const auth = await getAuth();
|
|
71
|
+
const result = await activateFlexCard(auth, params);
|
|
72
|
+
return resultContent(result);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
server.registerTool("sf_get_flexcard", {
|
|
76
|
+
title: "Get OmniStudio FlexCard",
|
|
77
|
+
description: `Retrieves the configuration of an OmniStudio FlexCard including its data source, fields, actions, states, and activation status.`,
|
|
78
|
+
inputSchema: GetFlexCardSchema,
|
|
79
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
80
|
+
}, async (params) => {
|
|
81
|
+
const auth = await getAuth();
|
|
82
|
+
const result = await getFlexCard(auth, params);
|
|
83
|
+
return resultContent(result);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// ─── OMNISCRIPTS ──────────────────────────────────────────────────────────
|
|
87
|
+
server.registerTool("sf_create_omniscript", {
|
|
88
|
+
title: "Create OmniStudio OmniScript",
|
|
89
|
+
description: `Creates an OmniStudio OmniScript — a guided interaction flow for collecting data or performing processes.
|
|
90
|
+
|
|
91
|
+
OmniScripts are identified by Type + SubType + Language (e.g. AccountOpening / Personal / English). The fullName becomes Type_SubType_Language.
|
|
92
|
+
|
|
93
|
+
The script is created inactive with the specified elements. Complex element configuration (branching logic, custom LWC overrides, remote actions) should be finalized in the OmniScript Designer after creation.
|
|
94
|
+
|
|
95
|
+
isLwcEnabled: true deploys the script as a Lightning Web Component (recommended for performance).
|
|
96
|
+
isOmniScriptEmbeddable: true allows embedding this script inside other OmniScripts.
|
|
97
|
+
|
|
98
|
+
Use sf_activate_omniscript to activate after creation.`,
|
|
99
|
+
inputSchema: CreateOmniScriptSchema,
|
|
100
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
101
|
+
}, async (params) => {
|
|
102
|
+
const auth = await getAuth();
|
|
103
|
+
const result = await createOmniScript(auth, params);
|
|
104
|
+
return resultContent(result);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
server.registerTool("sf_update_omniscript", {
|
|
108
|
+
title: "Update OmniStudio OmniScript",
|
|
109
|
+
description: `Updates an existing OmniScript's metadata properties (description, LWC mode, embeddable flag). Identified by Type + SubType + Language.
|
|
110
|
+
|
|
111
|
+
Note: OmniScript element/step editing is best done in the OmniScript Designer. This tool updates the container metadata only. The script will be deactivated if currently active — reactivate with sf_activate_omniscript.`,
|
|
112
|
+
inputSchema: UpdateOmniScriptSchema,
|
|
113
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
114
|
+
}, async (params) => {
|
|
115
|
+
const auth = await getAuth();
|
|
116
|
+
const result = await updateOmniScript(auth, params);
|
|
117
|
+
return resultContent(result);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
server.registerTool("sf_activate_omniscript", {
|
|
121
|
+
title: "Activate OmniStudio OmniScript",
|
|
122
|
+
description: `Activates an OmniScript so it can be launched from FlexCards, Experience Cloud, or standalone pages. Identified by Type + SubType + Language.`,
|
|
123
|
+
inputSchema: ActivateOmniScriptSchema,
|
|
124
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
125
|
+
}, async (params) => {
|
|
126
|
+
const auth = await getAuth();
|
|
127
|
+
const result = await activateOmniScript(auth, params);
|
|
128
|
+
return resultContent(result);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
server.registerTool("sf_get_omniscript", {
|
|
132
|
+
title: "Get OmniStudio OmniScript",
|
|
133
|
+
description: `Retrieves the configuration of an OmniScript including its elements, activation status, and LWC settings. Identified by Type + SubType + Language.`,
|
|
134
|
+
inputSchema: GetOmniScriptSchema,
|
|
135
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
136
|
+
}, async (params) => {
|
|
137
|
+
const auth = await getAuth();
|
|
138
|
+
const result = await getOmniScript(auth, params);
|
|
139
|
+
return resultContent(result);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// ─── DATARAPTORS ─────────────────────────────────────────────────────────
|
|
143
|
+
server.registerTool("sf_create_dataraptor", {
|
|
144
|
+
title: "Create OmniStudio DataRaptor",
|
|
145
|
+
description: `Creates a DataRaptor interface for OmniStudio data transformation. DataRaptors handle Extract (read from Salesforce), Transform (convert data formats), and Load (write to Salesforce) operations.
|
|
146
|
+
|
|
147
|
+
interfaceType:
|
|
148
|
+
- Extract: reads data from Salesforce objects using SOQL-like field mappings
|
|
149
|
+
- Transform: converts/maps data between formats (JSON path transformations)
|
|
150
|
+
- Load: writes data to Salesforce objects
|
|
151
|
+
|
|
152
|
+
Each field mapping defines:
|
|
153
|
+
- sourceField: source JSON path or Salesforce field API name
|
|
154
|
+
- targetField: target JSON path or Salesforce field API name
|
|
155
|
+
- dataType: data type (Text, Number, Boolean, Date, etc.)
|
|
156
|
+
- formula: optional transformation formula
|
|
157
|
+
|
|
158
|
+
filterCriteria: SOQL WHERE clause for Extract DataRaptors (e.g. "Id = ':AccountId'")`,
|
|
159
|
+
inputSchema: CreateDataRaptorSchema,
|
|
160
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
161
|
+
}, async (params) => {
|
|
162
|
+
const auth = await getAuth();
|
|
163
|
+
const result = await createDataRaptor(auth, params);
|
|
164
|
+
return resultContent(result);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
server.registerTool("sf_get_dataraptor", {
|
|
168
|
+
title: "Get OmniStudio DataRaptor",
|
|
169
|
+
description: `Retrieves the configuration of a DataRaptor interface including its type, field mappings, and filter criteria.`,
|
|
170
|
+
inputSchema: GetDataRaptorSchema,
|
|
171
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
172
|
+
}, async (params) => {
|
|
173
|
+
const auth = await getAuth();
|
|
174
|
+
const result = await getDataRaptor(auth, params);
|
|
175
|
+
return resultContent(result);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// ─── INTEGRATION PROCEDURES ───────────────────────────────────────────────
|
|
179
|
+
server.registerTool("sf_create_integration_procedure", {
|
|
180
|
+
title: "Create OmniStudio Integration Procedure",
|
|
181
|
+
description: `Creates an OmniStudio Integration Procedure — a server-side process that orchestrates data integration without UI. Integration Procedures run in Apex context and can be invoked from OmniScripts, FlexCards, or APIs.
|
|
182
|
+
|
|
183
|
+
Integration Procedures use the OmniScript metadata type with omniProcessType=IntegrationProcedure. The fullName is ProcedureName_SubType.
|
|
184
|
+
|
|
185
|
+
Element types:
|
|
186
|
+
- DataRaptor: call a DataRaptor for Salesforce CRUD
|
|
187
|
+
- HTTPAction: call an external REST/SOAP API
|
|
188
|
+
- Response: return data to the caller
|
|
189
|
+
- Loop: iterate over a collection
|
|
190
|
+
- Conditional: branch based on conditions
|
|
191
|
+
- SetValues: set variables
|
|
192
|
+
- ExceptionBlock: handle errors
|
|
193
|
+
- Matrix: call a Calculation Matrix
|
|
194
|
+
- OmniScript: call a nested OmniScript
|
|
195
|
+
- Aggregate: combine multiple data sources
|
|
196
|
+
|
|
197
|
+
Set isActive: true to activate immediately after creation.`,
|
|
198
|
+
inputSchema: CreateIntegrationProcedureSchema,
|
|
199
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
200
|
+
}, async (params) => {
|
|
201
|
+
const auth = await getAuth();
|
|
202
|
+
const result = await createIntegrationProcedure(auth, params);
|
|
203
|
+
return resultContent(result);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
server.registerTool("sf_update_integration_procedure", {
|
|
207
|
+
title: "Update OmniStudio Integration Procedure",
|
|
208
|
+
description: `Updates an existing Integration Procedure's metadata (description, active status). Identified by procedureName + subType (fullName = procedureName_subType).
|
|
209
|
+
|
|
210
|
+
For element/step changes, use the OmniStudio Integration Procedure Designer. Set isActive: false to deactivate, then make changes, then sf_activate_integration_procedure.`,
|
|
211
|
+
inputSchema: UpdateIntegrationProcedureSchema,
|
|
212
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
213
|
+
}, async (params) => {
|
|
214
|
+
const auth = await getAuth();
|
|
215
|
+
const result = await updateIntegrationProcedure(auth, params);
|
|
216
|
+
return resultContent(result);
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
server.registerTool("sf_get_integration_procedure", {
|
|
220
|
+
title: "Get OmniStudio Integration Procedure",
|
|
221
|
+
description: `Retrieves the configuration of an Integration Procedure including its elements and activation status. Identified by procedureName + subType.`,
|
|
222
|
+
inputSchema: GetIntegrationProcedureSchema,
|
|
223
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
224
|
+
}, async (params) => {
|
|
225
|
+
const auth = await getAuth();
|
|
226
|
+
const result = await getIntegrationProcedure(auth, params);
|
|
227
|
+
return resultContent(result);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
server.registerTool("sf_activate_integration_procedure", {
|
|
231
|
+
title: "Activate OmniStudio Integration Procedure",
|
|
232
|
+
description: `Activates an Integration Procedure so it can be invoked from OmniScripts, FlexCards, and APIs. Identified by procedureName + subType.`,
|
|
233
|
+
inputSchema: ActivateIntegrationProcedureSchema,
|
|
234
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
235
|
+
}, async (params) => {
|
|
236
|
+
const auth = await getAuth();
|
|
237
|
+
const result = await activateIntegrationProcedure(auth, params);
|
|
238
|
+
return resultContent(result);
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
// ─── CALCULATION MATRIX & PROCEDURE ──────────────────────────────────────
|
|
242
|
+
server.registerTool("sf_create_calculation_matrix", {
|
|
243
|
+
title: "Create OmniStudio Calculation Matrix",
|
|
244
|
+
description: `Creates a Calculation Matrix for rule-based lookups and calculations. Matrices map input combinations to output values — useful for pricing, eligibility, scoring, and decision tables.
|
|
245
|
+
|
|
246
|
+
inputVariables: list of input variable names (columns used for lookups)
|
|
247
|
+
outputVariables: list of output variable names (columns returned)
|
|
248
|
+
rows: array of { inputs: {var: value}, outputs: {var: value} } defining the lookup table
|
|
249
|
+
|
|
250
|
+
Example: a pricing matrix with inputs [ProductType, Region] and outputs [Price, Discount].`,
|
|
251
|
+
inputSchema: CreateCalculationMatrixSchema,
|
|
252
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
253
|
+
}, async (params) => {
|
|
254
|
+
const auth = await getAuth();
|
|
255
|
+
const result = await createCalculationMatrix(auth, params);
|
|
256
|
+
return resultContent(result);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
server.registerTool("sf_create_calculation_procedure", {
|
|
260
|
+
title: "Create OmniStudio Calculation Procedure",
|
|
261
|
+
description: `Creates a Calculation Procedure that orchestrates multi-step calculations using Calculation Matrices, formulas, and logic steps.
|
|
262
|
+
|
|
263
|
+
steps array — each step has:
|
|
264
|
+
- name: step identifier
|
|
265
|
+
- type: MatrixLookup (call a matrix), Formula (expression), Condition (branch), Assignment (set variable)
|
|
266
|
+
- matrixName: required for MatrixLookup steps
|
|
267
|
+
- expression: required for Formula/Condition steps
|
|
268
|
+
- inputMap: maps procedure variables to step inputs
|
|
269
|
+
- outputMap: maps step outputs back to procedure variables
|
|
270
|
+
|
|
271
|
+
Use Calculation Procedures to build complex pricing engines, eligibility calculators, or multi-factor scoring systems.`,
|
|
272
|
+
inputSchema: CreateCalculationProcedureSchema,
|
|
273
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
274
|
+
}, async (params) => {
|
|
275
|
+
const auth = await getAuth();
|
|
276
|
+
const result = await createCalculationProcedure(auth, params);
|
|
277
|
+
return resultContent(result);
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=omnistudio.js.map
|
package/dist/tools/ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CreateLightningAppSchema, CreateTabSchema, CreateCompactLayoutSchema, CreateListViewSchema, CreateEmailTemplateSchema, CreateStaticResourceSchema, CreateCustomNotificationTypeSchema, CreateReportTypeSchema, CreateDashboardSchema, UpdatePageLayoutSchema, AssignPageLayoutSchema, CreateLightningRecordPageSchema, CreateLightningHomePageSchema, UpdateLightningPageSchema, AssignLightningPageSchema, AssignCompactLayoutSchema, } from "../schemas/index.js";
|
|
2
|
-
import { getAuth, createLightningApp, createTab, createCompactLayout, createListView, createEmailTemplate, createCustomNotificationType, createReportType, updatePageLayout, assignPageLayout, createFlexiPage, updateFlexiPage, assignFlexiPage, assignCompactLayout, } from "../services/salesforce.js";
|
|
1
|
+
import { CreateLightningAppSchema, CreateTabSchema, CreateCompactLayoutSchema, CreateListViewSchema, CreateEmailTemplateSchema, CreateStaticResourceSchema, CreateCustomNotificationTypeSchema, CreateReportTypeSchema, CreateDashboardSchema, UpdatePageLayoutSchema, AssignPageLayoutSchema, CreateLightningRecordPageSchema, CreateLightningHomePageSchema, UpdateLightningPageSchema, AssignLightningPageSchema, AssignCompactLayoutSchema, CreateLightningAppPageSchema, CreateLetterheadSchema, } from "../schemas/index.js";
|
|
2
|
+
import { getAuth, createLightningApp, createTab, createCompactLayout, createListView, createEmailTemplate, createCustomNotificationType, createReportType, updatePageLayout, assignPageLayout, createFlexiPage, updateFlexiPage, assignFlexiPage, assignCompactLayout, createLightningAppPage, createLetterhead, } from "../services/salesforce.js";
|
|
3
3
|
import { buildStaticResourceZip, deployZip, pollDeployStatus, } from "../services/deployment.js";
|
|
4
4
|
import { API_VERSION } from "../services/salesforce.js";
|
|
5
5
|
import { resultContent } from "./utils.js";
|
|
@@ -261,5 +261,35 @@ export function registerUiTools(server) {
|
|
|
261
261
|
const result = await assignCompactLayout(auth, params);
|
|
262
262
|
return resultContent(result);
|
|
263
263
|
});
|
|
264
|
+
server.registerTool("sf_create_lightning_app_page", {
|
|
265
|
+
title: "Create Lightning App Page (FlexiPage)",
|
|
266
|
+
description: `Creates a Lightning App Page (FlexiPage of type AppPage) for use in Lightning Apps. App Pages appear as tabs in a Lightning App and can display dashboards, lists, and custom components.
|
|
267
|
+
|
|
268
|
+
template options: AppDefaultTemplate (single region), OneRegion, TwoColumn_LeftSidebar, TwoColumn_RightSidebar, ThreeColumn
|
|
269
|
+
|
|
270
|
+
After creating, assign the page to a Lightning App via App Manager in Setup, or use the Lightning App Builder to activate it.`,
|
|
271
|
+
inputSchema: CreateLightningAppPageSchema,
|
|
272
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
273
|
+
}, async (params) => {
|
|
274
|
+
const auth = await getAuth();
|
|
275
|
+
const result = await createLightningAppPage(auth, params);
|
|
276
|
+
return resultContent(result);
|
|
277
|
+
});
|
|
278
|
+
server.registerTool("sf_create_letterhead", {
|
|
279
|
+
title: "Create Email Letterhead",
|
|
280
|
+
description: `Creates an email letterhead (Letterhead metadata type) for use with Classic email templates. Letterheads define the visual branding of email templates — header/footer colors, fonts, separator lines, and logo placement.
|
|
281
|
+
|
|
282
|
+
After creating a letterhead, reference it by API name when creating email templates (sf_create_email_template with htmlValue that includes the letterhead).
|
|
283
|
+
|
|
284
|
+
headerColor/footerColor/bodyColor: hex color values (e.g. '#0070D2')
|
|
285
|
+
fontName: font face, e.g. 'Arial', 'Helvetica', 'Times New Roman'
|
|
286
|
+
footerText: optional static text shown in the footer`,
|
|
287
|
+
inputSchema: CreateLetterheadSchema,
|
|
288
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
289
|
+
}, async (params) => {
|
|
290
|
+
const auth = await getAuth();
|
|
291
|
+
const result = await createLetterhead(auth, params);
|
|
292
|
+
return resultContent(result);
|
|
293
|
+
});
|
|
264
294
|
}
|
|
265
295
|
//# sourceMappingURL=ui.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "salesforce-metadata-mcp",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "The most comprehensive Salesforce MCP server:
|
|
3
|
+
"version": "2.4.0",
|
|
4
|
+
"description": "The most comprehensive Salesforce MCP server: 155+ tools covering custom objects, flows, Apex, LWC, page layouts, permissions, profiles, users, reports, dashboards, Experience Cloud, OmniStudio, OmniChannel, Agentforce, Einstein AI, audit trail, and more — everything a Salesforce admin, advanced admin and developer needs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
7
7
|
"type": "module",
|
|
@@ -58,7 +58,30 @@
|
|
|
58
58
|
"bulk-api",
|
|
59
59
|
"visualforce",
|
|
60
60
|
"aura",
|
|
61
|
-
"formula-fields"
|
|
61
|
+
"formula-fields",
|
|
62
|
+
"omnistudio",
|
|
63
|
+
"omniscript",
|
|
64
|
+
"flexcard",
|
|
65
|
+
"dataraptor",
|
|
66
|
+
"integration-procedure",
|
|
67
|
+
"omnichannel",
|
|
68
|
+
"service-cloud",
|
|
69
|
+
"field-service",
|
|
70
|
+
"messaging",
|
|
71
|
+
"live-chat",
|
|
72
|
+
"skill-routing",
|
|
73
|
+
"presence",
|
|
74
|
+
"einstein",
|
|
75
|
+
"next-best-action",
|
|
76
|
+
"audit-trail",
|
|
77
|
+
"login-history",
|
|
78
|
+
"lightning-page",
|
|
79
|
+
"flexipage",
|
|
80
|
+
"app-builder",
|
|
81
|
+
"letterhead",
|
|
82
|
+
"soql",
|
|
83
|
+
"github-actions",
|
|
84
|
+
"ci-cd"
|
|
62
85
|
],
|
|
63
86
|
"dependencies": {
|
|
64
87
|
"@modelcontextprotocol/sdk": "1.29.0",
|