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 --scope project

Start a new Claude Code session in your project. Use --scope user instead for all projects.

Manual MCP setup

From your project directory:

bash
claude mcp add --transport stdio --scope project b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new session. Use --scope user instead for all projects. 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

From your project directory, run:

bash
gemini mcp add --scope project b2c-dx-mcp -- npx -y @salesforce/b2c-dx-mcp@latest

Start a new Gemini CLI session. Use --scope user instead for all projects. 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 / operations/jobs / siteArchiveImport

Function: siteArchiveImport()

siteArchiveImport(instance, target, options): Promise<SiteArchiveImportResult>

Defined in: packages/b2c-tooling-sdk/src/operations/jobs/site-archive.ts:130

Imports a site archive to a B2C Commerce instance.

Supports importing from:

  • A local directory (will be zipped automatically)
  • A local zip file
  • A Buffer containing zip data
  • A filename already on the instance (in Impex/src/instance/)

Buffer handling: When passing a Buffer, the archiveName option controls the contract:

  • Without archiveName: The buffer should contain archive entries without a root directory (e.g. libraries/mylib/library.xml). The SDK generates an archive name and wraps the contents under it.
  • With archiveName: The buffer must already be correctly structured with archiveName/ as the top-level directory. It is uploaded as-is.

Parameters

instance

B2CInstance

B2C instance to import to

target

Source to import (directory path, zip file path, Buffer, or remote filename)

string | Buffer<ArrayBufferLike> | { archiveName?: string; remoteFilename: string; }

options

SiteArchiveImportOptions & object = {}

Import options

Returns

Promise<SiteArchiveImportResult>

Import result with execution details

Throws

JobExecutionError if import job fails

Example

typescript
// Import from a local directory
const result = await siteArchiveImport(instance, './my-site-data');

// Import from a zip file
const result = await siteArchiveImport(instance, './export.zip');

// Import from a buffer (SDK wraps contents automatically)
const zip = new JSZip();
zip.file('libraries/mylib/library.xml', xmlContent);
const buffer = await zip.generateAsync({type: 'nodebuffer'});
const result = await siteArchiveImport(instance, buffer);

// Import from a buffer with explicit archive name (caller owns structure)
const zip = new JSZip();
zip.file('my-import/libraries/mylib/library.xml', xmlContent);
const buffer = await zip.generateAsync({type: 'nodebuffer'});
const result = await siteArchiveImport(instance, buffer, {
  archiveName: 'my-import'
});

// Import from existing file on instance
const result = await siteArchiveImport(instance, {
  remoteFilename: 'existing-archive.zip'
});