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

b2c_tooling_sdk.errors ​

Error types for B2C tooling operations.

Classes ​

HttpError ​

python
class HttpError(Exception)

Raised when an HTTP request fails.

Wraps the original httpx.Response for access to status, headers, and body. Mirrors HTTPError in the TypeScript SDK.

Attributes

NameTypeDescription
responseThe response object from the failed request.
methodHTTP method used for the request (GET, POST, PUT, ...).

NetworkError ​

python
class NetworkError(Exception)

Raised when a network-layer request fails.

Attributes

NameTypeDescription
kindNetworkErrorKindClassified network error kind.
operationDescription of the operation that failed.
hostTarget hostname.

Functions ​

classify_network_error ​

python
def classify_network_error(err: BaseException) -> NetworkErrorKind

Classify a transport failure into a NetworkErrorKind.

describe_network_error_kind ​

python
def describe_network_error_kind(kind: NetworkErrorKind) -> tuple[str, str]

Return a (summary, hint) pair for a network error kind.

is_network_error ​

python
def is_network_error(err: BaseException) -> bool

Return True for transport-level failures; False for HTTP/application errors.

HttpError always returns False so it passes through wrap_network_error untouched.

wrap_network_error ​

python
def wrap_network_error(err: BaseException, *, operation: str | None = None, host: str | None = None) -> BaseException

Wrap a transport failure in a NetworkError with actionable context.

Returns the wrapped error (or the original error unchanged if it is not a network error, or already a fully-contextualized NetworkError). This function does not raise — the caller must raise the result.

Attributes ​

NetworkErrorKind ​

python
NetworkErrorKind = Literal['timeout', 'connection-reset', 'connection-refused', 'dns', 'tls', 'aborted', 'unknown']