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 / cli / BackendDispatcher

Class: BackendDispatcher<S> ​

Defined in: packages/b2c-tooling-sdk/src/compat/dispatcher.ts:87

Stateful router that runs SCAPI optimistically and falls back to OCAPI once on a safe capability/auth/request rejection, caching the choice for the lifetime of the dispatcher. See the module-level docs for the full rationale.

Construct one per logical operation (e.g. one per CLI command run, or one per VSCode user-initiated action). Sharing a dispatcher across unrelated operations is fine but not required.

Type Parameters ​

S ​

S

The SCAPI ops bundle type (e.g., ScapiJobsOps).

Constructors ​

Constructor ​

new BackendDispatcher<S>(preference, createScapi, domainName): BackendDispatcher<S>

Defined in: packages/b2c-tooling-sdk/src/compat/dispatcher.ts:101

Parameters ​

preference ​

ApiBackendPreference

User preference (auto | scapi | ocapi).

createScapi ​

() => S | undefined

Lazily builds the SCAPI ops bundle. Returns undefined when SCAPI is not configured (shortCode/tenantId/auth missing).

domainName ​

string

Used in fallback log messages (e.g. 'jobs').

Returns ​

BackendDispatcher<S>

Throws ​

Error if preference === 'scapi' but createScapi() returns undefined — explicit SCAPI without configuration is a hard error.

Accessors ​

active ​

Get Signature ​

get active(): ResolvedBackend | undefined

Defined in: packages/b2c-tooling-sdk/src/compat/dispatcher.ts:119

Backend that has handled requests so far, or undefined if none yet.

Returns ​

ResolvedBackend | undefined

Methods ​

run() ​

run<T>(branches): Promise<T>

Defined in: packages/b2c-tooling-sdk/src/compat/dispatcher.ts:128

Runs the operation against the resolved backend. If unresolved (auto with SCAPI configured), tries SCAPI first; on a safe fallback trigger, falls back to OCAPI and caches the choice. Ambiguous failures propagate.

Type Parameters ​

T ​

T

Parameters ​

branches ​

DispatchBranches<S, T>

Returns ​

Promise<T>