Skip to content
Back to skills

S32ct Distributions

ASecurity

Explains how S32 Configuration Tools ships on a host (standalone desktop vs. S32DS-integrated), what the MCP auto-discovers at startup, and how each distribution's headless CLI prefix differs. Use when the user asks "which S32CT is installed", "why does the command hang on -data", "toolsc.exe vs s32dsc.exe", or when hand-building a raw command line. Every other s32ct-* skill assumes this reference.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 15, 2026
toolspythonrails

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 15, 2026

npx -y skills add nxp-agentic-ai/s32-ds-ai-support --skill s32ct-distributions --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of S32ct Distributions?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for S32ct Distributions
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nxp-agentic-ai-s32ct-distributions/badge)](https://www.skillsdirectory.com/skills/nxp-agentic-ai-s32ct-distributions)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: s32ct-distributions
description: >
  Explains how S32 Configuration Tools ships on a host (standalone desktop
  vs. S32DS-integrated), what the MCP auto-discovers at startup, and how
  each distribution's headless CLI prefix differs. Use when the user asks
  "which S32CT is installed", "why does the command hang on -data",
  "toolsc.exe vs s32dsc.exe", or when hand-building a raw command line.
  Every other s32ct-* skill assumes this reference.
license: LA_OPT_Online Code Hosting NXP_Software_License
metadata:
  author: NXP
  version: "1.0.0"
  product: s32ct
  tags: '[s32ct, headless, configuration-tools, distributions, launcher, reference]'
---

# S32CT Distributions

S32 Configuration Tools (S32CT) ships in two interchangeable forms on the
same host: the standalone **desktop** product and the **S32DS-integrated**
Eclipse plugin set. Both speak the same headless CLI grammar, but the
launcher binary, the launcher `.ini`, and the mandatory-argument shape
differ. The MCP auto-discovers both at startup and emits the correct
prefix transparently, so most agents never have to think about it. This
skill is the canonical reference for the underlying behaviour.

## When to use

Use this skill when:
- The user asks which S32CT distribution is active or installed.
- A raw command line hangs, exits with code 13, or fails without an
  error message.
- Hand-building a headless invocation outside the typed MCP wrappers.
- Writing host-portable recipes that must survive on either variant.

Do **not** use this skill for:
- Running a code-generation workflow - use `s32ct-generate-code`.
- Probing the installed version - use `s32ct-get-version`.
- Bootstrapping a GTM use-case - use `s32ct-gtm-create-from-usecase`.

## The two distributions

| Attribute | `desktop` (standalone) | `integrated_s32ds` (Eclipse plugin) |
|---|---|---|
| Typical install path | `C:/NXP/S32ConfigTools.<release>` | `C:/NXP/S32DS.<x>.<y>` |
| Launcher | `toolsc.exe` | `s32dsc.exe` |
| Launcher `.ini` | `tools.ini` | `s32ds.ini` |
| MCU data root | `%ProgramData%/NXP/mcu_data_<release>` | `<install>/eclipse/mcu_data` |
| `-data <workspace>` | optional (auto-retry on error) | **mandatory** |
| Shipped as | the S32CT product itself | part of S32 Design Studio |

Both ship every documented headless tool (Pins, Clocks, Peripherals, DCD,
IVT, eFUSE, GTM, QuadSPI, FFC) and accept the same `-HeadlessTool`,
`-Load`, `-EmptyConfig`, `-MCU`, `-SDKVersion`, `-ExportAll`,
`-ApplyUseCase`, `-SetValue`, `-GetValue` arguments.

The MCU data package shipped with each distribution **may differ in
content** - for example, some MCU folders carry GTM use-case `.mex`
templates only in the desktop variant. Always discover use-cases via
`nxp_s32ct_execute_action(action_name="s32ct.gtm_list_usecases", params={"mcu": ...})`
rather than assuming a fixed file layout.

## Available Capabilities

| Type | Name | Invocation |
|------|------|------------|
| MCP tool | `s32ct.env_status` | Returns active `distribution`, `version`, `selection_reason` |
| MCP tool | `s32ct.env_installs` | Lists every discovered install; flags which is selected |
| MCP tool | `s32ct.env_version` | Distribution-aware version probe |
| Resource | `s32ct://info` | JSON status + `discovered_installs` array |
| Resource | `skill://nxp_s32ct/s32ct-distributions` | Auto-loaded on trigger |

## Headless CLI prefix per distribution

Both prefixes come verbatim from the *S32CT - DS Command Line* PDF
(NXP, 2025-11-21). The MCP emits exactly these forms.

### Desktop (standalone)

```
toolsc.exe -noSplash \
          --launcher.ini <tools.ini> \
          -application com.nxp.swtools.framework.application \
          -consoleLog \
          <tool commands>
```

- `--launcher.ini <path>` is space-separated (matches the product doc).
- `-consoleLog` forces stdout/stderr flow.
- `-data <workspace>` is **not** required. The MCP auto-retries with a
  temp workspace only if a call reports
  `instance data location has not been specified`.

### Integrated S32DS

```
s32dsc.exe -noSplash \
          --launcher.ini <s32ds.ini> \
          -application com.nxp.swtools.framework.application \
          -consoleLog \
          -data <workspace> \
          <tool commands>
```

- `-noSplash` comes **first**.
- `--launcher.ini <path>` is **space-separated**, not `=`-joined.
- `-data <workspace>` is **mandatory** - without it the Eclipse launcher
  blocks on the interactive workspace-selection dialog and hangs
  silently.
- The MCP injects a stable per-host workspace automatically
  (`%LOCALAPPDATA%/S32CT-MCP/workspace` on Windows,
  `$HOME/.cache/s32ct-mcp/workspace` on POSIX).

### Why the difference matters

- Integrated `s32dsc.exe` invoked **without** `-data <ws>` -> launcher
  hangs on the workspace dialog. No error output.
- Wrong launcher + wrong `.ini` combination -> Equinox launcher rejects
  the arguments and exits with code 13 (or similar).

## MCP discovery and selection

At startup, `mcp_s32ct` runs `discover_installs()` which scans the
standard NXP roots (`C:/NXP`, `%ProgramFiles%/NXP`, `%LOCALAPPDATA%/NXP`,
`/opt/nxp`, `$HOME/NXP`) one level deep, identifies every install
matching either layout, and stores them in a stable ordering.
`select_install()` then applies:

1. **Explicit YAML override** (`s32ct.settings.installation_path`) wins.
   Accepted shapes:
   - Desktop root - `C:/NXP/S32ConfigTools.2026.R1.9`
   - S32DS root - `C:/NXP/S32DS.3.6.5` *(recommended for integrated)*
   - S32DS eclipse subfolder - `C:/NXP/S32DS.3.6.5/eclipse` *(advanced)*
2. Otherwise the newest discovered `desktop` install.
3. Otherwise the newest discovered `integrated_s32ds` install.
4. Otherwise the server still starts; the next tool call fails with an
   actionable error.

`S32CTContext` carries the resolved `distribution` (`"desktop"` |
`"integrated_s32ds"` | `"unknown"`) and the launcher pair. Every tool
implementation calls `_build_prefix(launcher, tools_ini, distribution)`
which emits the right form per the table above.

## Quickstart

### 1. Confirm the active distribution

```python
nxp_s32ct_execute_action(action_name="s32ct.env_status", params={})
# -> {"distribution": "desktop", "version": "2026.R1.9", ...}
```

### 2. List all discovered installs (optional)

```python
nxp_s32ct_execute_action(action_name="s32ct.env_installs", params={})
```

### 3. Build a raw command line by hand (only if unavoidable)

Take the `distribution`, `launcher`, and `tools_ini` from step 1 and pick
the matching prefix from the tables above. Append the `<tool commands>`
portion exactly as documented in the *S32CT - DS Command Line* PDF - it
is identical across both distributions.

Prefer the typed wrappers (`nxp_s32ct_execute_action` with the appropriate
`action=` / `tool_name=`) whenever possible; they are portable across
both distributions.

## Guardrails

**Scope**
- Read-only reference. This skill does not launch any process or write
  any file.

**Destructive actions**
- None.

**Refuse-and-escalate**
- If `s32ct.env_status` reports `distribution == "unknown"` and no
  install is discovered, stop and ask the user to install S32CT or to
  set `s32ct.settings.installation_path` explicitly.

## Validation loop

1. `nxp_s32ct_execute_action(action_name="s32ct.env_status", params={})` returns `distribution in {"desktop",
   "integrated_s32ds"}`. **Pass** if true.
2. The reported `launcher` file exists on disk. **Pass** if true.
3. The reported `tools_ini` (or `s32ds.ini`) file exists on disk.
   **Pass** if true.
4. `nxp_s32ct_execute_action(action_name="s32ct.env_version", params={})` returns a non-empty version string.
   **Pass** if true.

If any step fails, escalate to the user with the failing field and the
searched paths.

## Out of scope

- Installing or upgrading S32CT itself.
- Discovering installs beyond one level deep under the standard roots.
- Editing `.mex` projects, generating code, applying GTM use-cases -
  those are separate skills.

## See Also

- Related skills: `s32ct-get-version`, `s32ct-generate-code`,
  `s32ct-gtm-create-from-usecase`.
- Terminology tip: "integrated S32CT" / "S32CT inside Design Studio"
  -> `integrated_s32ds`; "standalone tool" / "S32ConfigTools" ->
  `desktop`.
- A host can have **both** distributions installed simultaneously; only
  one is active at a time (the `selected` one). Use
  `s32ct.env_installs` to inspect the full set.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.