Use it when reviewing generated behavior or edits; use fidelity_preview instead for static diagrams, wireframes or mockups. Returns preview URLs, composition lineage, editable fields and measured/notMeasured evidence. Supply compositionId/version or object/context; action selects render, edit, compare or versions. Edits create a new version. framework and preferences select rendering; contextItems attach fetched evidence. runPath selects captured-run records, analysisPath selects derived comparisons, and recordId chooses an exact record. Writes version artifacts and measurements; domain actions still require consumer integration. Reference: TOOL-REFERENCE.md#design_preview; full schema: oods://schemas/design_preview.input.json.

Inputs

Name Type Required Description
action "render" | "compare" | "edit" | "versions" | "accept" no render (default): open the version as the running app. See full schema for details.
compositionId string no An existing composition from design.compose; with no version, its latest version opens.
version integer no The version of compositionId to open.
object string no Object name from the OODS registry (e.g., 'Subscription', 'User'); with context, composes a new composition (version 1) and opens it.
context "detail" | "list" | "form" | "timeline" | "card" | "inline" | "workflow" no View context for object-aware composition. See full schema for details.
framework "react" | "vue" | "both" no Which generated app to compile and serve; both frameworks by default, each at its own URL.
preferences object no Layout and appearance preferences.
against object no action compare: the version on the right; the left is compositionId@version.
edit object no action edit: the one operation to apply to compositionId@version. The parent version is never changed.
contextItems object[] no Decisions and evidence about this object that YOU already fetched, shown beside the running preview and stored on the version. See full schema for details.
contextSearched object[] no What you searched that returned nothing, so an empty panel is a statement rather than a silence: the reader can tell 'nothing was found' from 'nobody asked'.
runPath string no A Stage1 run directory on this machine (out/stage1/<suite>/<run-uuid>) whose REAL records this version shows: the run itself for Run, its findings for Finding, its attested artifacts for CapturedArtifact. See full schema for details.
observationRunPath string no A Stage1 run directory on this machine (out/stage1/<suite>/<run-uuid>). See full schema for details.
presentation "stage1-inspection" no Named Stage1 inspection presentation: omit the accessibility score and prominently show measurement limits. Source records remain unchanged.
recordId string no Exact record ID for a fresh runPath or analysisPath detail/card/inline view. Unknown IDs refuse before composition; existing versions retain their selected record.
analysisPath string no Portable Stage1 derived-analysis directory. Composes Comparison or ComparisonSignal from attested retained bytes, separate from runPath. Only read-only contexts; recordId selects an exact signal.

Outputs: render or edit

Name Type Required Description
warnings object[] no Advisory warnings for unmet team component contract obligations; preview remains available.
componentContracts object[] no Advisory shared-scenario component reports. Each declared obligation is met, unmet or not checked with a reason; browser availability never blocks generation.
status "ok" yes
action "render" | "edit" yes
compositionId string yes
version integer yes
parentVersion integer | null yes
operation "compose" | "recompose" | "reorder-region" | "swap-slot" | "reorder-fields" | "seed" yes
head string | null yes
schemaHash string yes Canonical hash of the version's composed schema.
object string yes
context string yes
previewUrl string yes The first compiled framework's page with lineage and controls; open it in a browser.
previews object[] yes
host object yes
brand string yes
theme "light" | "dark" | "hc" yes
recordPath string yes
durationMs number yes
measured object yes What this version carries as measured and what it does not: the code.generate validation receipt per framework, artifact.certify for every placed chart, axe-core per framework and brand/theme scope run inside the running page. The page's measurement panel says the same; nothing is claimed that did not run.
edit object no action edit only: the operation that produced this version and the version it derives from.
editable object yes What an edit can name on this version: the regions in order, each slot with the composer's candidates, the field order per region, the current seed.

Outputs: compare

Name Type Required Description
status "ok" yes
action "compare" yes
left object yes
right object yes
compareUrl string yes Both running apps side by side with the what-changed and both measurement panels.
diffUrl string yes
frameworks "react" | "vue"[] yes Frameworks both versions carry, shown side by side.
identical boolean yes
differenceCount integer yes
diff object yes The structural what-changed the preview host computes over the two version records: regions added/removed/reordered, slot components, nodes including slot subtrees, props of matched nodes, field order per region, the seed, and artifact files whose hash moved per framework both versions carry. Definition rows name objectSchema fields added, removed or changed, with a schemaHash fallback for unitemized changes. Identical versions have equal schema hashes and zero differences.
host object yes
durationMs number yes

Outputs: versions

Name Type Required Description
status "ok" yes
action "versions" yes
compositionId string yes
latest integer yes
versions object[] yes
accepted null | object yes The standing acceptance (the last one in accepted.json), or null when no version was accepted.
host object yes
durationMs number yes

Outputs: accept

Name Type Required Description
status "ok" yes
action "accept" yes
compositionId string yes
version integer yes
parentVersion integer | null yes
operation string yes
object string yes
context string yes
accepted object yes The acceptance just recorded in accepted.json.
acceptances integer yes How many acceptances accepted.json holds now; the last is the standing one.
acceptedPath string yes
previewUrl string yes
host object yes
durationMs number yes

A real call

Recorded by this site's harbor run, step preview, with the published OODS Foundry 0.10.1.

Its input:

{
  "compositionId": "cmp-c013f1ee92f9",
  "version": 1
}

Its result, first lines:

{
  "status": "ok",
  "action": "render",
  "compositionId": "cmp-c013f1ee92f9",
  "version": 1,
  "parentVersion": null,
  "operation": "compose",
  "head": "af36064f0f930eec023a3e02e0f1280cf8dbe8f7",
  "schemaHash": "sha256:1b8472f61bf90259ad97727c0bf1c165d13ca58121659973c5e321d111a71375",
  "object": "Warehouse",
  "context": "detail",
  "previewUrl": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1?framework=react&brand=Harbor&theme=light",
  "previews": [
    {
      "framework": "react",
      "url": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1?framework=react&brand=Harbor&theme=light",
      "appUrl": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1/app?framework=react&brand=Harbor&theme=light",
      "moduleUrl": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1/module.js?framework=react&brand=Harbor&theme=light",
      "artifactContentHash": "sha256:2fc24e4ddcd1204110c81e9ce149286ef1a835ab43f619fa64827d81b0bc6730",
      "compiled": {
        "bytes": 55612,
        "sha256": "sha256:6b6e0f5266544ea58489042fb4ca8546b1cb296833223b47ca298fe5a10c04f2"
      },
      "generatedFor": {
        "brand": "Harbor",
        "theme": "light",
        "chartScoped": false
      }
    },
    {
      "framework": "vue",
      "url": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1?framework=vue&brand=Harbor&theme=light",
      "appUrl": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1/app?framework=vue&brand=Harbor&theme=light",
      "moduleUrl": "http://127.0.0.1:57947/preview/cmp-c013f1ee92f9/1/module.js?framework=vue&brand=Harbor&theme=light",
      "artifactContentHash": "sha256:ac0cfd23e92875e08e831d5eceec2f8c4ccb04ec266974c671c3d3ccd7e286b2",
      "compiled": {
        "bytes": 73416,
        "sha256": "sha256:d32dca2c34cc08f41cbab2900f9e2b244c3ec834c3b9ab33b99c63efb48a0a51"
      },
      "generatedFor": {
        "brand": "Harbor",
        "theme": "light",
        "chartScoped": false
      }
    }
  ],
  "host": {
    "url": "http://127.0.0.1:57947",
    "port": 57947,
    "compositionsDir": "~/.oods-foundry/compositions"
  },
  "brand": "Harbor",
  "theme": "light",
  "recordPath": "~/.oods-foundry/compositions/cmp-c013f1ee92f9/versions/1.json",
  "componentContracts": [
    {
      "framework": "react",
      "mappingId": "harbor-team-button",
      "component": "Button",
      "source": {

The whole call, 21 KB of JSON