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

SLAS Commands ​

Commands for managing Shopper Login and API Access Service (SLAS) clients. For client types, user roles, and shopper authentication flows, see Salesforce's Authorization for Shopper APIs.

Global SLAS Flags ​

These flags are available on all SLAS commands:

FlagEnvironment VariableDescription
--tenant-idSFCC_TENANT_ID(Required) SLAS tenant ID (organization ID)

Authentication ​

SLAS commands work out of the box using the CLI's built-in public client, which authenticates via browser login (Authorization Code + PKCE flow). No API client configuration is required for interactive use.

For automation or CI/CD, you can provide your own API client credentials.

Required Roles ​

Auth MethodRoleConfigured On
Built-in client (default)SLAS Organization AdministratorYour user account
User AuthenticationSLAS Organization AdministratorYour user account
Client CredentialsSandbox API UserThe API client

The role must have a tenant filter configured for the organization you wish to manage.

Configuration ​

bash
# No configuration needed — opens browser for login
b2c slas client list --tenant-id abcd_123

# Or provide your own client ID
b2c slas client list --tenant-id abcd_123 --client-id xxx

# Client Credentials (for automation)
export SFCC_CLIENT_ID=my-client
export SFCC_CLIENT_SECRET=my-secret
b2c slas client list --tenant-id abcd_123

For complete setup instructions, see the Authentication Guide.


b2c slas token ​

Get a SLAS shopper access token for testing APIs.

Shopper authorization, login, and token requests use the shared HTTP middleware. Custom headers configured through SFCC_EXTRA_HEADERS (a JSON object) or --extra-headers apply to every step of both guest and registered flows. Use --log-level debug to include SLAS response correlation IDs when diagnosing failures.

Usage ​

bash
b2c slas token --tenant-id <TENANT_ID> --site-id <SITE_ID>

Flags ​

FlagEnvironment VariableDescriptionRequired
--tenant-idSFCC_TENANT_IDSLAS tenant ID (organization ID)Yes
--site-idSFCC_SITE_IDSite/channel IDYes*
--slas-client-idSFCC_SLAS_CLIENT_IDSLAS client ID (auto-discovered if omitted)No
--slas-client-secretSFCC_SLAS_CLIENT_SECRETSLAS client secret (omit for public clients)No
--short-codeSFCC_SHORTCODESCAPI short codeYes
--redirect-uriRedirect URINo
--shopper-loginRegistered customer loginNo
--shopper-passwordRegistered customer password (prompted interactively if omitted)No

* --site-id can be auto-discovered from the SLAS client configuration when using auto-discovery.

Flows ​

The command automatically selects the appropriate authentication flow based on whether --shopper-login and --slas-client-secret are provided:

ScenarioFlow
Guest, no --slas-client-secretPublic client guest PKCE (authorization_code_pkce)
Guest, with --slas-client-secretPrivate client client_credentials
Registered (--shopper-login), no secretRegistered login + PKCE (authorization_code_pkce)
Registered (--shopper-login), with secretRegistered login + PKCE, plus client-secret Basic auth
No --slas-client-idAuto-discovers first public client via SLAS Admin API

Registered login uses PKCE on both public and private clients

The registered-customer flow is always PKCE-protected: the /oauth2/login step presents a code_challenge, so the token exchange always sends the matching code_verifier. A private SLAS client additionally authenticates with its secret (HTTP Basic). This is why the registered flow works against both public and private clients.

Examples ​

bash
# Guest token with auto-discovery (finds first public SLAS client)
b2c slas token --tenant-id abcd_123 --site-id RefArch

# Guest token with explicit public client (PKCE flow)
b2c slas token --slas-client-id my-client \
  --tenant-id abcd_123 --short-code kv7kzm78 --site-id RefArch

# Guest token with private client (client_credentials flow)
b2c slas token --slas-client-id my-client --slas-client-secret sk_xxx \
  --tenant-id abcd_123 --short-code kv7kzm78 --site-id RefArch

# Registered customer token
b2c slas token --tenant-id abcd_123 --site-id RefArch \
  --shopper-login user@example.com --shopper-password secret

# JSON output (includes refresh token, expiry, usid, etc.)
b2c slas token --tenant-id abcd_123 --site-id RefArch --json

# Use token in a subsequent API call
TOKEN=$(b2c slas token --tenant-id abcd_123 --site-id RefArch)
curl -H "Authorization: Bearer $TOKEN" \
  "https://kv7kzm78.api.commercecloud.salesforce.com/..."

Output ​

  • Normal mode: prints the raw access token to stdout (pipeable)
  • JSON mode (--json): returns full token details:
json
{
  "response": {
    "accessToken": "...",
    "refreshToken": "...",
    "expiresIn": 1800,
    "tokenType": "Bearer",
    "usid": "...",
    "customerId": "..."
  },
  "clientId": "...",
  "siteId": "RefArch",
  "isGuest": true
}

Configuration ​

These values can also be set in dw.json:

json
{
  "tenant-id": "abcd_123",
  "short-code": "kv7kzm78",
  "slas-client-id": "my-public-client",
  "site-id": "RefArch"
}

Existing Client Selection ​

The get, update, delete, and open commands use the configured slasClientId when their positional CLIENTID is omitted. The value can come from dw.json, SFCC_SLAS_CLIENT_ID, --slas-client-id, the active instance, or a configuration plugin. A positional CLIENTID takes precedence over every configured source.


b2c slas client list ​

List SLAS clients for a tenant.

Usage ​

bash
b2c slas client list --tenant-id <TENANT_ID>

Flags ​

FlagDescriptionRequired
--tenant-idSLAS tenant ID (organization ID)Yes

Examples ​

bash
# List all SLAS clients for a tenant
b2c slas client list --tenant-id abcd_123

# Output as JSON
b2c slas client list --tenant-id abcd_123 --json

# Using environment variables
export SFCC_TENANT_ID=abcd_123
b2c slas client list

Output ​

Displays a list of SLAS clients with:

  • Client ID
  • Name
  • Type (public/private)
  • Channels

b2c slas client create ​

Create or update a SLAS client.

Usage ​

bash
b2c slas client create [CLIENTID] --tenant-id <TENANT_ID> --channels <CHANNELS> --redirect-uri <URI>

Arguments ​

ArgumentDescriptionRequired
CLIENTIDSLAS client ID (generates UUID if omitted)No

Flags ​

FlagDescriptionDefault
--tenant-idSLAS tenant ID (organization ID)Required
--channelsSite IDs/channels (comma-separated)Required
--redirect-uriRedirect URIs (comma-separated)Required
--nameDisplay name for the clientAuto-generated
--scopesOAuth scopes for the client (comma-separated)
--default-scopesUse default shopper scopesfalse
--callback-uriCallback URIs for passwordless login
--secretClient secret (generated if omitted)Auto-generated
--publicCreate a public client (default is private)false
--[no-]create-tenantAutomatically create tenant if it doesn't existtrue

Examples ​

bash
# Create a private client with specific scopes
b2c slas client create --tenant-id abcd_123 \
  --channels RefArch \
  --scopes sfcc.shopper-products,sfcc.shopper-search \
  --redirect-uri http://localhost:3000/callback

# Create a named client with custom ID
b2c slas client create my-client-id --tenant-id abcd_123 \
  --name "My Application" \
  --channels RefArch \
  --scopes sfcc.shopper-products \
  --redirect-uri http://localhost:3000/callback

# Create a public client
b2c slas client create --tenant-id abcd_123 \
  --channels RefArch \
  --default-scopes \
  --redirect-uri http://localhost:3000/callback \
  --public

# Output as JSON (useful for capturing the generated secret)
b2c slas client create --tenant-id abcd_123 \
  --channels RefArch \
  --default-scopes \
  --redirect-uri http://localhost:3000/callback \
  --json

Notes ​

  • If --secret is not provided for a private client, one will be generated
  • The generated secret is only shown once during creation
  • Use --default-scopes for common shopper API access scopes
  • By default, the tenant is automatically created if it doesn't exist. Use --no-create-tenant to disable this behavior if you prefer to manage tenants separately

b2c slas client get ​

Get details of a SLAS client.

Usage ​

bash
b2c slas client get [CLIENTID] --tenant-id <TENANT_ID>

Arguments ​

ArgumentDescriptionRequired
CLIENTIDSLAS client ID to retrieve. Defaults to the configured slasClientIdNo

Examples ​

bash
# Get details for the configured SLAS client
b2c slas client get --tenant-id abcd_123

# Override the configured SLAS client ID
b2c slas client get my-client-id --tenant-id abcd_123

# Output as JSON
b2c slas client get my-client-id --tenant-id abcd_123 --json

Output ​

Displays detailed information about the client including:

  • Client ID and name
  • Type (public/private)
  • Channels
  • Scopes
  • Redirect URIs
  • Callback URIs

b2c slas client update ​

Update an existing SLAS client.

Usage ​

bash
b2c slas client update [CLIENTID] --tenant-id <TENANT_ID> [FLAGS]

Arguments ​

ArgumentDescriptionRequired
CLIENTIDSLAS client ID to update. Defaults to the configured slasClientIdNo

Flags ​

FlagDescription
--tenant-id(Required) SLAS tenant ID
--nameUpdate display name
--secretRotate client secret
--channelsUpdate channels (comma-separated)
--scopesUpdate scopes (comma-separated)
--redirect-uriUpdate redirect URIs (comma-separated)
--callback-uriUpdate callback URIs (comma-separated)
--replaceReplace list values instead of appending

Examples ​

bash
# Update the configured client name
b2c slas client update --tenant-id abcd_123 --name "New Name"

# Override the configured SLAS client ID
b2c slas client update my-client-id --tenant-id abcd_123 --name "New Name"

# Rotate client secret
b2c slas client update my-client-id --tenant-id abcd_123 --secret new-secret-value

# Add scopes (appends to existing)
b2c slas client update my-client-id --tenant-id abcd_123 --scopes sfcc.shopper-baskets

# Replace all scopes
b2c slas client update my-client-id --tenant-id abcd_123 \
  --scopes sfcc.shopper-products,sfcc.shopper-baskets \
  --replace

# Replace all channels
b2c slas client update my-client-id --tenant-id abcd_123 \
  --channels RefArch,SiteGenesis \
  --replace

Notes ​

  • By default, list values (channels, scopes, URIs) are appended to existing values
  • Use --replace to replace all values instead of appending
  • Secret rotation takes effect immediately

b2c slas client delete ​

Delete a SLAS client.

Usage ​

bash
b2c slas client delete [CLIENTID] --tenant-id <TENANT_ID>

Arguments ​

ArgumentDescriptionRequired
CLIENTIDSLAS client ID to delete. Defaults to the configured slasClientIdNo

Examples ​

bash
# Delete the configured client
b2c slas client delete --tenant-id abcd_123

# Override the configured SLAS client ID
b2c slas client delete my-client-id --tenant-id abcd_123

# Output as JSON
b2c slas client delete my-client-id --tenant-id abcd_123 --json

Notes ​

  • Deletion is permanent and cannot be undone
  • Active sessions using this client will be invalidated

b2c slas client open ​

Open the SLAS Admin UI for a client in your browser.

Usage ​

bash
b2c slas client open [CLIENTID] --tenant-id <TENANT_ID>

Arguments ​

ArgumentDescriptionRequired
CLIENTIDSLAS client ID to open in the admin UI. Defaults to the configured slasClientIdNo

Flags ​

FlagEnvironment VariableDescriptionRequired
--tenant-idSFCC_TENANT_IDSLAS tenant ID (organization ID)Yes
--short-codeSFCC_SHORTCODESCAPI short codeYes*
--slas-client-idSFCC_SLAS_CLIENT_IDConfigured SLAS client IDNo

* --short-code can be set via SFCC_SHORTCODE environment variable or short-code in dw.json.

Examples ​

bash
# Open the SLAS Admin UI for the configured client
b2c slas client open --tenant-id abcd_123

# Override the configured SLAS client ID
b2c slas client open my-client-id --tenant-id abcd_123

# With explicit short code
b2c slas client open my-client-id --tenant-id abcd_123 --short-code kv7kzm78

Notes ​

  • Opens the SLAS Admin UI in your default browser
  • The URL is also printed to the console if the browser fails to open