<!-- enhance-docs page=reference/cli/canvas/create-editable-frame -->
<!-- enhance-docs release-sha256=8a804cfc9a6fc6b942b8daf6a82266ad6e308291ae4351abee3346bc696d1258 -->

# enhance-dev canvas create-editable-frame

```text
enhance-dev canvas create-editable-frame [options]
```

## Arguments

This command takes no positional arguments.

## Options

| Option | Required | Default | Meaning |
| --- | --- | --- | --- |
| `--canvas-id <string>` | Yes | None | Canvas id, from `enhance canvas list`. |
| `--document-format-version <number>` | Yes | None | Supported canvas schema version for this writer, not the saved revision in baseVersion. Update the client if its format is no longer supported. |
| `--mutation-id <string>` | Yes | None | Client-minted UUID identifying this atomic canvas mutation. |
| `--base-version <number>` | Yes | None | Document version returned by `enhance canvas document get`. |
| `--screen-node-id <string>` | Yes | None | Root-level screen node id returned by `enhance canvas tree`. |
| `--draft [json]` | No | None | Versioned primitive subtree JSON produced by screen conversion. |
| `--json <json>` | No | None | Complete procedure input as JSON; do not combine it with field flags. |
| `--client-token <uuid>` | No | None | Stable UUID to reuse when retrying the exact same mutation. |

## Input

This command presents the capability `canvas.createEditableFrame`. It has write effect and single idempotency.

[Show complete input JSON Schema (JSON file)](/docs/reference/mcp/canvas-createeditableframe.input-schema.json)


## Output

This command writes JSON records to standard output. Returns a typed canvas.createEditableFrame result from the Enhance API without transport-specific prose.

[Show complete output JSON Schema (JSON file)](/docs/reference/mcp/canvas-createeditableframe.output-schema.json)


## Examples

```bash
enhance-dev canvas create-editable-frame --canvas-id <string> --document-format-version <number> --mutation-id <string> --base-version <number> --screen-node-id <string>
```

<details class="reference-schema">
<summary>Show example input</summary>

```json
{
 "canvasId": "00000000-0000-4000-8000-000000000010",
 "documentFormatVersion": 13,
 "mutationId": "00000000-0000-4000-8000-000000000010",
 "baseVersion": 1,
 "screenNodeId": "x",
 "draft": {
  "version": 1,
  "rootTemporaryId": "x",
  "nodes": [
   {
    "label": "x",
    "component": "x",
    "styles": {},
    "temporaryId": "x"
   }
  ],
  "relationships": []
 }
}
```
</details>

<details class="reference-schema">
<summary>Show example output</summary>

```json
{
 "canvasId": "00000000-0000-4000-8000-000000000010",
 "mutationId": "00000000-0000-4000-8000-000000000010",
 "previousVersion": 1,
 "version": 1,
 "rootNodeId": "x",
 "idMap": {},
 "insertedNodeIds": [],
 "removedNodeIds": [],
 "boxes": {},
 "affectedBounds": {
  "x": 0,
  "y": 0,
  "width": 0,
  "height": 0
 },
 "operation": {
  "op": "insertConvertedSubtree",
  "destination": {
   "kind": "adjacent"
  },
  "rootNodeId": "x",
  "nodes": {},
  "relationships": {}
 },
 "next": []
}
```
</details>

## Exit behaviour

| Exit code | Meaning |
| --- | --- |
| `0` | The command succeeded. |
| `1` | The command failed for another reason (`INTERNAL`). A write may have an unknown outcome. |
| `2` | The command line was malformed. Nothing ran. |
| `3` | The API refused the input (`BAD_REQUEST`). |
| `4` | The credential is missing or expired (`UNAUTHORIZED`). |
| `5` | The API refused the request (`FORBIDDEN`, `NOT_FOUND`, `CONFLICT`, `RATE_LIMITED`). |
| `6` | A batch finished only in part. Retry with the same `--client-token`. |

## Versions

Minimum tested versions: Enhance CLI and MCP runtime 0.1.40, plugin 1.0.38, Node.js 24. No older floor is published.
