Install AI Tools

B2C Commerce tools, documentation, and skills for your assistant.

Claude

Using Claude Desktop? See Claude Desktop (Cowork) setup.

Install the plugin Recommended

bash
claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
claude plugin install b2c-dx-mcp@b2c-developer-tooling

Start a new Claude Code session. To install for the current project only, run it from your project directory with --scope project.

Manual MCP setup
bash
claude mcp add --transport stdio --scope user b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new session. To configure the current project only, run it from your project directory with --scope project. See Claude Code MCP setup.

Codex/ChatGPT

Using the ChatGPT desktop app (ChatGPT Work)? See ChatGPT Work setup.

Install the plugin Recommended

bash
codex plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
codex plugin add b2c-dx-mcp@b2c-developer-tooling

Start a new Codex session in your project. Codex plugins also work in ChatGPT Work.

Manual MCP setup
bash
codex mcp add b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Or add this to ~/.codex/config.toml (or $CODEX_HOME/config.toml if customized):

toml
[mcp_servers.b2c-dx-mcp]
command = "npx"
args = ["-y", "@salesforce/b2c-dx-mcp@latest"]

Start a new session. See Codex MCP configuration.

VS Code

Install the plugin Recommended

  1. Open the Command Palette (Cmd/Ctrl+Shift+P) and run Chat: Install Plugin from Source.
  2. Enter SalesforceCommerceCloud/b2c-developer-tooling.
  3. Select b2c-dx-mcp and follow the installation prompts.
  4. Start a new chat in GitHub Copilot.
Manual MCP setup

Add this to .vscode/mcp.json in your workspace:

json
{
  "servers": {
    "b2c-dx-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@salesforce/b2c-dx-mcp@latest"]
    }
  }
}

See VS Code MCP setup.

Copilot CLI setup

Cursor

Reload the MCP server in Cursor after installation.

Manual MCP setup

Add this to .cursor/mcp.json in your project:

json
{
  "mcpServers": {
    "b2c-dx-mcp": {
      "command": "npx",
      "args": ["-y", "@salesforce/b2c-dx-mcp@latest"]
    }
  }
}

For all projects, use ~/.cursor/mcp.json instead.

See Cursor's MCP documentation.

OpenCode

Add this to opencode.json in your project:

json
{
  "mcp": {
    "b2c-dx-mcp": {
      "type": "local",
      "command": ["npx", "-y", "@salesforce/b2c-dx-mcp@latest"],
      "enabled": true
    }
  }
}

Restart OpenCode. For all projects, use ~/.config/opencode/opencode.json. See OpenCode MCP setup.

Gemini

Run:

bash
gemini mcp add --scope user b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new Gemini CLI session. To configure the current project only, run it from your project directory with --scope project. See Gemini CLI MCP setup.

No separate skills plugins needed.

Other clients and manual setup →
Skip to content
View as Markdown
View as Markdown

@salesforce/b2c-tooling-sdk / config / DwJsonConfig

Interface: DwJsonConfig ​

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:33

Configuration structure for dw.json after key normalization.

All keys are normalized to camelCase by normalizeConfigKeys() when loading. Both camelCase and kebab-case are accepted in the raw file; the interface documents the canonical (post-normalization) field names.

Legacy aliases (e.g., server, secureHostname, passphrase, selfsigned, cloudOrigin, scapi-shortcode) are also accepted and mapped to their canonical names during normalization.

Extended by ​

Properties ​

accountManagerHost? ​

optional accountManagerHost: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:75

Account Manager hostname for OAuth


active? ​

optional active: boolean

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:37

Whether this config is active (for multi-config files)


apiBackend? ​

optional apiBackend: "ocapi" | "scapi" | "auto"

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:133

API backend preference for operations that support both OCAPI and SCAPI


assetQuery? ​

optional assetQuery: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:113

JSON dot-paths for asset extraction during content library parsing (defaults to ['image.path'])


authMethods? ​

optional authMethods: AuthMethod[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:65

Allowed authentication methods in priority order


autoUpload? ​

optional autoUpload: boolean

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:93

Whether to auto-start code upload/sync in IDE extensions


cartridgeIgnoreDirs? ​

optional cartridgeIgnoreDirs: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:99

Directory names skipped at any depth when archiving cartridges for deploy


cartridges? ​

optional cartridges: string | string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:95

Cartridge names to include in deploy/watch (string with colon/comma separators, or array)


catalogs? ​

optional catalogs: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:103

Catalog IDs for WebDAV browsing


certificate? ​

optional certificate: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:121

Path to PKCS12 certificate file for mTLS (two-factor auth)


certificatePassphrase? ​

optional certificatePassphrase: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:123

Passphrase for the certificate


cipHost? ​

optional cipHost: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:115

Optional CIP analytics host override


clientAuthMethod? ​

optional clientAuthMethod: ClientAuthMethod

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:77

How client credentials are sent to Account Manager


clientId? ​

optional clientId: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:47

OAuth client ID


clientSecret? ​

optional clientSecret: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:49

OAuth client secret


codeVersion? ​

optional codeVersion: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:41

Code version for deployments


contentLibrary? ​

optional contentLibrary: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:101

Default content library ID for content export/list commands


docsCategories? ​

optional docsCategories: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:117

Documentation categories to expose (allowlist); dw.json key docs-categories


hostname? ​

optional hostname: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:39

B2C instance hostname


importSetExclude? ​

optional importSetExclude: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:97

Directory paths to exclude recursively from import-set source discovery


jwtCertPath? ​

optional jwtCertPath: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:137

Path to JWT certificate file (cert.pem) for JWT authentication


jwtKeyPath? ​

optional jwtKeyPath: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:139

Path to JWT private key file (key.pem) for JWT authentication


jwtPassphrase? ​

optional jwtPassphrase: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:141

Optional passphrase for encrypted JWT private key


libraries? ​

optional libraries: (string | LibraryEntry)[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:111

Library IDs for WebDAV browsing and the Content Libraries tree.

Accepts either a string array or a mixed array of strings and {id, siteLibrary?} objects. Object entries can mark individual libraries as site-private.


mrtApiKey? ​

optional mrtApiKey: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:83

MRT API key


mrtBackend? ​

optional mrtBackend: "scapi" | "auto" | "legacy"

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:135

MRT backend preference: legacy MRT Cloud API vs SCAPI MRT deployments API


mrtEnvironment? ​

optional mrtEnvironment: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:81

MRT environment name (e.g., staging, production)


mrtOrigin? ​

optional mrtOrigin: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:85

MRT cloud origin URL


mrtProject? ​

optional mrtProject: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:79

MRT project slug


name? ​

optional name: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:35

Instance name (for multi-config files)


oauthScopes? ​

optional oauthScopes: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:51

OAuth scopes


password? ​

optional password: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:45

Password/access-key for Basic auth (WebDAV)


realm? ​

optional realm: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:91

Default ODS realm for sandbox operations


safety? ​

optional safety: object

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:159

Safety configuration for this instance.

confirm? ​

optional confirm: boolean

level? ​

optional level: string

rules? ​

optional rules: object[]

Example ​

json
{
  "safety": {
    "level": "NO_UPDATE",
    "confirm": true,
    "rules": [
      { "job": "sfcc-site-archive-export", "action": "allow" },
      { "command": "sandbox:*", "action": "confirm" }
    ]
  }
}

sandboxApiHost? ​

optional sandboxApiHost: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:89

ODS API hostname


scapiSchemas? ​

optional scapiSchemas: string[]

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:119

Local SCAPI OpenAPI contracts (files, directories or http(s) URLs) for MCP code mode; dw.json key scapi-schemas


selfSigned? ​

optional selfSigned: boolean

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:125

Whether to skip SSL/TLS certificate verification (self-signed certs)


shortCode? ​

optional shortCode: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:59

SCAPI short code


siteId? ​

optional siteId: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:57

B2C Commerce site/channel ID


slasClientId? ​

optional slasClientId: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:53

SLAS client ID for shopper authentication


slasClientSecret? ​

optional slasClientSecret: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:55

SLAS client secret for private shopper clients


tenantId? ​

optional tenantId: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:87

Tenant/Organization ID for SCAPI


userAuth? ​

optional userAuth: boolean

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:73

Shorthand for "auth-methods": ["user"]. When true, browser-based Authorization Code + PKCE is the only OAuth method tried.

Mutually exclusive with authMethods — setting both in the same dw.json is rejected during config mapping.


username? ​

optional username: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:43

Username for Basic auth (WebDAV)


webdavHostname? ​

optional webdavHostname: string

Defined in: packages/b2c-tooling-sdk/src/config/dw-json.ts:63

Alternate hostname for WebDAV (if different from main hostname)