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

@salesforce/b2c-tooling-sdk / clients / WebDavClient

Class: WebDavClient ​

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:86

Constructors ​

Constructor ​

new WebDavClient(hostname, auth, options?): WebDavClient

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:99

Creates a new WebDAV client.

Parameters ​

hostname ​

string

WebDAV hostname (may differ from API hostname)

auth ​

AuthStrategy

Authentication strategy to use for requests

options? ​

WebDavClientOptions

Optional configuration including middleware registry and TLS dispatcher

Returns ​

WebDavClient

Methods ​

buildUrl() ​

buildUrl(path): string

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:116

Builds the full URL for a WebDAV path.

Parameters ​

path ​

string

Path relative to /webdav/Sites/

Returns ​

string

Full URL


copy() ​

copy(source, destination, overwrite): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:440

Copies a file or directory.

Parameters ​

source ​

string

Source path relative to /webdav/Sites/

destination ​

string

Destination path relative to /webdav/Sites/

overwrite ​

boolean = true

Whether to overwrite if destination exists (default: true)

Returns ​

Promise<void>

Example ​

ts
await client.copy('Cartridges/v1/cartridge', 'Cartridges/v2/cartridge');

delete() ​

delete(path): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:382

Deletes a file or directory.

Parameters ​

path ​

string

Path to delete

Returns ​

Promise<void>

Throws ​

Error if the path doesn't exist (404) or deletion fails

Example ​

ts
await client.delete('Cartridges/v1/old-cartridge');

exists() ​

exists(path): Promise<boolean>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:486

Checks if a path exists.

Parameters ​

path ​

string

Path to check

Returns ​

Promise<boolean>

true if exists, false otherwise


get() ​

get(path): Promise<ArrayBuffer>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:363

Downloads a file.

Parameters ​

path ​

string

Path to download

Returns ​

Promise<ArrayBuffer>

File content as ArrayBuffer

Example ​

ts
const content = await client.get('Cartridges/v1/app.zip');

mkcol() ​

mkcol(path): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:312

Creates a directory (collection).

Parameters ​

path ​

string

Path to create

Returns ​

Promise<void>

Throws ​

Error if creation fails (except 405 which means already exists)

Example ​

ts
await client.mkcol('Cartridges/v1');

move() ​

move(source, destination, overwrite): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:465

Moves (renames) a file or directory.

Parameters ​

source ​

string

Source path relative to /webdav/Sites/

destination ​

string

Destination path relative to /webdav/Sites/

overwrite ​

boolean = true

Whether to overwrite if destination exists (default: true)

Returns ​

Promise<void>

Example ​

ts
await client.move('Cartridges/v1/old-name', 'Cartridges/v1/new-name');

propfind() ​

propfind(path, depth): Promise<PropfindEntry[]>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:403

Lists directory contents.

Parameters ​

path ​

string

Directory path

depth ​

PROPFIND depth (0, 1, or 'infinity')

"0" | "1" | "infinity"

Returns ​

Promise<PropfindEntry[]>

Array of entries in the directory

Example ​

ts
const entries = await client.propfind('Cartridges');
for (const entry of entries) {
  console.log(entry.displayName, entry.isCollection);
}

put() ​

put(path, content, contentType?): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:338

Uploads a file.

Parameters ​

path ​

string

Destination path

content ​

File content as Buffer, Blob, or string

string | Buffer<ArrayBufferLike> | Blob

contentType? ​

string

Optional content type header

Returns ​

Promise<void>

Example ​

ts
await client.put('Cartridges/v1/app.zip', zipBuffer, 'application/zip');

request() ​

request(path, init?): Promise<Response>

Defined in: packages/b2c-tooling-sdk/src/clients/webdav.ts:147

Makes a raw WebDAV request.

Parameters ​

path ​

string

Path relative to /webdav/Sites/

init? ​

RequestInit

Fetch init options

Returns ​

Promise<Response>

Response from the server