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

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.