Install AI Tools

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

Claude

Install the plugin Recommended

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

Start a new Claude Code session in your project. Use --scope user instead for all projects.

Manual MCP setup

From your project directory:

bash
claude mcp add --transport stdio --scope project b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new session. Use --scope user instead for all projects. See Claude Code MCP setup.

Claude Desktop setup

Codex

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. This setup also works with the Codex IDE extension and the ChatGPT Work desktop app.

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.

ChatGPT online setup

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

From your project directory, run:

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

Start a new Gemini CLI session. Use --scope user instead for all projects. 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 / NormalizedConfig

Interface: NormalizedConfig

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:48

Normalized B2C configuration with camelCase fields.

This is the canonical intermediate format that all configuration sources map to. It provides a consistent interface regardless of the source format (dw.json uses kebab-case, env vars use SCREAMING_SNAKE_CASE, etc.).

Properties

accountManagerHost?

optional accountManagerHost: string

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

Account Manager hostname for OAuth (default: account.demandware.com)


apiBackend?

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

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:187

API backend preference for operations that support both OCAPI and SCAPI


assetQuery?

optional assetQuery: string[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:147

JSON dot-paths for asset extraction from component data during content library parsing. Used by content export and the VS Code content library browser. Defaults to ['image.path'] when unset.


authMethods?

optional authMethods: AuthMethod[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:71

Allowed authentication methods in priority order


autoUpload?

optional autoUpload: boolean

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

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


cartridges?

optional cartridges: string[]

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

Cartridge names to include in deploy/watch operations


catalogs?

optional catalogs: string[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:128

Catalog IDs for WebDAV browsing


certificate?

optional certificate: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:179

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


certificatePassphrase?

optional certificatePassphrase: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:181

Passphrase for the certificate


cipHost?

optional cipHost: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:151

Optional CIP analytics host override


clientId?

optional clientId: string

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

OAuth client ID


clientSecret?

optional clientSecret: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:67

OAuth client secret


codeVersion?

optional codeVersion: string

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

Code version for deployments


contentLibrary?

optional contentLibrary: string

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

Default content library ID for content export/list commands


docsCategories?

optional docsCategories: string[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:167

Allowlist of documentation categories to expose from the docs search/read surface (CLI b2c docs, MCP docs tools). When set, bounds the entire available corpus to these categories; unset means no restriction (full corpus). Category names are validated by resolveEnabledCategories in the docs module (unknown names are dropped with a warning).

Sourced from docs-categories (dw.json), SFCC_DOCS_CATEGORIES (env), or docsCategories (package.json). A CLI --topics / MCP --docs-topics flag, when provided, overrides this config value.

Example

ts
["script-api", "job-step", "help-admin", "tooling"]

hostname?

optional hostname: string

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

B2C instance hostname


importSetExclude?

optional importSetExclude: string[]

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

Project-relative directory paths to exclude recursively from import-set source discovery


instanceName?

optional instanceName: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:171

Instance name (from multi-config supporting sources)


jwtCertPath?

optional jwtCertPath: string

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

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


jwtKeyPath?

optional jwtKeyPath: string

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

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


jwtPassphrase?

optional jwtPassphrase: string

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

Optional passphrase for encrypted JWT private key


libraries?

optional libraries: (string | LibraryEntry)[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:140

Library IDs for WebDAV browsing and the Content Libraries tree.

Accepts either a string array (all treated as shared libraries) or an array of LibraryEntry objects that can mark individual libraries as site-private. Both forms can be mixed in the same array.

Example

ts
["RefArch", { id: "homepage", siteLibrary: true }]

mrtApiKey?

optional mrtApiKey: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:109

MRT API key


mrtBackend?

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

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:197

MRT backend preference for MRT operations that support both the legacy MRT Cloud API and the SCAPI MRT backend. Independent of apiBackend (MRT is a distinct subsystem). legacy = the per-user API-key MRT Cloud API; scapi = the OAuth SCAPI MRT backend; auto prefers SCAPI when prerequisites are present and falls back to legacy.


mrtEnvironment?

optional mrtEnvironment: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:107

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


mrtOrigin?

optional mrtOrigin: string

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

MRT API origin URL override


mrtProject?

optional mrtProject: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:105

MRT project slug


password?

optional password: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:61

Password/access-key for Basic auth (WebDAV)


projectDirectory?

optional projectDirectory: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:173

Starting directory for config file search and project-relative operations


realm?

optional realm: string

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

Default ODS realm for sandbox operations


safety?

optional safety: object

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:201

Safety configuration for this instance

confirm?

optional confirm: boolean

When true, level-blocked operations require confirmation instead of hard-blocking

level?

optional level: SafetyLevel

Safety level

rules?

optional rules: SafetyRule[]

Ordered safety rules. First matching rule wins.


sandboxApiHost?

optional sandboxApiHost: string

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

ODS API hostname


scopes?

optional scopes: string[]

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:69

OAuth scopes


selfSigned?

optional selfSigned: boolean

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:183

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


shortCode?

optional shortCode: string

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

SCAPI short code


siteId?

optional siteId: string

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

B2C Commerce site/channel ID


slasClientId?

optional slasClientId: string

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

SLAS client ID for shopper authentication


slasClientSecret?

optional slasClientSecret: string

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

SLAS client secret for private shopper clients


tenantId?

optional tenantId: string

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

Tenant/Organization ID for SCAPI


username?

optional username: string

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

Username for Basic auth (WebDAV)


webdavHostname?

optional webdavHostname: string

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

Separate hostname for WebDAV operations (if different from main hostname)


workingDirectory?

optional workingDirectory: string

Defined in: packages/b2c-tooling-sdk/src/config/types.ts:175

Deprecated

Use projectDirectory instead