> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed in the StateSet documentation, release by release — new references, corrected content, navigation changes.

Changes to this documentation site, newest first. Each entry is what a reader would notice: new
references, corrected content, navigation changes.

<Note>
  This is the changelog of the **documentation**. For changes to the APIs themselves — the ones a
  caller has to adapt to — see each product's own changelog: the
  [StateSet One API changelog](/api-reference/changelog), or the endpoints the Temporal Engine
  (`GET /v1/system/changelog`) and the Computer Use platform (`GET /api/v1/system/changelog`)
  publish for exactly that purpose.
</Note>

<Update label="Unreleased" />

<Update label="v2.3.0" description="2026-08-31">
  #### Added

  * **A real 404 page** (instead of a silent redirect home) that routes lost readers to the API router, host status, and Getting Help; **last-modified timestamps on every page**; a search prompt; dark branded social-card thumbnails.
  * [**Launch a brand that runs itself**](/guides/launch-a-brand-autonomously) — the capstone guide: onboard across six services, connect the commerce stack, put agents on every channel, gate what moves money, measure outcomes, and close the improvement loop. Six phases, every one linking to a walkthrough verified against the running service, with a plain table of what "autonomous" means and where the human controls sit.
  * `UPSTREAM-FINDINGS.md` — every verified server-side issue from the grounding pass, one paste-ready section per repo.
</Update>

<Update label="v2.2.0" description="2026-08-31">
  #### Added

  * **Sandbox API surface tripled** — the tab now documents the 49 operations the live controller serves (executions, pause/resume, fork/promote, the full file toolkit, desktop control, secrets, API keys, usage, webhooks), from the server's own `/openapi.json` merged with six routes it serves but does not publish (verified live). Was 17. The tab gains an overview, and the host-status and API-history pages now refresh themselves weekly via CI.

  #### Fixed

  * **Every documented SDK call now resolves against the shipped SDKs** — JavaScript 415/415 (was 47%), Python 32/32 (was 57%), stateset-agents imports 49/49. Samples for unshipped surface are rewritten to the real method name or to the REST call, with a note where SDK support has not shipped.
  * **Voice and Sandbox end-to-end guides** — [Put an agent on the phone](/guides/voice-first-phone-agent) (web call from the browser first, then a real number, with the DNC/quiet-hours gates explained) and [Give your agent an isolated runtime](/guides/sandbox-first-runtime). Every engine now has an end-to-end guide.
  * [**Getting Help**](/support) — where to ask, what to check first, and the dispute process.
  * The API router's key table gains a **"where the key comes from"** column — the mint endpoint where one exists (Voice, Temporal, EDI, Computer Use), the app or onboarding flow where it doesn't — and a deprecation-policy bullet (the `Deprecation` header, and per-API history pages as the migration diff).
</Update>

<Update label="v2.1.0" description="2026-08-31">
  #### Fixed

  * **Zero D-grade reference pages remain.** Voice's 17 untyped responses are transcribed from the handlers (four list endpoints the spec declared as bare arrays actually return `{ok, tenant, count, …}` envelopes; the two WebSocket routes now describe their real frame protocols). The final ten stragglers across NSR, Computer Use, EDI, Temporal and Agents are typed from source — including NSR's model export documented as the honest `501` it is, and Computer Use's transcript/export as the `text/markdown` and `text/csv` they return.
  * Pages whose response is a non-JSON scalar (a transcript, a CSV export, TwiML, an event stream) state the content type instead of warning that "the server returns JSON".
  * Every per-API history entry links to the reference page it added.

  #### Fixed

  * Install commands for `@stateset/icommerce-skills` now lead with the repository (the package is not yet on npm), and every page whose example imports an unpublished SDK says so up front instead of letting the install fail.

  #### Added

  * [**Brand Onboarding**](/stateset-onboarding) — the one flow that provisions a brand across six services (WorkOS, Knowledge Base, ResponseCX, Temporal, NSR, Voice), documented for all four ways in: the live self-service portal at onboarding.stateset.com, the operator CLI, the provisioning API's draft → approve → launch → verify sequence, and the MCP server that lets an agent onboard a brand itself. Linked from the quickstart, the API router, and the For AI Agents pages.

  #### Added

  * **Two cross-engine journey guides** — the "close the operation, not just the conversation" thesis as running requests: [From "where is my order?" to a closed operation](/guides/journey-wismo-to-resolution) (ResponseCX → Sync → Temporal → NSR) and [A retailer's 850 to cash](/guides/journey-edi-order-to-cash) (EDI → Commerce Engine → Temporal → EDI → AR). API calls are drawn solid, integration seams dashed and named as your code.
  * [**Errors across the engines**](/api-reference/errors-across-engines) — every engine's error envelope side by side, grounded in each server's source, with the five error families and what an agent should do with each.
  * [**API Reference router**](/api-reference/introduction) — the old two-surface intro is now a task → API router: what you want to do, which of the twelve surfaces does it, the host, the auth header, and the env var its examples use.
  * [**Host status**](/api-reference/hosts) page, generated by probing every documented host (`scripts/build-hosts-page.mjs`) — a 503 a reader hits is now something the docs told them to expect.
  * **Per-API history pages** (`scripts/api-history.mjs`) — operations added or removed in each API surface, derived from the spec's own revision history, listed in every tab's Overview group.
  * `CONTRIBUTING.md` — how the generator, overlays, exclusions and checks fit together.

  #### Changed

  * **Every generated curl now uses a per-engine env var** (`$RESPONSECX_API_KEY`, `$STATESET_SYNC_API_KEY`, …) instead of `YOUR_API_KEY` — export once, paste everything on that tab.
  * Set L2 and Sequencer pages carry an **Early preview** banner.
  * The Documentation group "StateSet One" is now "Using the APIs".

  #### Added

  * **Five end-to-end guides**, one per newer engine, each grounded in the server's spec and source: [Sync a Shopify store with NetSuite](/guides/sync-shopify-to-netsuite), [Your first EDI 850 → 855 → 856 → 810 cycle](/guides/edi-first-850), [Gate a refund with a verified decision](/guides/nsr-first-verified-decision) (NSR), [Run a durable order workflow end to end](/guides/temporal-first-durable-workflow) (Temporal), [Automate a back-office tool that has no API](/guides/computer-use-first-task) (Computer Use).

  #### Fixed

  * Every documented `stateset` CLI invocation is now one the CLI accepts (63 rejected flag/subcommand pairs rewritten to the real grammar or to the REST call).
  * EDI overview: the outbound 810 example showed a JSON response; the server returns the wire-ready X12 interchange.
  * Temporal: `GET /v1/workflows/order-fulfillment/{id}/status` documents the bare `"<status>:<phase>"` string the handler actually returns.

  #### Removed

  * **349 legacy StateSet One API pages** (`api-reference/<resource>/*`, `response-api-reference/*`) that targeted a host with no deployment. Each URL now redirects to the iCommerce or ResponseCX page for the same endpoint where one exists, otherwise to that tab's overview. The `api-reference/v1/*` pages are kept.

  #### Changed

  * **Realistic examples on every generated page.** Request and response examples now use values a reader can recognise — emails, SKUs, addresses, plausible amounts — chosen from the field name, with the spec's own examples taking precedence.

  #### Fixed

  * **Temporal Engine (137), Sync Server (74) and ResponseCX (17) responses typed.** Each server's OpenAPI left these as untyped objects or referenced schemas it did not export; the fields are now transcribed from the handler that returns them (`spec/overlays/*.json`, merged at generation time so a fresh export never wipes them). Pages whose handler answers `201`/`202`/`204` no longer list a spurious `200`. Reference pages grading D went from 231 to 12.

  #### Changed

  * [**Introduction**](/introduction) and [**Why StateSet**](/why-stateset) aligned to the same messaging — the competitive framing now says what the matrix says (helpdesk AI automates interactions; iPaaS is excellent orchestration; StateSet sits above and across your ERP, not instead of it), with the objection-handling answers added to the hard questions.
  * [**StateSet Overview**](/stateset-overview) rewritten to the 2026 messaging matrix — "StateSet is the iCommerce company; the iCommerce Engine is the execution layer for AI commerce" — with the Engine's parts mapped to their API tabs, the six pillars, audience messaging, and where each part stands today. Unsourced metrics are gone; the figures that remain are the scoped ones from the evidence ledger.
</Update>

<Update label="v2.0.0" description="2026-08-31">
  #### Added

  * [**Agents API**](/api-reference/agents/overview) tab — the 35 routes of the stateset-agents FastAPI gateway (agents, conversations, training jobs, `/v1/messages`, `/v1/chat/completions`, observability), exported from the app's own OpenAPI. Self-hosted; no StateSet deployment exists.
  * [**Chat Widget API**](/api-reference/chat-widget/overview) tab — the 39-route contract a backend implements for the Response chat widget (`POST /api/chat` with its SSE event stream, threads, catalog, cart, settings, review, analytics) plus the widget admin server's API. Authored from the repository's `APIS.md` and `docs/ADMIN-API.md`; customer-specific flows are left out.
  * [**Sync Server API**](/api-reference/sync/overview) tab — 86 tenant endpoints from the spec `api.sync.stateset.com` publishes; the 39 admin operations are excluded.
  * [**Computer Use API**](/api-reference/computer-use/overview) tab — the 90 versioned v1 endpoints, exported from the platform's own FastAPI app. The production host answers 503 today; the pages document the contract.
  * [**NSR API**](/api-reference/nsr/overview) tab — 259 endpoints from `api.nsr.stateset.com`'s published spec, in 37 groups; the docs previously covered 13.
  * [**EDI API**](/api-reference/edi/overview) tab — 116 endpoints from `edi.stateset.com`'s published spec.
  * **For AI Agents** dropdown — every MCP server (15) and every skill (8) in one place. Four skills published for the first time: NSR, Computer Use, Voice, Sync Server.
  * [**Skills**](/agent-skills) overview — the `.md` URL convention, how to load a skill into an agent harness, and how skills pair with MCP servers.
  * Sandbox: [**webhooks**](/stateset-sandbox/stateset-sandbox-webhooks) page — 24 events, subscription, payload envelope, HMAC verification in three languages.
  * ResponseCX: the **approvals queue** — where a money-moving action waits on `suggest`.
  * NSR: **SDKs** page (Node, Python, Rust, Go) and the v0.9.4 proof-verification changes.
  * stateset-agents: the six additional RL objectives and the four rented-GPU commands.
  * iCommerce: the 24 stable **invariant error codes** an agent can branch on, and the two ICP conformance profiles.

  #### Removed

  * Five Sync Server endpoints built for individual accounts (`/sync/capacity*`, `/sync/luminous*`) are not shown; `spec/exclusions.json` keeps them out of regeneration.

  #### Changed

  * The **StateSet One API** tab is no longer in navigation. All 509 of its pages target `api.stateset.com`, which has no deployment; the pages stay at their URLs until a host exists, and the iCommerce tab is the reference for that surface.
  * Navigation is now three dropdowns — **Documentation**, **API Reference**, **For AI Agents** — with the tabs inside each, instead of eleven top-level tabs.
  * The Resources tab is gone; its five app pages live under Documentation → Apps & Consoles.
  * curl examples on NSR and Temporal Engine pages lead with the `X-API-Key` header each service lists first; Bearer is still accepted.
  * Computer Use authenticates with `X-API-Key`, not Bearer; the MCP page's host corrected to `api.computer.stateset.app`.
  * EDI pages point at `edi.stateset.com` — their paths were already right, their host was not.

  #### Fixed

  * A generated page that did not compile: a markdown list inside a field description. Field descriptions are single-line now.
  * NSR's spec declares four query parameters as path parameters; the generator reclassifies any "path" parameter the URL cannot carry.
</Update>

<Update label="v1.9.0" description="2026-08-30">
  #### Added

  * [**Voice API**](/api-reference/voice/overview) tab — 65 tenant-key endpoints from `api.voice.stateset.com`'s published spec.
  * **Sandbox API** tab — 17 endpoints from the controller's spec.
  * [**Temporal Engine API**](/api-reference/temporal/overview) tab — 170 endpoints from the engine's spec at `api.workstream.stateset.com`; nine of its eleven workflow families had never been mentioned.
  * iCommerce invariant error codes and ICP conformance profiles; sandbox webhooks; ResponseCX approvals queue; NSR SDKs and 0.9.4 changes; stateset-agents algorithms and rented-GPU commands.

  #### Changed

  * The sandbox host is `api.sandbox.stateset.app`; 92 places said `.com`, which does not complete a TLS handshake.
  * Pages whose spec types the response as an untyped object now say so instead of showing a blank Response section (164 across five specs).

  #### Fixed

  * 22 broken `StateSetSandbox` imports — an earlier casing pass had renamed the SDK's class.
</Update>

<Update label="v1.8.0" description="2026-08-30">
  #### Changed

  * The [**Quickstart**](/quickstart) runs against `response.stateset.com/api/v1`, the live ResponseCX API. Every claim on it is read from the server's spec. Its previous version made three requests against a host that serves nothing and one against an endpoint that never existed.
  * Four long "quickstarts" (876–2,361 lines) retitled as guides and moved to their topic groups; the two iCommerce quickstarts distinguished by title and cross-linked.
  * `sdk-installation` lost 1,643 lines describing Ruby and PHP SDKs that are published nowhere.

  #### Fixed

  * Twelve ResponseCX endpoint pages retired for contradicting the published spec (rules and functions are agent-scoped and have no delete; responses are read-only). The Rules concept page's example used `name`/`type` where the schema requires `rule_name`/`rule_type`.
  * Two Cloud "update" pages that were copies of their create pages.
</Update>

<Update label="v1.7.0" description="2026-08-30">
  #### Added

  * [**ResponseCX API**](/api-reference/responsecx/overview) tab — 38 endpoints from the spec `response.stateset.com` publishes, with a playground on each. Every page names the scope its key needs and its per-minute rate limit.
  * **iCommerce API** tab — the 513-page reference moved out of API Reference into its own tab.

  #### Changed

  * The iCommerce spec caught up with the engine: 10 new endpoints (warehouse bins, return dispositions), and monetary `amount` re-typed from float to exact-decimal string.

  #### Fixed

  * Five ResponseCX agent pages with the wrong host, prefix and method, and one endpoint that does not exist — redirected to the generated pages.
  * A misspelled endpoint (`/v1/attritbutes`) and nine pages whose path disagreed with their own directory.
</Update>

<Update label="v1.6.0" description="2026-08-30">
  #### Fixed

  * 506 Go, Java and C# strings written with JavaScript's single quotes — compile errors in all three languages. 82 missing Go trailing commas. A Rust metrics example using `lazy_static` syntax the engine no longer uses, with two metric names wrong. Two Ruby blocks using capitalised locals.
</Update>

<Update label="v1.5.1" description="2026-08-30">
  #### Fixed

  * 78 GraphQL blocks that did not parse — mostly a stray backtick left from a template literal; four genuinely malformed queries.
  * Two mermaid diagrams that rendered as an error box (parentheses in unquoted labels).
  * A section of the sandbox production guide swallowed by an unclosed YAML fence.
  * 25 page titles showing `&#123;` instead of `{`.
  * Eight TypeScript blocks hiding a JSON response inside a code fence.
</Update>

<Update label="v1.5.0" description="2026-08-30">
  #### Added

  * Roughly 200 MCP tools documented for the first time across six servers; every count verified against a live `tools/list`.
  * `scripts/check-mdx.mjs` — every page is compiled with a real MDX parser in CI.

  #### Changed

  * Theme aligned to stateset.com's design token `#1A62FF`; the light-mode accent had been a near-black.

  #### Fixed

  * 359 code samples that could not run: 341 `X.method({ 'id' })` calls, 17 misplaced semicolons, one `const return`.
  * Three pages that did not render at all.
  * Numbers that had drifted: 203 tables documented as "70+"; 155k lines documented as 55k; 719 methods as "671+".
  * 64 JavaScript and 19 Python SDK calls corrected against the live clients.
</Update>

<Update label="v1.4.1" description="2026-08-29">
  #### Fixed

  * Query parameters documented as request bodies; descriptions naming the wrong resource; ids documented twice.
  * Eight pages the live site had served until July were 404ing; `docs.json` gained its first redirects.
</Update>

<Update label="v1.4.0" description="2026-08-29">
  #### Added

  * A **StateSet Agents** section; the ResponseCX **autonomy dial**; Sync Server connectors and troubleshooting; NSR console surfaces; Voice translation calls.

  #### Fixed

  * A page told readers a shipped product did not exist, under a package name on no registry.
</Update>

<Update label="v1.3.0" description="2026-08-29">
  #### Fixed

  * Every part of the request contract had defects — auth scheme, URL, method, path and query parameters, request body — and so did the response: field types contradicted by their own examples, fields documented flat that the response wraps. Each class is now enforced by a check.
</Update>

<Update label="v1.2.0" description="2026-08-29">
  #### Fixed

  * An auth header the API rejects, on 297 pages. 192 curls calling an endpoint other than the one documented. Truncated request bodies, a Python `SyntaxError`, JSON blocks that were not JSON.
</Update>

<Update label="v1.1.0" description="2026-08-29">
  #### Fixed

  * An auth header declared nowhere; curl examples calling a different endpoint than the page documents; install commands naming packages that do not exist; 572 pages whose response section named a status code and no field.
</Update>
