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

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.

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

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

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

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

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


cartridges? ​

optional cartridges: string[]

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

Cartridge names to include in deploy/watch operations


catalogs? ​

optional catalogs: string[]

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

Catalog IDs for WebDAV browsing


certificate? ​

optional certificate: string

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

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

Passphrase for the certificate


cipHost? ​

optional cipHost: string

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

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

Default content library ID for content export/list commands


docsCategories? ​

optional docsCategories: string[]

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

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

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

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

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

MRT API key


mrtBackend? ​

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

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

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

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


mrtOrigin? ​

optional mrtOrigin: string

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

MRT API origin URL override


mrtProject? ​

optional mrtProject: string

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

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

Starting directory for config file search and project-relative operations


realm? ​

optional realm: string

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

Default ODS realm for sandbox operations


safety? ​

optional safety: object

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

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

ODS API hostname


scapiSchemas? ​

optional scapiSchemas: string[]

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

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

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

Deprecated ​

Use projectDirectory instead