Agent Skills: CIP analytics

Run analytics reports and SQL queries against B2C Commerce Intelligence data using the b2c CLI. Use this skill whenever the user needs sales analytics, search query performance metrics, payment data, or KPI exports, OR technical/developer analytics such as SCAPI/OCAPI request volume, API error rates, response-time/latency distributions, cache hit ratios, or SFRA controller health. Also use when they need to discover available data tables, run custom SQL, or pull aggregate reports — even if they just say "show me sales data", "what are our top search terms", or "which SCAPI endpoints are slow or erroring".

UncategorizedID: salesforcecommercecloud/b2c-developer-tooling/b2c-cip

Install this agent skill to your local

pnpm dlx add-skill https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/tree/HEAD/skills/b2c-cli/skills/b2c-cip

Skill Files

Browse the full folder contents for b2c-cip.

Download Skill

Loading file tree…

skills/b2c-cli/skills/b2c-cip/SKILL.md

Skill Metadata

Name
b2c-cip
Description
Query CIP/CCAC sales, merchandising, payment, traffic, and API/controller analytics with the B2C CLI or MCP. Discover reports/tables, scope SQL, export results, and resolve analytics access.

CIP analytics

Use warehouse analytics for trends; use SCAPI/logs for current records and immediate diagnosis. If b2c is unavailable, use npx @salesforce/b2c-cli.

Choose the surface

  • Prefer MCP cip_discover / cip_query when available. Read skill://mcp/cip/SKILL.md before querying and pass skillRead: true. Discovery/config inspection is ungated. No terminal or token export needed.
  • Use CLI for explicit CLI requests, automation, or larger local CSV/JSON exports. MCP limits results to 500 rows / 24 KB; truncated means incomplete output, and rowCount counts returned rows. CLI defaults differ: date flags use the current month unless overridden. Set explicit dates for the user's task.
  • Both surfaces use the same reports and toolkit configuration. Do not run both to repeat a successful result.

Configuration and access

Reuse resolved tenantId, clientId, clientSecret from dw.json, environment, instance selection, and configuration plugins. Use masked b2c setup inspect only if target/access is unclear; ask for missing values instead of guessing. Do not read secret files or export tokens for normal analytics requests.

Requires Account Manager client credentials and the Salesforce Commerce API role with the target tenant in its tenant filter. User/SLAS/JWT flows do not apply. Overrides:

| Value | CLI / environment | | --- | --- | | Tenant | --tenant-id (--tenant) / SFCC_TENANT_ID | | Client | --client-id / SFCC_CLIENT_ID | | Secret | --client-secret / SFCC_CLIENT_SECRET | | Analytics host | --cip-host / SFCC_CIP_HOST | | Force staging analytics | --staging / SFCC_CIP_STAGING |

Tenants ending _prd select production analytics; other tenants select staging. Explicit host configuration wins. Staging analytics is a destination, not an instruction to change the target instance. Non-production data requires 26.1+ Enable Reports & Dashboards Data Tracking. Production tenants in test realms can also need staging analytics. Dashboard: https://ccac.stg.analytics.commercecloud.salesforce.com.

Missing configuration/availability: analytics guide. Resolution details: b2c-cli/b2c-config. Read only the relevant section.

Discover and execute

  1. List/search reports; inspect the selected report's parameters. MCP report details also supply tables and available result notes.
  2. Fix site/date scope. Warehouse nsite_id often resembles Sites-Example-Site; verify it in ccdw_dim_site rather than constructing it from a SCAPI site ID.
  3. Run the report. Preview SQL only to adapt it or resolve an unclear definition. Inspect table columns when custom SQL needs them; avoid exhaustive browsing.
b2c cip report list --category "Sales Analytics"
b2c cip report sales-analytics --describe
b2c cip report sales-analytics --site-id Sites-Example-Site --from 2026-09-01 --to 2026-09-07

# Existing report does not fit: inspect the relevant table, then adapt SQL.
b2c cip tables --pattern "ccdw_aggr_sales%"
b2c cip describe ccdw_aggr_sales_summary
b2c cip report sales-analytics --site-id Sites-Example-Site --from 2026-09-01 --to 2026-09-07 --sql

# Execute a reviewed query; CLI replaces <FROM>/<TO> date placeholders.
b2c cip query --file ./query.sql --from 2026-09-01 --to 2026-09-07 --format csv > sales.csv

Raw SQL also accepts a positional query or stdin. MCP SQL must contain literal dates; placeholder substitution is a CLI feature. Preserve exit status/errors when redirecting output. --format table|csv|json controls report/query output; --json uses the CLI's standard JSON envelope.

Select technical reports

| Question | Report / constraint | | --- | --- | | Slow SCAPI endpoints | scapi-latency-distribution; histogram buckets describe a distribution, not exact percentiles | | HTTP failures | scapi-error-rate-by-status --status-class 5xx | | Cache effectiveness | scapi-cache-hit-ratio | | Integration client usage | ocapi-client-usage | | SFRA controllers | controller-health-scorecard, controller-error-rate-trend; site required |

SCAPI traffic can be headless or unassigned. Omit optional site filters only for an intended all-site analysis; explain scope. Discover exact parameters with --describe instead of inventing flags. All examples require a chosen date window.

Query and interpret

Filter dates/sites and select needed columns; LIMIT alone does not bound database work. Prefer aggregate tables over fact joins. Use summed revenue / summed orders for period AOV, not daily averages. Preserve null ratios, missing dates, currency, timezone, and coverage limits. Latest event date is not ingestion freshness.

Safety Mode applies; CIP uses POST even for SELECT/metadata. Do not bypass a block. For 401/403, check credentials, role, and tenant filter without inferring that every denial is a missing role. For quota/timeouts, narrow the window or query; no retry loops. Official access and service limits.

Conditional references

Read a matching section only when the task needs it:

Stop once the requested result and material limitations are established.