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 / NormalizedConfig

Interface: NormalizedConfig ​

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

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:74

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:214

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:157

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:72

Allowed authentication methods in priority order


autoUpload? ​

optional autoUpload: boolean

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

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


cartridgeIgnoreDirs? ​

optional cartridgeIgnoreDirs: string[]

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

Directory names skipped at any depth when archiving cartridges for deploy (replaces the default list)


cartridges? ​

optional cartridges: string[]

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

Cartridge names to include in deploy/watch operations


catalogs? ​

optional catalogs: string[]

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

Catalog IDs for WebDAV browsing


certificate? ​

optional certificate: string

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

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:202

Passphrase for the certificate


cipHost? ​

optional cipHost: string

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

Optional CIP analytics host override


clientAuthMethod? ​

optional clientAuthMethod: ClientAuthMethod

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

How client credentials are sent to Account Manager (default: basic)


clientId? ​

optional clientId: string

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

OAuth client ID


clientSecret? ​

optional clientSecret: string

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

OAuth client secret


codeVersion? ​

optional codeVersion: string

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

Code version for deployments


contentLibrary? ​

optional contentLibrary: string

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

Default content library ID for content export/list commands


docsCategories? ​

optional docsCategories: string[]

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

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:52

B2C instance hostname


importSetExclude? ​

optional importSetExclude: string[]

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

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:192

Instance name (from multi-config supporting sources)


jwtCertPath? ​

optional jwtCertPath: string

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

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


jwtKeyPath? ​

optional jwtKeyPath: string

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

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:84

Optional passphrase for encrypted JWT private key


libraries? ​

optional libraries: (string | LibraryEntry)[]

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

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:117

MRT API key


mrtBackend? ​

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

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

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:115

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


mrtOrigin? ​

optional mrtOrigin: string

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

MRT API origin URL override


mrtProject? ​

optional mrtProject: string

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

MRT project slug


password? ​

optional password: string

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

Password/access-key for Basic auth (WebDAV)


projectDirectory? ​

optional projectDirectory: string

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

Starting directory for config file search and project-relative operations


realm? ​

optional realm: string

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

Default ODS realm for sandbox operations


safety? ​

optional safety: object

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

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:107

ODS API hostname


scapiSchemas? ​

optional scapiSchemas: string[]

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

Local SCAPI OpenAPI 3 JSON contracts (files, directories or http(s) URLs) for MCP code mode. Each replaces the bundled or live contract for the same API, or adds one. Relative paths resolve from the project directory.

Sourced from scapi-schemas (dw.json) or SFCC_SCAPI_SCHEMAS (env, comma-separated). The MCP --scapi-schemas flag, when provided, overrides this config value.


scopes? ​

optional scopes: string[]

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

OAuth scopes


selfSigned? ​

optional selfSigned: boolean

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

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


shortCode? ​

optional shortCode: string

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

SCAPI short code


siteId? ​

optional siteId: string

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

B2C Commerce site/channel ID


slasClientId? ​

optional slasClientId: string

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

SLAS client ID for shopper authentication


slasClientSecret? ​

optional slasClientSecret: string

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

SLAS client secret for private shopper clients


tenantId? ​

optional tenantId: string

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

Tenant/Organization ID for SCAPI


username? ​

optional username: string

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

Username for Basic auth (WebDAV)


webdavHostname? ​

optional webdavHostname: string

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

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


workingDirectory? ​

optional workingDirectory: string

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

Deprecated ​

Use projectDirectory instead