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

Python SDK ​

A Python SDK for Salesforce B2C Commerce tooling — authentication, configuration resolution, typed OCAPI/SCAPI clients, WebDAV, and higher-level operations for code deployment, jobs, sites, catalogs, Business Manager users/roles, sandboxes, metrics, and logs.

It is a faithful port of the @salesforce/b2c-tooling-sdk TypeScript SDK. The concepts, module layout, and public surface mirror the TypeScript library — only the syntax is Pythonic (async/await, dataclasses, snake_case).

Status

Alpha, under active development. The public API mirrors the TypeScript SDK but may still change.

The interoperability guarantee ​

The Python SDK shares the same on-disk state as the B2C CLI, byte-for-byte:

  • the same persisted auth-session store (auth-sessions.json in the oclif data directory for the @salesforce/b2c-cli application), and
  • the same configuration files (dw.json, ~/.mobify, settings.json).

That means a token minted by the CLI (b2c auth login) works from Python, and a token refreshed from Python is visible to the CLI. You can authenticate interactively once with the CLI and then run non-interactive Python automation against the same session. See CLI Interoperability for the full story.

Installation ​

Note: installing from GitHub is a temporary arrangement during development. The package is not yet published to PyPI; once it is, the install will simply be pip install salesforce-b2c-tooling-sdk.

Install the latest version straight from main — pip builds it from source (pure Python, no compilers needed):

bash
pip install "git+https://github.com/SalesforceCommerceCloud/b2c-developer-tooling.git@main#subdirectory=python/b2c-tooling-sdk"

Pin to a specific release tag:

bash
pip install "git+https://github.com/SalesforceCommerceCloud/b2c-developer-tooling.git@<tag>#subdirectory=python/b2c-tooling-sdk"

The importable package is b2c_tooling_sdk; the distribution name is salesforce-b2c-tooling-sdk. Python 3.11+ is required.

30-second quickstart (async) ​

resolve_config() reads dw.json / ~/.mobify (and any CLI-managed session), and create_b2c_instance() gives you typed, authenticated clients.

python
import asyncio

from b2c_tooling_sdk import resolve_config
from b2c_tooling_sdk.operations.code import list_code_versions


async def main() -> None:
    config = await resolve_config()
    instance = config.create_b2c_instance()

    versions = await list_code_versions(instance)
    for version in versions:
        print(version.id, "active" if version.active else "")


asyncio.run(main())

Same thing, synchronously ​

Every public callable has a blocking twin under b2c_tooling_sdk.sync with an identical signature minus await. Import from b2c_tooling_sdk.sync and drop the async/await:

python
from b2c_tooling_sdk.sync import resolve_config, list_code_versions

config = resolve_config()  # blocks
instance = config.create_b2c_instance()

for version in list_code_versions(instance):  # blocks
    print(version.id, "active" if version.active else "")

All sync calls run on one shared background event loop, so token caching and single-flight semantics are preserved. See the Synchronous API guide for details and caveats.

Where to go next ​

License ​

Apache-2.0.