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

@salesforce/b2c-tooling-sdk / cli / MrtCommand

Abstract Class: MrtCommand<T> ​

Defined in: packages/b2c-tooling-sdk/src/cli/mrt-command.ts:60

Base command for Managed Runtime (MRT) operations.

MRT has two backends:

  • legacy — the MRT Cloud API (cloud.mobify.com), authenticated with a per-user API key (--api-key / ~/.mobify).
  • scapi — the SCAPI MRT backend, authenticated with a stateless OAuth flow (client-credentials or JWT Bearer) via Account Manager, reusing the same shortCode + tenant setup as other SCAPI commands. Each supported command maps to its own SCAPI API (bundle history/deploy use Storefront Deployments today; more MRT surfaces will be added over time).

Because SCAPI MRT reuses the SCAPI auth stack, this base extends OAuthCommand to inherit --client-id/--client-secret/--short-code/ --tenant-id/JWT flags plus getOAuthStrategy(), requireTenantId(), and getOrganizationId(). The legacy API-key path is preserved via getMrtAuth.

API key resolution order (legacy):

  1. --api-key flag
  2. MRT_API_KEY environment variable (SFCC_MRT_API_KEY also supported)
  3. ~/.mobify config file (api_key field), or ~/.mobify--[hostname] if --cloud-origin is set

Project/environment resolution order:

  1. --project (alias: --storefront) / --environment flags
  2. MRT_PROJECT / MRT_ENVIRONMENT environment variables (SFCC_-prefixed, MRT_STOREFRONT / SFCC_MRT_STOREFRONT, and MRT_TARGET also supported)
  3. dw.json (mrtProject / mrtEnvironment fields)

Cloud origin resolution:

  1. --cloud-origin flag
  2. MRT_CLOUD_ORIGIN environment variable (SFCC_MRT_CLOUD_ORIGIN also supported)
  3. dw.json (mrtOrigin field)
  4. Default: https://cloud.mobify.com

Backend selection:

  • --mrt-backend flag > MRT_BACKEND env (SFCC_MRT_BACKEND also supported) > mrtBackend dw.json > legacy.

Extends ​

Type Parameters ​

T ​

T extends typeof Command

Constructors ​

Constructor ​

new MrtCommand<T>(argv, config): MrtCommand<T>

Defined in: packages/b2c-tooling-sdk/src/cli/oauth-command.ts:52

Parameters ​

argv ​

string[]

config ​

Config

Returns ​

MrtCommand<T>

Inherited from ​

OAuthCommand.constructor

Properties ​

argv ​

argv: string[]

Defined in: node_modules/@oclif/core/lib/command.d.ts:12

Inherited from ​

OAuthCommand.argv


config ​

config: Config

Defined in: node_modules/@oclif/core/lib/command.d.ts:13

Inherited from ​

OAuthCommand.config


id ​

id: string | undefined

Defined in: node_modules/@oclif/core/lib/command.d.ts:75

Inherited from ​

OAuthCommand.id


parsed ​

parsed: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:76

Inherited from ​

OAuthCommand.parsed


aliases ​

static aliases: string[]

Defined in: node_modules/@oclif/core/lib/command.d.ts:16

An array of aliases for this command.

Inherited from ​

OAuthCommand.aliases


args ​

static args: ArgInput

Defined in: node_modules/@oclif/core/lib/command.d.ts:18

An order-dependent object of arguments for the command

Inherited from ​

OAuthCommand.args


baseFlags ​

static baseFlags: object

Defined in: packages/b2c-tooling-sdk/src/cli/mrt-command.ts:61

account-manager-host ​

account-manager-host: OptionFlag<string, CustomOptions>

api-key ​

api-key: OptionFlag<string, CustomOptions>

auth-methods ​

auth-methods: OptionFlag<string[], CustomOptions>

auth-scope ​

auth-scope: OptionFlag<string[], CustomOptions>

client-auth-method ​

client-auth-method: OptionFlag<"basic" | "basic-unencoded" | "body" | undefined, CustomOptions>

client-id ​

client-id: OptionFlag<string, CustomOptions>

client-secret ​

client-secret: OptionFlag<string, CustomOptions>

cloud-origin ​

cloud-origin: OptionFlag<string, CustomOptions>

config ​

config: OptionFlag<string | undefined, CustomOptions>

credentials-file ​

credentials-file: OptionFlag<string | undefined, CustomOptions>

debug ​

debug: BooleanFlag<boolean>

dotenv-file ​

dotenv-file: OptionFlag<string | undefined, CustomOptions>

environment ​

environment: OptionFlag<string, CustomOptions>

extra-body ​

extra-body: OptionFlag<string | undefined, CustomOptions>

extra-headers ​

extra-headers: OptionFlag<string | undefined, CustomOptions>

extra-query ​

extra-query: OptionFlag<string | undefined, CustomOptions>

instance ​

instance: OptionFlag<string | undefined, CustomOptions>

json ​

json: BooleanFlag<boolean>

jsonl ​

jsonl: BooleanFlag<boolean>

jwt-cert ​

jwt-cert: OptionFlag<string | undefined, CustomOptions>

jwt-key ​

jwt-key: OptionFlag<string | undefined, CustomOptions>

jwt-passphrase ​

jwt-passphrase: OptionFlag<string | undefined, CustomOptions>

lang ​

lang: OptionFlag<string | undefined, CustomOptions>

log-level ​

log-level: OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, CustomOptions>

mrt-backend ​

mrt-backend: OptionFlag<"scapi" | "auto" | "legacy", CustomOptions>

project ​

project: OptionFlag<string, CustomOptions>

project-directory ​

project-directory: OptionFlag<string, CustomOptions>

short-code ​

short-code: OptionFlag<string, CustomOptions>

tenant-id ​

tenant-id: OptionFlag<string | undefined, CustomOptions>

user-auth ​

user-auth: BooleanFlag<boolean>

Overrides ​

OAuthCommand.baseFlags


deprecateAliases? ​

static optional deprecateAliases: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:23

Emit deprecation warning when a command alias is used

Inherited from ​

OAuthCommand.deprecateAliases


deprecationOptions? ​

static optional deprecationOptions: Deprecation

Defined in: node_modules/@oclif/core/lib/command.d.ts:24

Inherited from ​

OAuthCommand.deprecationOptions


description ​

static description: string | undefined

Defined in: node_modules/@oclif/core/lib/command.d.ts:30

A full description of how to use the command.

If no summary, the first line of the description will be used as the summary.

Inherited from ​

OAuthCommand.description


enableJsonFlag ​

static enableJsonFlag: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:31

Inherited from ​

OAuthCommand.enableJsonFlag


examples ​

static examples: Example[]

Defined in: node_modules/@oclif/core/lib/command.d.ts:46

An array of examples to show at the end of the command's help.

IF only a string is provided, it will try to look for a line that starts with the cmd.bin as the example command and the rest as the description. If found, the command will be formatted appropriately.

EXAMPLES:
  A description of a particular use case.

    $ <%= config.bin => command flags

Inherited from ​

OAuthCommand.examples


flags ​

static flags: FlagInput

Defined in: node_modules/@oclif/core/lib/command.d.ts:48

A hash of flags for the command

Inherited from ​

OAuthCommand.flags


hasDynamicHelp ​

static hasDynamicHelp: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:49

Inherited from ​

OAuthCommand.hasDynamicHelp


help ​

static help: string | undefined

Defined in: node_modules/@oclif/core/lib/command.d.ts:50

Inherited from ​

OAuthCommand.help


hidden ​

static hidden: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:52

Hide the command from help

Inherited from ​

OAuthCommand.hidden


hiddenAliases ​

static hiddenAliases: string[]

Defined in: node_modules/@oclif/core/lib/command.d.ts:54

An array of aliases for this command that are hidden from help.

Inherited from ​

OAuthCommand.hiddenAliases


id ​

static id: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:56

A command ID, used mostly in error or verbose reporting.

Inherited from ​

OAuthCommand.id


plugin ​

static plugin: Plugin | undefined

Defined in: node_modules/@oclif/core/lib/command.d.ts:57

Inherited from ​

OAuthCommand.plugin


pluginAlias? ​

readonly static optional pluginAlias: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:58

Inherited from ​

OAuthCommand.pluginAlias


pluginName? ​

readonly static optional pluginName: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:59

Inherited from ​

OAuthCommand.pluginName


pluginType? ​

readonly static optional pluginType: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:60

Inherited from ​

OAuthCommand.pluginType


state? ​

static optional state: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:62

Mark the command as a given state (e.g. beta or deprecated) in help

Inherited from ​

OAuthCommand.state


strict ​

static strict: boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:64

When set to false, allows a variable amount of arguments

Inherited from ​

OAuthCommand.strict


summary? ​

static optional summary: string

Defined in: node_modules/@oclif/core/lib/command.d.ts:69

The tweet-sized description for your class, used in a parent-commands sub-command listing and as the header for the command help.

Inherited from ​

OAuthCommand.summary


usage ​

static usage: string | string[] | undefined

Defined in: node_modules/@oclif/core/lib/command.d.ts:73

An override string (or strings) for the default usage documentation.

Inherited from ​

OAuthCommand.usage

Methods ​

_run() ​

_run<R>(): Promise<R>

Defined in: packages/b2c-tooling-sdk/src/cli/mrt-command.ts:115

Warn once if any read is served while Managed Runtime is in read-only mode.

Type Parameters ​

R ​

R

Returns ​

Promise<R>

Overrides ​

OAuthCommand._run


baseCommandTest() ​

baseCommandTest(): void

Defined in: packages/b2c-tooling-sdk/src/cli/base-command.ts:793

Returns ​

void

Inherited from ​

OAuthCommand.baseCommandTest


error() ​

Call Signature ​

error(input, options): void

Defined in: node_modules/@oclif/core/lib/command.d.ts:90

Parameters ​
input ​

string | Error

options ​

object & PrettyPrintableError

Returns ​

void

Inherited from ​

OAuthCommand.error

Call Signature ​

error(input, options?): never

Defined in: node_modules/@oclif/core/lib/command.d.ts:94

Parameters ​
input ​

string | Error

options? ​

object & PrettyPrintableError

Returns ​

never

Inherited from ​

OAuthCommand.error


exit() ​

exit(code?): never

Defined in: node_modules/@oclif/core/lib/command.d.ts:98

Parameters ​

code? ​

number

Returns ​

never

Inherited from ​

OAuthCommand.exit


init() ​

init(): Promise<void>

Defined in: packages/b2c-tooling-sdk/src/cli/mrt-command.ts:301

Returns ​

Promise<void>

Overrides ​

OAuthCommand.init


jsonEnabled() ​

jsonEnabled(): boolean

Defined in: node_modules/@oclif/core/lib/command.d.ts:106

Determine if the command is being run with the --json flag in a command that supports it.

Returns ​

boolean

true if the command supports json and the --json flag is present

Inherited from ​

OAuthCommand.jsonEnabled


log() ​

log(message?, ...args?): void

Defined in: packages/b2c-tooling-sdk/src/cli/mrt-command.ts:135

Suppress human-readable logging in --json mode.

MRT commands emit progress/status lines via BaseCommand.log, which routes to the structured logger on stderr. When --json is set the caller wants machine-readable output only, so these lines are swallowed centrally here instead of guarding every call site with if (!this.jsonEnabled()).

This only affects this.log() (stderr diagnostics). Structured stdout output — tables and detail views written via ux.stdout — is untouched and must still be guarded by jsonEnabled() at its call site so it never corrupts the JSON payload on stdout.

Parameters ​

message? ​

string

args? ​

...unknown[]

Returns ​

void

Overrides ​

OAuthCommand.log


logToStderr() ​

logToStderr(message?, ...args?): void

Defined in: node_modules/@oclif/core/lib/command.d.ts:109

Parameters ​

message? ​

string

args? ​

...any[]

Returns ​

void

Inherited from ​

OAuthCommand.logToStderr


run() ​

abstract run(): Promise<any>

Defined in: node_modules/@oclif/core/lib/command.d.ts:114

actual command run code goes here

Returns ​

Promise<any>

Inherited from ​

OAuthCommand.run


warn() ​

warn(input): string | Error

Defined in: packages/b2c-tooling-sdk/src/cli/base-command.ts:439

Override oclif's warn() to use pino.

Parameters ​

input ​

string | Error

Returns ​

string | Error

Inherited from ​

OAuthCommand.warn


run() ​

static run<T>(this, argv?, opts?): Promise<ReturnType<T["run"]>>

Defined in: node_modules/@oclif/core/lib/command.d.ts:86

instantiate and run the command

Type Parameters ​

T ​

T extends Command

Parameters ​

this ​

(argv, config) => T

the command class

argv? ​

string[]

argv

opts? ​

LoadOptions

options

Returns ​

Promise<ReturnType<T["run"]>>

result

Inherited from ​

OAuthCommand.run