io.github.semwalajay83-sem/salesforce-metadata-mcp
NPM · SALESFORCE-METADATA-MCP · SCANNED AUG 3
The only Salesforce MCP with Agentforce, OmniStudio & DevOps Center tools — 222 total.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security83
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/sdk > @hono/node-server. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (107 of 111), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 38003 tokens (~171/item across 222 items; 222 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability check failed: the tool surface changed between 2.7.0 and 2.8.7: 0 tool removals, 1 breaking changes, 3 additions. See how to fix → Fail
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · salesforce-metadata-mcp
claude mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
codex mcp add semwalajay83-sem-salesforce-metadata-mcp -- npx -y salesforce-metadata-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"semwalajay83-sem-salesforce-metadata-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"salesforce-metadata-mcp"
],
"enabled": true
}
}
} openclaw mcp add semwalajay83-sem-salesforce-metadata-mcp --command npx --arg -y --arg salesforce-metadata-mcp
mcp_servers:
semwalajay83-sem-salesforce-metadata-mcp:
command: "npx"
args: ["-y", "salesforce-metadata-mcp"] {
"mcpServers": {
"semwalajay83-sem-salesforce-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"salesforce-metadata-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +39
- Known CVEs: unverified → fail ▼ security
- Stability: unverified → fail ▼ security
- Malware scan: unverified → pass ▲ security
- Schema quality: unverified → excellent ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- 1 Aug 26 −9
- Known CVEs: fail → unverified ▼ security
- Dependency health: partial → unverified ▼ functional
- 31 Jul 26 +20
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +7
- Provenance: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Security disclosure: unverified → fail ▼ functional
- Dependency health: partial → unverified ▼ functional
- Maintenance: unverified → pass ▲ functional
- License: unverified → pass ▲ functional
- Licence: MIT functional
- 29 Jul 26 −16
- Malware scan: pass → unverified ▼ security
- Security disclosure: fail → unverified ▼ functional
- Dependency health: unverified → partial ▲ functional
- Package version: 2.7.0 → 2.8.0 functional
- 28 Jul 26 −19
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 43
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-frvp-7c67-39w9 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N | yes |
Dependencies 107 packages
107 packages in the resolved dependency tree · 107 deprecated · 39 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
sf_activate_flexcard Activate OmniStudio FlexCard ~76
Activates an OmniStudio FlexCard so it is visible on Lightning pages and Experience Cloud sites. Reads the existing FlexCard definition and redeploys it with isActive=true. The card must already exist (created with sf_create_flexcard).
| Name | Type | Req | Description |
|---|---|---|---|
| cardName | string | yes | API name of the FlexCard to activate |
No output schema declared.
No examples provided.
sf_activate_flow Activate Flow Version ~93
Activates a specific Flow version (or the latest version) via the Tooling API. Only one version of a flow can be active at a time — activating a new version automatically deactivates the previous active version. Use sf_list_flow_versions to discover available versions before activating.
| Name | Type | Req | Description |
|---|---|---|---|
| flowApiName | string | yes | Flow API name |
| versionNumber | integer | — | Version number to activate (defaults to latest) |
No output schema declared.
No examples provided.
sf_activate_integration_procedure Activate OmniStudio Integration Procedure ~57
Activates an Integration Procedure so it can be invoked from OmniScripts, FlexCards, and APIs. Identified by procedureName + subType.
| Name | Type | Req | Description |
|---|---|---|---|
| procedureName | string | yes | — |
| subType | string | yes | — |
No output schema declared.
No examples provided.
sf_activate_omniscript Activate OmniStudio OmniScript ~72
Activates an OmniScript so it can be launched from FlexCards, Experience Cloud, or standalone pages. Identified by Type + SubType + Language.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | — | — |
| subType | string | yes | OmniScript sub-type |
| type | string | yes | OmniScript type |
No output schema declared.
No examples provided.
sf_add_picklist_values Add Picklist Values to Existing Field ~92
Adds new picklist values to an existing Picklist or MultiselectPicklist field without removing existing values. Use when a user wants to add new options to a dropdown.
| Name | Type | Req | Description |
|---|---|---|---|
| objectFieldFullName | string | yes | Full API name of the picklist field, e.g. 'Invoice__c.Status__c' |
| values | array | yes | New picklist values to add (existing values are preserved) |
No output schema declared.
No examples provided.
sf_add_to_change_set Add Components to Change Set ~97
Adds one or more metadata components to an existing Outbound Change Set by change set name. Supports all metadata types: CustomObject, CustomField, ApexClass, ApexTrigger, Flow, ValidationRule, PermissionSet, etc. Use after creating a change set to add the metadata you want to deploy.
| Name | Type | Req | Description |
|---|---|---|---|
| changeSetName | string | yes | Name of the existing outbound change set |
| components | array | yes | Components to add |
No output schema declared.
No examples provided.
sf_assign_layout_to_record_type Assign Layout to Record Type ~181
Assigns an existing page layout to a specific record type on an object by updating the Profile metadata. Controls which page layout users see when viewing records of a given record type. objectName: the API name of the object recordTypeName: developer name of the record type layoutName: full name of the page layout, e.g. 'Account Layout' profileNames: optional list of profile names to update (defaults to Admin profile)
| Name | Type | Req | Description |
|---|---|---|---|
| layoutName | string | yes | Full name of the page layout, e.g. 'Account Layout' |
| objectName | string | yes | Object API name, e.g. 'Account' or 'Case' |
| profileNames | array | — | Profile names to assign this layout for (optional) |
| recordTypeName | string | yes | Developer name of the record type, e.g. 'Enterprise' |
No output schema declared.
No examples provided.
sf_assign_presence_status Assign Presence Status to Profiles/Permission Sets ~124
Grants access to a Presence Status for the specified Profiles and/or Permission Sets. Agents can only select presence statuses that are assigned to their profile or permission set. profiles: list of Profile names (e.g. ["Standard User", "Service Agent"]) permissionSets: list of Permission Set API names Either profiles or permissionSets must be provided (or both).
| Name | Type | Req | Description |
|---|---|---|---|
| permissionSets | array | — | Permission Set API names to grant access |
| profiles | array | — | Profile API names to grant access |
| statusName | string | yes | API name of the ServicePresenceStatus |
No output schema declared.
No examples provided.
sf_assign_queue_member Add User to Queue ~118
Adds a user to an existing Queue (GroupMember SObject) by username and queue DeveloperName. The queue must already exist (create via sf_create_queue). Users in queues can be assigned records and receive queue notification emails.
| Name | Type | Req | Description |
|---|---|---|---|
| queueDeveloperName | string | yes | Queue developer name (DeveloperName field on Group), e.g. 'Support_Tier1' |
| roles | array | — | Role API names to add to the queue (adds all users in the role) |
| users | array | — | Usernames to add to the queue |
No output schema declared.
No examples provided.
sf_assign_skill_to_agent Assign Skill to Service Agent ~164
Assigns a Skill to a Salesforce user (service agent) with a skill level rating. Creates a ServiceResource for the user if one does not already exist, then creates a ServiceResourceSkill record. skillName: the API name (DeveloperName) of the skill to assign username: the Salesforce username (e.g. [email protected]) or user ID skillLevel: proficiency level from 0 to 10 (default 5) ServiceResource is the Field Service / OmniChannel representation of a user as a workable resource.
| Name | Type | Req | Description |
|---|---|---|---|
| skillLevel | number | — | Proficiency level 0 (novice) to 10 (expert) |
| skillName | string | yes | Skill DeveloperName |
| username | string | yes | Salesforce username of the service agent |
No output schema declared.
No examples provided.
sf_assign_territory_to_user Assign Territory to User ~129
Assigns a user to an Enterprise Territory Management territory via the UserTerritory2Association SObject. Users assigned to a territory get visibility into accounts in that territory. username or userId: identify the user territoryName: DeveloperName of the Territory2 to assign roleInTerritory: optional role — 'Salesperson', 'Manager', or 'BusinessUser'
| Name | Type | Req | Description |
|---|---|---|---|
| roleInTerritory | string | — | User role within the territory |
| territoryName | string | yes | Territory API name to assign user to |
| username | string | yes | Salesforce username to assign |
No output schema declared.
No examples provided.
sf_bulk_delete_records Bulk Delete Records (Bulk API 2.0) ~95
Deletes multiple records by ID asynchronously using Salesforce Bulk API 2.0. Returns a job ID to track status. Use with caution — deleted records go to the Recycle Bin. objectApiName: Salesforce object API name ids: array of Salesforce record IDs to delete
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Salesforce record IDs to delete |
| objectApiName | string | yes | Object API name, e.g. 'Lead' |
No output schema declared.
No examples provided.
sf_bulk_import_records Bulk Import Records (Bulk API 2.0) ~153
Bulk imports records using the Salesforce Bulk API 2.0. Supports insert, upsert, update, and delete operations on large datasets (thousands to millions of records). Provide CSV data with a header row. For upsert, set externalIdField to the field used for matching. Polls until the job completes and returns success/failure counts.
| Name | Type | Req | Description |
|---|---|---|---|
| externalIdField | string | — | External ID field for upsert operations, e.g. 'External_Id__c' |
| objectApiName | string | yes | SObject API name, e.g. 'Account' |
| operation | string | yes | Bulk operation type |
| records | array | yes | Array of record objects with field API name to value mappings |
No output schema declared.
No examples provided.
sf_bulk_insert_records Bulk Insert Records (Bulk API 2.0) ~139
Inserts multiple records of the same object type asynchronously using Salesforce Bulk API 2.0. More efficient than individual REST calls for large volumes. Returns a job ID to track status. objectApiName: Salesforce object API name records: array of record objects with field:value pairs externalIdField: if provided, performs an upsert on this external ID field instead of insert
| Name | Type | Req | Description |
|---|---|---|---|
| externalIdField | string | — | External ID field for upsert (omit for insert) |
| objectApiName | string | yes | Object API name, e.g. 'Contact' |
| records | array | yes | Array of records to insert (field:value pairs) |
No output schema declared.
No examples provided.
sf_bulk_update_records Bulk Update Records (Bulk API 2.0) ~103
Updates multiple records of the same object type asynchronously using Salesforce Bulk API 2.0. Each record must include its Salesforce Id field. Returns a job ID to track status. objectApiName: Salesforce object API name records: array of records — each must include 'Id' plus fields to update
| Name | Type | Req | Description |
|---|---|---|---|
| objectApiName | string | yes | Object API name, e.g. 'Contact' |
| records | array | yes | Array of records with Id field required |
No output schema declared.
No examples provided.
sf_check_code_coverage Check Apex Code Coverage ~107
Retrieves Apex code coverage statistics from the org using the Tooling API. Shows which classes meet or fail the 75% coverage threshold required for deployment. Use after running Apex tests to assess coverage. className: optional filter to show only classes matching this name minCoverage: optional threshold — only return classes below this coverage percentage
| Name | Type | Req | Description |
|---|---|---|---|
| className | string | — | Filter by Apex class name (partial match) |
| minCoverage | integer | — | Only show classes below this coverage % |
No output schema declared.
No examples provided.
sf_check_deploy_status Check Deployment Status ~84
Checks the status of an in-progress or recently completed metadata deployment by async job ID. Returns the status (Pending, InProgress, Succeeded, Failed, Canceled), component successes, failures, and test results. Use with the deploy ID returned from sf_deploy_metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| deployId | string | yes | Deploy async job ID returned from sf_deploy_metadata |
No output schema declared.
No examples provided.
sf_check_devops_commit_status Check DevOps Center Commit Status ~60
Retrieves the commit and deployment status for a DevOps Center work item. Shows recent commits and their deployment outcomes. workItemId: DevOps Center work item ID
| Name | Type | Req | Description |
|---|---|---|---|
| workItemId | string | yes | DevOps Center work item ID |
No output schema declared.
No examples provided.
sf_checkout_devops_work_item Checkout DevOps Center Work Item ~78
Checks out a DevOps Center work item, moving it to 'In Progress' status. This signals that a developer is actively working on the changes for this work item. workItemId: DevOps Center work item ID to check out
| Name | Type | Req | Description |
|---|---|---|---|
| workItemId | string | yes | DevOps Center work item ID to check out |
No output schema declared.
No examples provided.
sf_commit_devops_work_item Commit DevOps Center Work Item ~84
Commits changes for a DevOps Center work item by creating a commit record associated with the work item. Records the commit message for audit tracking. workItemId: DevOps Center work item ID message: commit message describing the changes
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | Commit message |
| workItemId | string | yes | DevOps Center work item ID |
No output schema declared.
No examples provided.
sf_configure_change_data_capture Configure Change Data Capture ~96
Enables Change Data Capture (CDC) for the specified Salesforce objects via the Metadata API. CDC publishes change events to the /data/ChangeEvents channel when records are created, updated, deleted, or undeleted. Provide an array of object API names to enable CDC on. Standard and custom objects are supported.
| Name | Type | Req | Description |
|---|---|---|---|
| entities | array | yes | Object API names to enable CDC on, e.g. ['Account', 'Contact'] |
No output schema declared.
No examples provided.
sf_create_agent Create Agentforce Agent ~433
Creates an Agentforce Agent (Einstein Copilot) shell in Salesforce. THIS IS STEP 1 OF A 5-STEP SEQUENCE — calling this tool alone produces a non-functional agent shell. You MUST continue calling tools in this exact order without stopping: (0) FIRST create the backing flows (sf_create_flow, flowType=AutoLaunchedFlow, status=Active) and/or Apex classes (sf_create_apex_class with @InvocableMethod) for each capability. (1) THIS TOOL — sf_create_agent. (2) sf_create_agent_action — one call per flow/apex. (3) sf_create_agent_topic — group actions into topics; pass all action API names in the 'actions' array. (4) sf_create_agent_planner — wire topics to the agent. DO NOT report completion to the user until sf_create_agent_planner succeeds. Do not ask the user for confirmation between steps — proceed through all steps autonomously.
| Name | Type | Req | Description |
|---|---|---|---|
| agentName | string | yes | Agent API name — letters and numbers only, NO underscores (Salesforce rejects underscores in Bot developer names). Max 40 chars. e.g. 'SalesAgent', 'SupportBot'. Used in all subsequent calls (sf_crea… |
| company | string | — | Company name for the agent's context |
| description | string | — | Agent description |
| label | string | yes | Agent display label shown to users, e.g. 'Sales Assistant' |
| persona | string | — | Agent persona/role description, e.g. 'A knowledgeable sales expert who helps close deals'. Deployed as the BotVersion <role>. |
| plannerName | string | — | API name of the GenAiPlannerBundle to attach this agent to. Normally omitted on the first call (the planner does not exist yet) — after sf_create_agent_planner succeeds, call this tool again with the… |
| tone | string | — | Communication tone for agent responses |
No output schema declared.
No examples provided.
sf_create_agent_action Create Agentforce Action ~433
Creates an Agentforce Action (GenAiFunction) — step 2 of the agent setup sequence. Call this once per capability (once per flow, once per Apex class). IMPORTANT by type: For Flow — the flow must already exist as an Active AutoLaunchedFlow (use sf_create_flow with flowType='AutoLaunchedFlow' and status='Active' first). For ApexClass — the class must already exist AND have @InvocableMethod (use sf_create_apex_class first). The 'reference' is the exact API name of the flow or class. After ALL actions are created, call sf_create_agent_topic (passing all action API names in 'actions' array), then sf_create_agent_planner. Do not stop between steps.
| Name | Type | Req | Description |
|---|---|---|---|
| actionName | string | yes | Action API name. Letters, numbers, underscores. Remember this name — you must pass it in the 'actions' array when calling sf_create_agent_topic. |
| agentName | string | — | Parent agent API name — optional and informational only, NOT written to the action XML. Safe to omit. |
| description | string | yes | What this action does — used by the AI to decide when to invoke it |
| inputs | array | — | Input parameter mappings |
| label | string | — | Action label. Defaults to actionName if omitted. |
| reference | string | yes | Exact API name of the resource to invoke. For Flow: the flow API name (e.g. 'Get_Account_Details'). For ApexClass: the class name (e.g. 'AccountHelper'). For PromptTemplate: the template API name. Mu… |
| topicName | string | — | Parent topic API name — optional and informational only, NOT written to the action XML. Safe to omit. You must still pass this action's API name (actionName) in the 'actions' array when calling sf_cr… |
| type | string | yes | Action type: 'Flow' (AutoLaunchedFlow only — must be Active), 'ApexClass' (must have @InvocableMethod), 'PromptTemplate', etc. |
No output schema declared.
No examples provided.
sf_create_agent_planner Wire Agent to Topics — Final Step (Create GenAiPlanner) ~311
Creates a GenAiPlanner that connects an Agentforce Agent (Bot) to its Topics — STEP 4 (FINAL) of the agent setup sequence. Without this step the agent cannot route ANY request regardless of how many topics and actions were created. Also known as: linking topics to agent, connecting topics, finishing agent setup, wiring topics, registering topics. CRITICAL: topicNames must be the COMPLETE list of all topics — this REPLACES any existing planner, so omitting a topic removes it from the agent. When adding a new topic to an existing agent, include ALL previous topic names plus the new one. Only AFTER this step succeeds should you report completion to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| actionNames | array | — | Action API names to attach directly to the planner rather than through a topic (e.g. a knowledge action). Most agents leave this empty and put actions in topics. |
| agentName | string | yes | Agent API name — must exactly match the agentName used in sf_create_agent (no underscores). |
| description | string | — | Planner description. Required by Salesforce — defaults to a generated description if omitted. |
| label | string | — | Planner display label (defaults to agentName) |
| topicNames | array | yes | COMPLETE list of topic API names to wire to this agent. WARNING: This REPLACES any existing planner — if you add a new topic to an existing agent, include ALL previous topic names plus the new one. O… |
No output schema declared.
No examples provided.
sf_create_agent_topic Create Agentforce Topic ~332
Creates a Topic (GenAiPlugin) for an Agentforce Agent — step 3 of the agent setup sequence. Call this AFTER all actions have been created with sf_create_agent_action. CRITICAL: pass ALL action API names in the 'actions' array — omitting it creates a topic with no executable actions and the agent silently does nothing. agentName is informational only (not written to XML) — the actual agent→topic wiring happens in sf_create_agent_planner which you MUST call immediately after this step. Do not stop between steps.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | — | CRITICAL: Action API names (from sf_create_agent_action) to link to this topic. If you omit this or pass an empty array, the topic is created with NO executable actions — the agent will silently do n… |
| agentName | string | yes | Parent agent API name — informational only, NOT written to the topic XML. The actual agent→topic wiring happens in sf_create_agent_planner (required separate step). |
| description | string | yes | What this topic covers |
| instructions | — | — | Step-by-step instructions for handling this topic. Pass as a single string or an array of strings (each becomes a separate instruction entry). |
| label | string | yes | Topic label |
| scope | string | yes | Scope of this topic — what kind of requests it handles |
| topicName | string | yes | Topic API name, e.g. 'OrderManagement'. Letters, numbers, underscores. This is the name you must include in topicNames when calling sf_create_agent_planner. |
No output schema declared.
No examples provided.
sf_create_apex_class Create Apex Class ~212
Creates and deploys an Apex class to the Salesforce org using the Metadata API. Accepts the full Apex source code including the class declaration. Use for any type of Apex class: service classes, controllers, batch classes, schedulable classes, queueable classes, test utilities, etc. IMPORTANT — If this class will be used as an Agentforce agent action: it MUST contain a public static method annotated with @InvocableMethod. Classes without @InvocableMethod cannot be invoked by agents and will silently fail at runtime. Example minimum structure: public class MyClass { @InvocableMethod(label='Do Thing' description='Does the thing') public static List<String> doThing(List<String> input) { ... } }
| Name | Type | Req | Description |
|---|---|---|---|
| apiVersion | string | — | API version for this class, e.g. '66.0' |
| classBody | string | yes | Full Apex class source code including the class declaration |
| className | string | yes | Apex class name, e.g. 'AccountService' |
No output schema declared.
No examples provided.
sf_create_apex_email_service Create Apex Email Service ~221
Creates an Apex Email Service that processes inbound emails via an Apex class implementing Messaging.InboundEmailHandler. Useful for creating support cases from emails, parsing email content, or triggering workflows from inbound messages. The Apex class must exist before creating the service.
| Name | Type | Req | Description |
|---|---|---|---|
| apexClassName | string | yes | Apex class that implements Messaging.InboundEmailHandler |
| attachmentOption | string | — | Which attachment types to process |
| authenticationFailureAction | string | — | What to do on authentication failure |
| errorRoutingAddress | string | — | Error routing email address |
| functionExceptionAction | string | — | What to do when an exception occurs |
| functionInactiveAction | string | — | What to do when function is inactive |
| functionName | string | yes | Email service function name |
| isActive | boolean | — | Whether this email service is active |
| isAuthenticationRequired | boolean | — | Require sender authentication |
| isErrorRoutingEnabled | boolean | — | Route errors to an address |
| overLimitAction | string | — | What to do when over API limits |
No output schema declared.
No examples provided.
sf_create_apex_test_class Create Apex Test Class ~144
Creates and deploys an Apex Test Class (annotated with @isTest). Provide the full test class source code. Optionally run the tests immediately after deployment. Test classes are required for Salesforce deployments to production (minimum 75% code coverage). Use for unit testing Apex classes, triggers, and business logic.
| Name | Type | Req | Description |
|---|---|---|---|
| apiVersion | string | — | API version for this test class |
| classBody | string | yes | Full test class source code including @isTest annotation and class declaration |
| className | string | yes | Test class name, e.g. 'AccountServiceTest' |
| runAfterDeploy | boolean | — | Immediately run the tests after deploying |
No output schema declared.
No examples provided.
sf_create_apex_trigger Create Apex Trigger ~166
Creates and deploys an Apex Trigger on any Salesforce object. Specify the trigger events (before insert, after update, etc.) and the trigger body code. The trigger declaration (trigger Name on Object (events)) is auto-generated — just provide the code that goes inside the trigger body. Deployed via Metadata API SOAP deploy.
| Name | Type | Req | Description |
|---|---|---|---|
| apiVersion | string | — | API version for this trigger |
| events | array | yes | Trigger events, e.g. ['before insert', 'before update'] |
| objectName | string | yes | Object API name the trigger fires on, e.g. 'Account' |
| triggerBody | string | yes | Full trigger body code (the code between the trigger { }) |
| triggerName | string | yes | Trigger name, e.g. 'AccountTrigger' |
No output schema declared.
No examples provided.
sf_create_approval_process Create Salesforce Approval Process ~301
Creates or updates a Salesforce Approval Process via the Metadata API. Define who can submit, approval steps with approvers, entry criteria, and what happens on approval or rejection.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | — | Activate immediately (warning: cannot change steps after activation) |
| allowRecall | boolean | — | Allow submitters to recall approval requests |
| allowedSubmitters | array | yes | Who can submit: [{type:'owner'}] or [{type:'role', submitter:'SalesRep'}] |
| approvalSteps | array | yes | Ordered list of approval steps |
| description | string | — | Description of the approval process |
| emailTemplate | string | — | Email template for approval notifications, e.g. 'unfiled$public/ApprovalEmail' |
| entryFilterCriteria | array | — | Filter criteria alternative to entryFormula |
| entryFormula | string | — | Formula records must satisfy to enter this process |
| finalApprovalLock | boolean | — | Lock record after final approval |
| finalRejectionLock | boolean | — | Lock record after final rejection |
| label | string | yes | Human-readable label, e.g. 'Large Deal Approval Process' |
| objectName | string | yes | Object API name, e.g. 'Opportunity' or 'Leave_Request__c' |
| processName | string | yes | API name of the process, e.g. 'Large_Deal_Approval' |
| recordEditability | string | — | Who can edit locked records during approval |
No output schema declared.
No examples provided.
sf_create_assignment_rule Create Lead or Case Assignment Rule ~126
Creates an Assignment Rule for Leads or Cases. Assignment rules automatically route new records to the appropriate owner (user or queue) based on matching criteria. Only one rule can be active at a time per object. Rule entries are evaluated top-to-bottom and the first match wins.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | — | Set as the active assignment rule |
| label | string | yes | Display label |
| objectName | string | yes | Object to apply assignment rules to |
| ruleEntries | array | yes | Ordered list of assignment rule entries |
| ruleName | string | yes | Assignment rule developer name |
No output schema declared.
No examples provided.
sf_create_aura_app Create Aura Application ~141
Generates an Aura Application bundle scaffold. Returns the .app file content with the specified access level, optional parent app extension (e.g. force:slds for SLDS styling), included components, and body content. Aura Apps are standalone Lightning applications accessible via /c/AppName.app URL.
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | — | Access level |
| appName | string | yes | Aura app name (PascalCase) |
| bodyContent | string | — | Body markup content |
| description | string | — | Description |
| extends | string | — | Parent app to extend, e.g. 'force:slds' |
| includes | array | — | Component names to include |
No output schema declared.
No examples provided.
sf_create_aura_component Create Aura (Lightning) Component ~194
Generates an Aura (Lightning Component Framework) component scaffold. Returns the complete bundle file contents: .cmp markup, JavaScript controller, CSS stylesheet, design resource, and metadata XML. Specify interfaces the component implements (e.g. force:appHostable for App Builder), attributes with types and defaults, and an optional Apex controller. Use sf_create_lwc for new development — Aura is for legacy migration scenarios.
| Name | Type | Req | Description |
|---|---|---|---|
| accessLevel | string | — | Access level |
| attributes | array | — | Component attributes |
| componentName | string | yes | Aura component name (PascalCase) |
| controller | string | — | Apex controller class name |
| description | string | — | Description |
| implements | string | — | Comma-separated interfaces, e.g. 'force:appHostable,flexipage:availableForAllPageTypes' |
| isExposed | boolean | — | Whether the component is exposed in App Builder |
No output schema declared.
No examples provided.
sf_create_aura_event Create Aura Event ~108
Generates an Aura Event scaffold (.evt file content). Supports COMPONENT events (propagate up the component hierarchy) and APPLICATION events (broadcast to all subscribed components). Define event attributes with names and types. Components fire events with component.getEvent() and APPLICATION events with $A.get().
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | array | — | Event attributes |
| description | string | — | Description |
| eventName | string | yes | Aura event name (PascalCase) |
| eventType | string | yes | Event type |
No output schema declared.
No examples provided.
sf_create_auth_provider Create Auth Provider ~166
Creates an Auth Provider in Salesforce for SSO or social login via the Metadata API. Supports OpenID Connect, Facebook, Google, GitHub, Salesforce, and Custom providers. Provide the consumer key and secret from the external identity provider. Optionally specify an Apex registration handler class for custom user provisioning logic.
| Name | Type | Req | Description |
|---|---|---|---|
| consumerKey | string | yes | Consumer key / client ID |
| consumerSecret | string | yes | Consumer secret / client secret |
| customErrorUrl | string | — | Custom error URL |
| defaultScopes | string | — | Default OAuth scopes |
| friendlyName | string | yes | Display name |
| providerName | string | yes | Auth provider API name |
| providerType | string | yes | Provider type |
| registrationHandler | string | — | Apex class name for registration handler |
No output schema declared.
No examples provided.
sf_create_auto_response_rule Create Auto-Response Rule ~122
Creates an Auto-Response Rule for Web-to-Lead or Web-to-Case. When a lead or case is created via a web form, this rule automatically sends a confirmation email using the specified template. Rule entries define which template to use based on criteria.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | — | Set as the active auto-response rule |
| label | string | yes | Display label |
| objectName | string | yes | Object for auto-response rules |
| ruleEntries | array | yes | Rule entries |
| ruleName | string | yes | Auto-response rule developer name |
No output schema declared.
No examples provided.
sf_create_bot_routing Configure Bot Escalation Routing ~216
Configures an Einstein Bot to transfer conversations to a human agent queue when escalation conditions are met. Updates the BotVersion with a Transfer dialog. botName: the Bot API name (DeveloperName) transferToQueueName: the Queue API name to transfer escalated conversations to transferMessage: message shown to the customer during transfer (default: "Connecting you to an agent...") escalationConditions: array of { trigger, action } pairs. Triggers: agentRequested, noResponse, fallback. Actions: TransferToQueue. This tool finds the latest BotVersion for the specified bot and adds the transfer dialog. The bot must already exist (created via Setup or sf_create_agent).
| Name | Type | Req | Description |
|---|---|---|---|
| botName | string | yes | Einstein Bot API name (DeveloperName of the BotVersion parent) |
| escalationConditions | array | — | Conditions that trigger transfer to human agent |
| transferMessage | string | — | Message shown to customer when transferring to agent |
| transferToQueueName | string | yes | Queue DeveloperName to transfer conversation to |
No output schema declared.
No examples provided.
sf_create_business_hours Create Business Hours ~133
Creates Business Hours in Salesforce via the Metadata API. Define working hours for each day of the week, specify the time zone, and mark days as active or inactive. Business Hours are used with Entitlement Processes, Escalation Rules, and Holidays to calculate SLA milestones.
| Name | Type | Req | Description |
|---|---|---|---|
| days | array | yes | Business hours for each day |
| isActive | boolean | — | Whether business hours are active |
| isDefault | boolean | — | Whether this is the default business hours |
| name | string | yes | Business hours name |
| timeZone | string | yes | Time zone, e.g. 'America/New_York' |
No output schema declared.
No examples provided.
sf_create_business_process Create Business Process ~132
Creates a Business Process for Opportunity (Stage values), Lead (Status values), Case (Status values), or Solution (Status values). Business Processes define which picklist values are available for a given Record Type. Must be created before assigning to a Record Type.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Description |
| isActive | boolean | — | Whether this process is active |
| label | string | yes | Display label |
| objectName | string | yes | Object the business process applies to |
| processName | string | yes | Business process developer name |
| values | array | yes | Stage/status values included in this business process |
No output schema declared.
No examples provided.
sf_create_calculation_matrix Create OmniStudio Calculation Matrix ~191
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. inputVariables: list of input variable names (columns used for lookups) outputVariables: list of output variable names (columns returned) rows: array of { inputs: {var: value}, outputs: {var: value} } defining the lookup table Example: a pricing matrix with inputs [ProductType, Region] and outputs [Price, Discount].
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | — |
| inputVariables | array | yes | Input column definitions |
| label | string | yes | — |
| matrixName | string | yes | API name of the Calculation Matrix |
| outputVariables | array | yes | Output column definitions |
| rows | array | — | Matrix rows: array of {inputVarName: value, ..., outputVarName: value} |
No output schema declared.
No examples provided.
sf_create_calculation_procedure Create OmniStudio Calculation Procedure ~167
Creates a Calculation Procedure that orchestrates multi-step calculations using Calculation Matrices, formulas, and logic steps. steps array — each step has: - name: step identifier - type: MatrixLookup (call a matrix), Formula (expression), Condition (branch), Assignment (set variable) - matrixName: required for MatrixLookup steps - expression: required for Formula/Condition steps - inputMap: maps procedure variables to step inputs - outputMap: maps step outputs back to procedure variables Use Calculation Procedures to build complex pricing engines, eligibility calculators, or multi-factor scoring systems.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | — |
| label | string | yes | — |
| procedureName | string | yes | API name of the Calculation Procedure |
| steps | array | — | Procedure steps |
No output schema declared.
No examples provided.
sf_create_chat_button Create Live Agent Chat Button ~291
Creates a Live Chat button (LiveChatButton) that can be embedded on websites to start chat sessions with agents. routingType: Choice (skills-based) or Queue (queue-based routing) queueName: the Queue to route chats to (for Queue routing) botName: an Einstein Bot to handle chats initially (optional) windowLanguage: display language for the chat window (e.g. "en_US", "fr", "de") inviteRenderer: name of a custom Visualforce page for chat invitations customAgentName: agent display name shown to website visitors optionsHasTimeoutAlert: show alert if no agent available within timeout period After creating, embed the chat button on a site with sf_create_embedded_service.
| Name | Type | Req | Description |
|---|---|---|---|
| botName | string | — | Bot name for bot-first routing |
| buttonName | string | yes | API name / DeveloperName of the chat button |
| customAgentName | string | — | Agent display name shown in chat window |
| description | string | — | — |
| inviteRenderer | string | — | Custom invite Visualforce page/LWC component name |
| label | string | yes | — |
| optionsHasTimeoutAlert | boolean | — | — |
| queueName | string | — | Queue DeveloperName for queue-based routing |
| routingType | string | — | — |
| windowLanguage | string | — | Chat window language code, e.g. 'en', 'fr', 'de' |
No output schema declared.
No examples provided.
sf_create_compact_layout Create Compact Layout ~156
Creates a Compact Layout for a Salesforce object. Compact Layouts define which fields appear in the highlights panel at the top of a record page (up to 10 fields), in Salesforce Mobile, and in related list cards. Use when you want to surface the most important fields at a glance.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | yes | Field API names to show (max 10), e.g. ['Name', 'Status__c', 'Amount'] |
| fullName | string | yes | Compact layout developer name |
| label | string | yes | Display label |
| objectName | string | yes | Object API name to add the compact layout to |
| setAsDefault | boolean | — | Set this compact layout as the default for the object |
No output schema declared.
No examples provided.
sf_create_connected_app Create Connected App (OAuth) ~448
Creates a Connected App in Salesforce to enable OAuth authentication for external applications. Connected Apps are required for any external system that wants to connect to Salesforce via OAuth 2.0. Specify callback URLs for the OAuth flow, OAuth scopes (api, web, full, offline_access, etc.), and contact email. Used for web apps, mobile apps, desktop apps, or server-to-server integrations.
| Name | Type | Req | Description |
|---|---|---|---|
| accessTokenValidity | integer | — | Access token validity in minutes |
| callbackUrls | array | yes | OAuth callback URLs, e.g. ['https://myapp.com/oauth/callback'] |
| consumerKey | string | — | Custom consumer key (auto-generated if not specified) |
| contactEmail | string | yes | Contact email for the app |
| description | string | — | Description |
| enableClientCredentialsFlow | boolean | — | Sets isClientCredentialEnabled/isAdminApproved on the deployed ConnectedApp (verified accepted by Metadata API 2026-07-31). NOTE: Salesforce still requires an admin to open Setup → App Manager → Edit… |
| fullName | string | yes | Connected app API name, e.g. 'My_External_App' |
| label | string | yes | Display label |
| refreshTokenValidity | integer | — | Refresh token validity in minutes |
| scopes | array | yes | OAuth scopes to request. Use 'chatbot_api' (deploys as the metadata literal 'Chatbot', verified against a live org 2026-07-31) for any external client calling a Salesforce bot/Agentforce agent — with… |
| startUrl | string | — | Default start URL after OAuth |
No output schema declared.
No examples provided.
sf_create_connected_app_oauth_policy Update Connected App OAuth Policies ~132
Updates the OAuth policies on an existing Connected App in Salesforce via the Metadata API. Configure the refresh token policy (infinite, specific duration, or expire on password change), single logout URL, session timeout, and IP relaxation settings. Use this to tighten or adjust security policies on deployed Connected Apps.
| Name | Type | Req | Description |
|---|---|---|---|
| connectedAppName | string | yes | Connected App API name |
| ipRelaxation | string | — | IP relaxation policy |
| refreshTokenPolicy | string | yes | Refresh token policy |
| sessionTimeout | string | — | Session timeout value |
| singleLogoutUrl | string | — | Single logout URL |
No output schema declared.
No examples provided.
sf_create_csp_setting Create Content Security Policy (CSP) Trusted Site ~145
Creates a Content Security Policy trusted site, allowing LWC components and Visualforce pages to load resources from external URLs. CSP settings are needed when your LWC uses external JavaScript libraries, fonts, images, or APIs. Specify which directives (connect-src, script-src, style-src, img-src, etc.) the URL is trusted for.
| Name | Type | Req | Description |
|---|---|---|---|
| cspDirectives | array | yes | CSP directives this URL is trusted for |
| description | string | — | Description of why this URL is trusted |
| endpointUrl | string | yes | Trusted URL for CSP, e.g. 'https://cdn.example.com' |
| isActive | boolean | — | Whether this setting is active |
No output schema declared.
No examples provided.
sf_create_custom_application Create Lightning Application ~160
Creates a Lightning Application (App) in the Salesforce org via the Metadata API. Supports Standard and Console navigation types. Specify tabs to include, form factor (desktop or mobile), and optional utility bar components. The app appears in the App Launcher after creation.
| Name | Type | Req | Description |
|---|---|---|---|
| appName | string | yes | Application API name |
| description | string | — | Description |
| formFactor | string | — | Form factor: Large (desktop) or Small (mobile) |
| isNavAutoTempTabsDisabled | boolean | — | Disable auto-temporary tabs in nav |
| label | string | yes | Display label |
| navType | string | — | Navigation type |
| tabs | array | — | Tab API names to include |
| utilityBar | array | — | Utility bar items |
No output schema declared.
No examples provided.
sf_create_custom_button Create Custom Button or Link ~165
Creates a custom button or link on a Salesforce object via the Metadata API (WebLink). Supports list buttons, detail page buttons, and mass action buttons. Content can be a URL, JavaScript, or a Visualforce page reference. Specify how the target opens (sidebar, new window, replace current page, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| buttonName | string | yes | Button API name |
| buttonType | string | yes | Button placement type |
| content | string | yes | URL, JavaScript code, or Visualforce page name |
| contentSource | string | yes | Content source type |
| label | string | yes | Display label |
| objectName | string | yes | Object API name, e.g. 'Account' |
| openType | string | yes | How to open the button target |
No output schema declared.
No examples provided.
sf_create_custom_field Create Salesforce Custom Field ~431
Creates a new custom field on an existing Salesforce object. The field API name must end with '__c'. Supports all field types: Text, Number, Picklist, Lookup, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| defaultValue | boolean|string | — | Default value for the field. Use true/false for Checkbox fields. |
| deleteConstraint | string | — | Delete behaviour for Lookup fields: 'Cascade', 'Restrict', or 'SetNull' |
| description | string | — | Optional description for the field |
| externalId | boolean | — | Whether this field is an external ID |
| fieldName | string | yes | API name of the field, e.g. 'Status__c' |
| label | string | yes | Display label for the field, e.g. 'Status' |
| length | integer | — | Max length. Text/TextArea: 1–255 (default 255). LongTextArea/Html (Text Area Long / Rich Text Area): 256–131072 (default 32768). |
| objectName | string | yes | API name of the parent object, e.g. 'Account' or 'Invoice__c' |
| picklistValues | object | — | Picklist configuration. Required for Picklist / MultiselectPicklist types. |
| precision | integer | — | Total digits for Number/Currency/Percent (1–18) |
| referenceTo | string | — | Target object API name for Lookup/MasterDetail, e.g. 'Account' |
| relationshipLabel | string | — | Label for the relationship on the related object |
| relationshipName | string | — | API name for the relationship (no spaces) |
| required | boolean | — | Whether the field is required on page layouts |
| scale | integer | — | Decimal places for Number/Currency/Percent (0–17) |
| type | string | yes | Salesforce field type |
| unique | boolean | — | Whether values must be unique (Text, Number, Email) |
| visibleLines | integer | — | Visible lines. Required for LongTextArea and Html (Text Area Long / Rich Text Area) — default 10. Also used for MultiselectPicklist. |
No output schema declared.
No examples provided.
sf_create_custom_label Create or Update Custom Label ~153
Creates or updates a Salesforce Custom Label. Custom Labels are text values accessible in Apex, Visualforce, LWC, and Flows, with support for translation. Use for internationalizable text strings, error messages, or UI labels.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | string | — | Category for grouping labels |
| fullName | string | yes | API name of the label, e.g. 'Welcome_Message' |
| language | string | — | Language code, e.g. 'en_US', 'fr', 'de' |
| protected | boolean | — | Protected labels are only accessible by the package that created them |
| shortDescription | string | — | Short description of the label's purpose |
| value | string | yes | The label text value |
No output schema declared.
No examples provided.