salesforce-metadata-mcp 2.1.3 → 2.2.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/AGENTFORCE.md CHANGED
@@ -167,6 +167,124 @@ You must deactivate an agent before modifying its topics, actions, or planner:
167
167
 
168
168
  After making changes, re-activate with `sf_activate_agent`.
169
169
 
170
+ > **Note:** `sf_update_agent_topic` handles deactivate/reactivate automatically.
171
+
172
+ ---
173
+
174
+ ## Listing and Inspecting Agents
175
+
176
+ ### List all agents (`sf_list_agents`)
177
+
178
+ No parameters required. Returns all agents with status:
179
+
180
+ ```
181
+ sf_list_agents → { agents: [{ apiName, label, status, lastModifiedDate }] }
182
+ ```
183
+
184
+ ### Get full agent config (`sf_get_agent`)
185
+
186
+ ```json
187
+ { "agentApiName": "CRM_Record_Creator" }
188
+ ```
189
+
190
+ Returns activation status, all topics (GenAiPlugin), actions (GenAiFunction), and planner bundles (GenAiPlannerBundle) in the org.
191
+
192
+ ---
193
+
194
+ ## Updating Topics and Actions
195
+
196
+ ### Update a topic in-place (`sf_update_agent_topic`)
197
+
198
+ Automatically deactivates the agent, updates the GenAiPlugin, then reactivates:
199
+
200
+ ```json
201
+ {
202
+ "agentApiName": "CRM_Record_Creator",
203
+ "topicName": "Account_Management",
204
+ "label": "Account Management",
205
+ "description": "Handle requests to create, update, or find Account records",
206
+ "scope": "Creating, updating, or looking up company/account information",
207
+ "instructions": ["Ask for company name", "Collect optional fields", "Call the appropriate action", "Confirm success"],
208
+ "actions": ["Create_Account", "Update_Account"],
209
+ "escalationEnabled": false
210
+ }
211
+ ```
212
+
213
+ ### Update an action (`sf_update_agent_action`)
214
+
215
+ Redeploys the GenAiFunction bundle with new schema files:
216
+
217
+ ```json
218
+ {
219
+ "actionName": "Create_Account",
220
+ "label": "Create Account",
221
+ "description": "Creates a new Account record with company name, industry, phone, and website",
222
+ "invocationTargetType": "Flow",
223
+ "flowApiName": "Create_Account_Record_v2",
224
+ "inputs": [
225
+ { "name": "AccountName", "label": "Account Name", "type": "Text", "required": true },
226
+ { "name": "AnnualRevenue", "label": "Annual Revenue", "type": "Currency", "required": false }
227
+ ],
228
+ "outputs": [
229
+ { "name": "AccountId", "label": "Account ID", "type": "Text" }
230
+ ]
231
+ }
232
+ ```
233
+
234
+ ### Apex-backed actions
235
+
236
+ Set `invocationTargetType: "ApexClass"` and provide `apexClassName` instead of `flowApiName`:
237
+
238
+ ```json
239
+ {
240
+ "actionName": "Search_Knowledge",
241
+ "label": "Search Knowledge Base",
242
+ "description": "Searches the knowledge base for articles matching the query",
243
+ "invocationTargetType": "ApexClass",
244
+ "apexClassName": "KnowledgeSearchAction",
245
+ "inputs": [{ "name": "searchQuery", "label": "Search Query", "type": "Text", "required": true }],
246
+ "outputs": [{ "name": "articleBody", "label": "Article Body", "type": "TextArea" }]
247
+ }
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Deleting Agents (`sf_delete_agent`)
253
+
254
+ ```json
255
+ {
256
+ "agentApiName": "CRM_Record_Creator",
257
+ "deleteTopics": true,
258
+ "deleteActions": true
259
+ }
260
+ ```
261
+
262
+ - `deleteTopics: true` — also deletes the agent's GenAiPlugin topics (discovered via the planner bundle)
263
+ - `deleteActions: true` — also deletes the GenAiFunction actions referenced by those topics
264
+ - Without flags, only the Bot and GenAiPlannerBundle are deleted
265
+
266
+ **WARNING:** Deleted topics and actions affect all agents that reference them.
267
+
268
+ ---
269
+
270
+ ## Testing Agents (`sf_test_agent`)
271
+
272
+ Send a test message without opening the Salesforce UI:
273
+
274
+ ```json
275
+ {
276
+ "agentApiName": "CRM_Record_Creator",
277
+ "message": "Create an account called Acme Corp in the Technology industry"
278
+ }
279
+ ```
280
+
281
+ Returns:
282
+ - `response` — the agent's reply text
283
+ - `sessionId` — the session created (for follow-up messages)
284
+ - `success` — whether the full API round-trip succeeded
285
+
286
+ The agent must be **Active** before testing.
287
+
170
288
  ---
171
289
 
172
290
  ## End-to-End Example
@@ -210,7 +328,11 @@ If the agent routes correctly but never invokes actions (agent says "I can't do
210
328
 
211
329
  2. **Check type mapping** — If the action is invoked but the flow fails with "field in incorrect format", the `type` in your action inputs doesn't match the flow variable type. A Currency flow variable needs `"type": "Currency"`, not `"type": "Text"`.
212
330
 
213
- 3. **Check ConversationDefinitionEventLog**Run SOQL:
331
+ 3. **Use `sf_get_agent_logs`**Queries ConversationDefinitionEventLog automatically:
332
+ ```json
333
+ { "agentApiName": "CRM_Record_Creator", "limit": 50, "hoursBack": 2 }
334
+ ```
335
+ Or run SOQL manually:
214
336
  ```sql
215
337
  SELECT EventLabel, EventTarget, EventDetails
216
338
  FROM ConversationDefinitionEventLog
@@ -221,3 +343,5 @@ If the agent routes correctly but never invokes actions (agent says "I can't do
221
343
  Look for `TopicClassificationSuccess` (routing worked) vs `ActionExecuted` (action ran).
222
344
 
223
345
  4. **Verify planner exists** — If `TopicClassificationSuccess` never appears, the GenAiPlannerBundle may be missing. Use `sf_create_agent_planner` to create it.
346
+
347
+ 5. **Use `sf_test_agent`** — Send a test message programmatically and inspect the response without opening the Salesforce UI.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,130 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.2.0] - 2026-05-28
4
+
5
+ ### New Tools — 47 Additions Across 10 Categories
6
+
7
+ #### Objects & Fields (4 new)
8
+ - `sf_update_custom_object` — Update label, plural label, description, and feature toggles on an existing custom object
9
+ - `sf_update_custom_field` — Update label, description, help text, required, unique, or default value on an existing field
10
+ - `sf_create_relationship_field` — Create Lookup or Master-Detail relationship fields with delete constraint control
11
+ - `sf_create_formula_field` — Create formula fields with Text, Number, Currency, Date, DateTime, Checkbox, or Percent return types
12
+
13
+ #### Security & Access (8 new)
14
+ - `sf_assign_permission_set` — Assign a Permission Set to a user by username or userId
15
+ - `sf_create_permission_set_group` — Create a Permission Set Group combining multiple Permission Sets
16
+ - `sf_update_permission_set` — Add or modify object and field permissions on an existing Permission Set
17
+ - `sf_create_muting_permission_set` — Create a Muting Permission Set to suppress permissions within a Permission Set Group
18
+ - `sf_set_field_level_security` — Set read/edit field-level security across multiple Profiles and Permission Sets in one call
19
+ - `sf_set_org_wide_defaults` — Set the org-wide default sharing model (Private, Read, ReadWrite) for any object
20
+ - `sf_clone_profile` — Clone an existing Profile under a new name, inheriting all permissions
21
+ - `sf_update_profile` — Update object permissions, field security, tab visibility, and app visibility on a Profile
22
+
23
+ #### UI & Page Layouts (7 new)
24
+ - `sf_update_page_layout` — Read and update an existing Page Layout (rename/label changes)
25
+ - `sf_assign_page_layout` — Assign a Page Layout to one or more Profiles for a given object
26
+ - `sf_create_lightning_record_page` — Create a Lightning Record Page (FlexiPage) with regions and components
27
+ - `sf_create_lightning_home_page` — Create a Lightning Home Page (FlexiPage) with regions and components
28
+ - `sf_update_lightning_page` — Update an existing Lightning Page label
29
+ - `sf_assign_lightning_page` — Assign a Lightning Page to an Experience Cloud site via Connect API
30
+ - `sf_assign_compact_layout` — Set the default compact layout assignment for an object
31
+
32
+ #### Automation (2 new)
33
+ - `sf_activate_flow` — Activate the latest version of a Flow via the Tooling API
34
+ - `sf_create_quick_action` — Create Quick Actions (Create, Update, LogACall, SendEmail, Flow, Visualforce) for objects or globally
35
+
36
+ #### Apex, Visualforce & Aura (5 new)
37
+ - `sf_update_apex_class` — Redeploy an Apex class with updated source code
38
+ - `sf_get_apex_class` — Retrieve Apex class source code and metadata via Tooling API
39
+ - `sf_get_code_coverage` — Get Apex code coverage percentages per class from the last test run
40
+ - `sf_create_visualforce_page` — Deploy a Visualforce page via zip-based Metadata API
41
+ - `sf_create_aura_component` — Deploy an Aura component bundle (markup, controller, helper, CSS)
42
+
43
+ #### Reports & Dashboards (4 new)
44
+ - `sf_create_report` — Create Salesforce Reports (Tabular, Summary, Matrix, Joined) with filters and columns
45
+ - `sf_update_dashboard` — Update title or description on an existing Dashboard
46
+ - `sf_create_report_folder` — Create Report or Dashboard folders with access control
47
+ - `sf_share_report_folder` — Share a Report or Dashboard folder with users, roles, groups, or territories
48
+
49
+ #### Users & Data (8 new)
50
+ - `sf_create_user` — Create a new Salesforce user with profile, role, and locale settings
51
+ - `sf_update_user` — Update user properties (name, email, title, department, active status)
52
+ - `sf_assign_queue_member` — Add a user to an existing Queue
53
+ - `sf_create_public_group` — Create a Public Group for sharing rules or email distribution
54
+ - `sf_query_records` — Execute SOQL queries to read records (full SOQL or structured params)
55
+ - `sf_create_record` — Create a single SObject record via REST API
56
+ - `sf_update_record` — Update an existing SObject record by ID via REST API
57
+ - `sf_bulk_import_records` — Bulk insert/upsert/update/delete records via Bulk API 2.0 with CSV data
58
+
59
+ #### Integrations (2 new)
60
+ - `sf_create_outbound_message` — Create Workflow Outbound Messages for SOAP-based external integrations
61
+ - `sf_create_auth_provider` — Create OAuth 2.0 Auth Providers for third-party identity and Named Credentials
62
+
63
+ #### Deployment & Metadata (3 new, 1 enhanced)
64
+ - `sf_validate_deployment` — Run a check-only deployment to validate metadata without making changes
65
+ - `sf_list_metadata` — List all metadata components of a given type in the org
66
+ - `sf_deploy_metadata` _(enhanced)_ — Added `testLevel` parameter (NoTestRun, RunSpecifiedTests, RunLocalTests, RunAllTestsInOrg)
67
+
68
+ #### Experience Cloud (5 new)
69
+ - `sf_publish_experience_site` — Publish an Experience Cloud site to make pending changes live
70
+ - `sf_update_experience_site` — Update site settings: description, guest user access, guest profile
71
+ - `sf_create_navigation_menu` — Create Navigation Menus with items linking to pages or external URLs
72
+ - `sf_add_experience_site_members` — Add member profiles/permission sets to an Experience Cloud site
73
+ - `sf_set_experience_site_branding` — Apply branding properties (colors, fonts, logos) via BrandingSet
74
+
75
+ ### Infrastructure
76
+ - Added `patch()` and `del()` methods to the REST client (`createClient`)
77
+ - Added `buildVFPageZip()` — builds Visualforce page deploy zip
78
+ - Added `buildAuraZip()` — builds Aura component bundle deploy zip
79
+ - API version updated to 66.0 in `sf_deploy_metadata` (was 62.0)
80
+ - Bulk API 2.0 job management: create → upload CSV → close → poll
81
+
82
+ ---
83
+
84
+ ## [2.1.4] - 2026-05-28
85
+
86
+ ### New Tools — Agentforce CRUD & Debugging
87
+
88
+ #### Read
89
+ - `sf_get_agent` — Retrieve full agent configuration from org including activation status, all topics (GenAiPlugin), actions (GenAiFunction), and planner bundles (GenAiPlannerBundle)
90
+ - `sf_list_agents` — List all Agentforce agents in the org with name, label, activation status, and last modified date
91
+
92
+ #### Update
93
+ - `sf_update_agent_topic` — Update an existing GenAiPlugin topic in-place. Automatically deactivates the agent before the update and reactivates it after. All provided fields replace existing values.
94
+ - `sf_update_agent_action` — Update an existing GenAiFunction and regenerate its LLM-facing schema files via zip deploy. All provided fields replace existing values.
95
+
96
+ #### Delete
97
+ - `sf_delete_agent` — Cleanly delete a Bot + its GenAiPlannerBundle + optionally its GenAiPlugin topics + GenAiFunction actions. Discovers related components by traversing Bot → planner → topics → actions. Deactivates first to avoid dependency errors.
98
+
99
+ #### Test & Debug
100
+ - `sf_test_agent` — Send a test message to an agent via the Einstein Agent API (bootstrap → create session → send message → return response text). Full end-to-end test without opening the Salesforce UI.
101
+ - `sf_get_agent_logs` — Query ConversationDefinitionEventLog for agent debug info. Shows TopicClassificationSuccess, ActionExecuted, and error events. Includes summary counts and structured log entries. Filter by agent name, limit, and hours-back window.
102
+
103
+ ### Enhanced Existing Tools
104
+
105
+ #### `sf_create_agent`
106
+ - Added `systemPrompt` optional param — custom system prompt injected into every conversation
107
+ - Added `openingMessage` optional param — welcome message shown when users first open the agent
108
+
109
+ #### `sf_create_agent_action` / `sf_update_agent_action`
110
+ - Added `invocationTargetType` param (`"Flow"` | `"ApexClass"`, default `"Flow"`) — support for Apex class actions in addition to AutoLaunchedFlows
111
+ - Added `apexClassName` optional param — Apex class API name for ApexClass-backed actions
112
+ - `flowApiName` is now optional (required only when `invocationTargetType` is `"Flow"`)
113
+
114
+ #### `sf_create_agent_topic` / `sf_update_agent_topic`
115
+ - Added `escalationEnabled` optional boolean — sets `canEscalate` on the GenAiPlugin (allows human agent escalation)
116
+ - Added `fallbackTopic` optional string — API name of a fallback GenAiPlugin topic
117
+
118
+ #### `sf_create_agent_planner`
119
+ - Added `dataLibraryName` optional param — API name of a Data Library (Knowledge Base) for Knowledge-grounded agents
120
+
121
+ ### New SOAP Helpers (internal)
122
+ - `readMetadataItem(type, fullName)` — SOAP readMetadata for a single component
123
+ - `listMetadataType(type)` — SOAP listMetadata for all components of a type
124
+ - `deleteMetadataItems(type, fullNames[])` — SOAP deleteMetadata for one or more components
125
+
126
+ ---
127
+
3
128
  ## [2.1.3] - 2026-05-28
4
129
 
5
130
  ### Bug Fixes — Agentforce Action Invocation
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # salesforce-metadata-mcp
2
2
 
3
- [![Version](https://img.shields.io/badge/version-2.1.1-blue.svg)](https://npmjs.com/package/salesforce-metadata-mcp)
3
+ [![Version](https://img.shields.io/badge/version-2.2.0-blue.svg)](https://npmjs.com/package/salesforce-metadata-mcp)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
5
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io)
6
6
 
7
- **The most comprehensive Salesforce metadata and development MCP server.** 60+ tools for building, configuring, and automating Salesforce orgs directly from Claude or any MCP client.
7
+ **The most comprehensive Salesforce MCP server.** 110+ tools for building, configuring, and automating Salesforce orgs directly from Claude or any MCP client — covering metadata, Apex, LWC, Agentforce agents, Experience Cloud, bulk data, users, reports, security, and more.
8
8
 
9
9
  ---
10
10
 
@@ -46,7 +46,26 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
46
46
 
47
47
  ---
48
48
 
49
- ## Tools (60+)
49
+ ## What's New in v2.2.0
50
+
51
+ 47 new tools across 10 categories:
52
+
53
+ - **Objects & Fields** — Update objects/fields, create relationship fields (Lookup/Master-Detail), formula fields
54
+ - **Security** — Assign permission sets, create PSGs, set field-level security, set OWDs, clone/update profiles
55
+ - **UI & Layouts** — Update page layouts, assign layouts to profiles, create/update/assign Lightning pages, set compact layouts
56
+ - **Automation** — Activate flows, create Quick Actions
57
+ - **Apex/VF/Aura** — Update Apex classes, get class source, get code coverage, deploy Visualforce pages, deploy Aura components
58
+ - **Reports & Dashboards** — Create reports, update dashboards, create/share report folders
59
+ - **Users & Data** — Create/update users, assign queue members, create public groups, query/create/update records, bulk import via Bulk API 2.0
60
+ - **Integrations** — Create Outbound Messages, create Auth Providers
61
+ - **Deployment** — Validate deployments (check-only), list metadata components
62
+ - **Experience Cloud** — Publish sites, update site settings, create navigation menus, add member profiles, apply branding
63
+
64
+ See [CHANGELOG.md](CHANGELOG.md) for the full release notes.
65
+
66
+ ---
67
+
68
+ ## Tools (110+)
50
69
 
51
70
  ### Objects & Fields
52
71
  | Tool | Description |
@@ -54,6 +73,10 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
54
73
  | `sf_create_custom_object` | Create a custom object with all settings |
55
74
  | `sf_create_custom_field` | Create a field on any object (all types) |
56
75
  | `sf_add_picklist_values` | Add values to existing picklist fields |
76
+ | `sf_update_custom_object` | Update label, description, or feature toggles on an existing object |
77
+ | `sf_update_custom_field` | Update label, description, help text, required, or default value on an existing field |
78
+ | `sf_create_relationship_field` | Create Lookup or Master-Detail relationship fields |
79
+ | `sf_create_formula_field` | Create formula fields with any return type |
57
80
  | `sf_create_custom_metadata_type` | Create a Custom Metadata Type (__mdt) |
58
81
  | `sf_create_custom_metadata_record` | Create records for a Custom Metadata Type |
59
82
  | `sf_create_custom_label` | Create or update Custom Labels |
@@ -69,6 +92,7 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
69
92
  | Tool | Description |
70
93
  |------|-------------|
71
94
  | `sf_create_flow` | Create any Flow type with advanced elements |
95
+ | `sf_activate_flow` | Activate the latest version of a Flow |
72
96
  | `sf_create_approval_process` | Create multi-step approval processes |
73
97
  | `sf_create_validation_rule` | Create data validation rules |
74
98
  | `sf_create_workflow_field_update` | Create workflow field update actions |
@@ -81,36 +105,57 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
81
105
  | `sf_create_duplicate_rule` | Create duplicate detection rules |
82
106
  | `sf_create_apex_email_service` | Create inbound Apex email services |
83
107
  | `sf_create_scheduled_job` | Schedule an Apex class via cron |
108
+ | `sf_create_quick_action` | Create Quick Actions for records or globally |
84
109
 
85
110
  ### Security & Access
86
111
  | Tool | Description |
87
112
  |------|-------------|
88
113
  | `sf_create_permission_set` | Create Permission Sets with all permissions |
114
+ | `sf_assign_permission_set` | Assign a Permission Set to a user |
115
+ | `sf_create_permission_set_group` | Create Permission Set Groups |
116
+ | `sf_update_permission_set` | Update object and field permissions on a Permission Set |
117
+ | `sf_create_muting_permission_set` | Create a Muting Permission Set for a group |
118
+ | `sf_set_field_level_security` | Set field read/edit access across Profiles and Permission Sets |
119
+ | `sf_set_org_wide_defaults` | Set org-wide default sharing model for an object |
120
+ | `sf_clone_profile` | Clone an existing Profile to a new name |
121
+ | `sf_update_profile` | Update object/field permissions, tabs, and app visibility on a Profile |
89
122
  | `sf_create_role` | Create roles in the role hierarchy |
90
123
  | `sf_create_queue` | Create queues with members and objects |
91
124
  | `sf_create_named_credential` | Create Named Credentials for callouts |
92
125
 
93
- ### UI & Experience
126
+ ### UI & Page Layouts
94
127
  | Tool | Description |
95
128
  |------|-------------|
96
129
  | `sf_create_lightning_app` | Create Lightning Apps with nav/utility bars |
97
130
  | `sf_create_tab` | Create Custom Tabs for objects |
98
131
  | `sf_create_compact_layout` | Create Compact Layouts (highlights panel) |
132
+ | `sf_assign_compact_layout` | Set the default compact layout for an object |
99
133
  | `sf_create_list_view` | Create List Views with filters and columns |
100
134
  | `sf_create_email_template` | Create HTML/text email templates |
101
135
  | `sf_create_static_resource` | Create Static Resources from text content |
102
136
  | `sf_create_custom_notification_type` | Create Custom Notification Types |
103
137
  | `sf_create_report_type` | Create Custom Report Types |
104
138
  | `sf_create_dashboard` | Create Dashboards with components |
105
-
106
- ### Apex Development
139
+ | `sf_update_page_layout` | Update an existing Page Layout |
140
+ | `sf_assign_page_layout` | Assign a Page Layout to Profiles |
141
+ | `sf_create_lightning_record_page` | Create a Lightning Record Page (FlexiPage) |
142
+ | `sf_create_lightning_home_page` | Create a Lightning Home Page (FlexiPage) |
143
+ | `sf_update_lightning_page` | Update an existing Lightning Page |
144
+ | `sf_assign_lightning_page` | Assign a Lightning Page to an Experience site |
145
+
146
+ ### Apex, Visualforce & Aura
107
147
  | Tool | Description |
108
148
  |------|-------------|
109
149
  | `sf_create_apex_class` | Deploy any Apex class to the org |
150
+ | `sf_update_apex_class` | Update an existing Apex class |
151
+ | `sf_get_apex_class` | Retrieve Apex class source via Tooling API |
152
+ | `sf_get_code_coverage` | Get Apex code coverage percentages |
110
153
  | `sf_create_apex_trigger` | Deploy an Apex trigger on any object |
111
154
  | `sf_create_apex_test_class` | Deploy test classes, optionally run tests |
112
155
  | `sf_run_apex_tests` | Run test classes and get pass/fail results |
113
156
  | `sf_execute_anonymous_apex` | Execute anonymous Apex and see output |
157
+ | `sf_create_visualforce_page` | Deploy a Visualforce page |
158
+ | `sf_create_aura_component` | Deploy an Aura component bundle |
114
159
 
115
160
  ### LWC Development
116
161
  | Tool | Description |
@@ -118,36 +163,75 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
118
163
  | `sf_create_lwc` | Deploy a full LWC with HTML, JS, CSS |
119
164
  | `sf_update_lwc` | Update an existing LWC component |
120
165
 
166
+ ### Reports & Dashboards
167
+ | Tool | Description |
168
+ |------|-------------|
169
+ | `sf_create_report` | Create Salesforce Reports (Tabular, Summary, Matrix, Joined) |
170
+ | `sf_update_dashboard` | Update title or description on a Dashboard |
171
+ | `sf_create_report_folder` | Create Report or Dashboard folders |
172
+ | `sf_share_report_folder` | Share report/dashboard folders with users, roles, or groups |
173
+
174
+ ### Users & Data
175
+ | Tool | Description |
176
+ |------|-------------|
177
+ | `sf_create_user` | Create a new Salesforce user |
178
+ | `sf_update_user` | Update user properties (name, email, active status) |
179
+ | `sf_assign_queue_member` | Add a user to a Queue |
180
+ | `sf_create_public_group` | Create a Public Group for sharing or email |
181
+ | `sf_query_records` | Execute SOQL queries to read records |
182
+ | `sf_create_record` | Create a single SObject record |
183
+ | `sf_update_record` | Update an existing SObject record by ID |
184
+ | `sf_bulk_import_records` | Bulk insert/upsert/update/delete via Bulk API 2.0 |
185
+
121
186
  ### Experience Cloud
122
187
  | Tool | Description |
123
188
  |------|-------------|
124
189
  | `sf_create_experience_site` | Create Experience Cloud sites |
125
190
  | `sf_create_experience_page` | Create pages within Experience sites |
191
+ | `sf_publish_experience_site` | Publish a site to make changes live |
192
+ | `sf_update_experience_site` | Update site settings (description, guest access) |
193
+ | `sf_create_navigation_menu` | Create Navigation Menus for a site |
194
+ | `sf_add_experience_site_members` | Add member profiles/permission sets to a site |
195
+ | `sf_set_experience_site_branding` | Apply branding (colors, fonts, logos) to a site |
126
196
 
127
197
  ### Agentforce
128
198
  | Tool | Description |
129
199
  |------|-------------|
130
- | `sf_create_agent` | Create Agentforce Agents |
131
- | `sf_create_agent_topic` | Create Agent Topics with instructions |
132
- | `sf_create_agent_action` | Create Agent Actions linked to Flows/Apex |
200
+ | `sf_create_agent` | Create Agentforce Agents (EinsteinCopilot/ExternalCopilot) |
201
+ | `sf_create_agent_topic` | Create Agent Topics (GenAiPlugin) |
202
+ | `sf_create_agent_action` | Create Agent Actions (GenAiFunction) linked to Flows or Apex |
203
+ | `sf_create_agent_planner` | Create GenAiPlannerBundle linking topics to agent |
204
+ | `sf_activate_agent` | Activate an agent |
205
+ | `sf_deactivate_agent` | Deactivate an agent before modifications |
206
+ | `sf_get_agent` | Get full agent configuration |
207
+ | `sf_list_agents` | List all agents in the org |
208
+ | `sf_update_agent_topic` | Update an agent topic (auto deactivate/reactivate) |
209
+ | `sf_update_agent_action` | Update an agent action and regenerate schema files |
210
+ | `sf_delete_agent` | Delete an agent and optionally its topics/actions |
211
+ | `sf_test_agent` | Send a test message and get the agent's response |
212
+ | `sf_get_agent_logs` | Query ConversationDefinitionEventLog for debug info |
133
213
 
134
214
  ### External Integrations
135
215
  | Tool | Description |
136
216
  |------|-------------|
137
217
  | `sf_create_connected_app` | Create OAuth Connected Apps |
138
- | `sf_create_external_data_source` | Create External Data Sources for Connect |
218
+ | `sf_create_external_data_source` | Create External Data Sources |
139
219
  | `sf_create_external_object` | Create External Objects (__x) |
140
220
  | `sf_create_remote_site_setting` | Whitelist external URLs for callouts |
141
221
  | `sf_create_csp_setting` | Create CSP trusted sites for LWC |
222
+ | `sf_create_outbound_message` | Create Workflow Outbound Messages |
223
+ | `sf_create_auth_provider` | Create OAuth Auth Providers |
142
224
 
143
225
  ### Change Sets & Deployment
144
226
  | Tool | Description |
145
227
  |------|-------------|
146
228
  | `sf_create_outbound_change_set` | Create Outbound Change Sets |
147
229
  | `sf_add_to_change_set` | Add components to a change set |
148
- | `sf_deploy_metadata` | Deploy metadata via Metadata API |
230
+ | `sf_deploy_metadata` | Deploy metadata (with testLevel support) |
231
+ | `sf_validate_deployment` | Validate deployment without making changes |
149
232
  | `sf_check_deploy_status` | Check deployment job status |
150
233
  | `sf_retrieve_metadata` | Retrieve metadata from the org |
234
+ | `sf_list_metadata` | List all components of a metadata type |
151
235
 
152
236
  ### MCP Server Management
153
237
  | Tool | Description |
@@ -164,16 +248,19 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
164
248
  > "Create a custom object called Project__c with fields: Name (text), Status__c (picklist: Planning/Active/Complete), Budget__c (currency), then add a validation rule requiring Budget when Status is Active."
165
249
 
166
250
  **Deploy Apex:**
167
- > "Create an Apex class called OpportunityService that queries all Opps with Amount > 100000. Then create a test class for it."
251
+ > "Create an Apex class called OpportunityService that queries all Opps with Amount > 100000. Then create a test class for it and get the code coverage."
252
+
253
+ **Create an Agentforce agent:**
254
+ > "Create an Agentforce agent called CRMAssistant that can create Account records. Build the flow, action, topic, planner, and agent — then activate it."
168
255
 
169
- **Create a flow:**
170
- > "Create a record-triggered flow on Opportunity that fires after save when Stage = Closed Won. Send an email alert to the owner and create a follow-up Task due in 30 days."
256
+ **Set up Experience Cloud:**
257
+ > "Create a customer portal Experience Cloud site, add the Customer Community Plus Login profile as a member, create a home navigation menu, and publish the site."
171
258
 
172
- **Set up an LWC:**
173
- > "Create a Lightning Web Component called accountSummary that displays account name, industry, and annual revenue. Make it available on Record Pages."
259
+ **Bulk data import:**
260
+ > "Import 500 Account records from this CSV data using Bulk API 2.0."
174
261
 
175
- **Agentforce setup:**
176
- > "Create an Agentforce agent called SalesAssistant with a topic for Order Management."
262
+ **Security setup:**
263
+ > "Create a permission set called Sales_Ops, grant read/edit on Opportunity and Account, set field-level security for Amount to readable and editable for the Sales profile and the Sales_Ops permission set."
177
264
 
178
265
  ---
179
266
 
@@ -195,7 +282,7 @@ See [SETUP.md](SETUP.md) for all authentication methods and detailed setup instr
195
282
  ## Documentation
196
283
 
197
284
  - [SETUP.md](SETUP.md) — Prerequisites, authentication, Claude configuration
198
- - [TOOLS.md](TOOLS.md) — All 60+ tools with full parameter documentation
285
+ - [TOOLS.md](TOOLS.md) — All 110+ tools with full parameter documentation
199
286
  - [AGENTFORCE.md](AGENTFORCE.md) — Agentforce agent creation guide
200
287
  - [APEX_LWC.md](APEX_LWC.md) — Apex and LWC development guide
201
288
  - [CHANGELOG.md](CHANGELOG.md) — Version history
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ registerTools(server);
13
13
  async function runStdio() {
14
14
  const transport = new StdioServerTransport();
15
15
  await server.connect(transport);
16
- console.error("Salesforce Metadata MCP server v2.1.0 running on stdio");
16
+ console.error("Salesforce Metadata MCP server v2.2.0 running on stdio");
17
17
  }
18
18
  // ─── Transport: HTTP ──────────────────────────────────────────────────────────
19
19
  function readBody(req) {
@@ -64,7 +64,7 @@ async function runHTTP() {
64
64
  res.end(JSON.stringify({ error: "Not found" }));
65
65
  });
66
66
  httpServer.listen(port, () => {
67
- console.error(`Salesforce Metadata MCP server v2.1.0 running on http://localhost:${port}/mcp`);
67
+ console.error(`Salesforce Metadata MCP server v2.2.0 running on http://localhost:${port}/mcp`);
68
68
  });
69
69
  }
70
70
  // ─── Entry point ──────────────────────────────────────────────────────────────