<!-- enhance-docs page=reference/mcp/canvas-arrange -->
<!-- enhance-docs release-sha256=3ac27d37b28bb9b2d75c6cbc6f1e88b94b3709b5b961b9ffdc1e2caf89c6167e -->

# canvas.arrange

<span class="reference-badge">mutation</span> <span class="reference-badge">write</span>

Use when the requested change exactly matches canvas.arrange; read the current state first when a version or identifier may have changed.

## Before calling

- Authenticate as the accountable Enhance person.
- Use only resource identifiers returned by an earlier capability result or supplied by the person.
- Reuse clientToken only when retrying this exact mutation input.

## Input

<details class="reference-schema">
<summary>Show complete JSON Schema</summary>

```json
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"canvasRef":{"type":"string","minLength":1},"baseVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"waitMs":{"default":1500,"description":"Additional polling after the initial server call; this does not bound initial native preparation time.","type":"integer","minimum":0,"maximum":5000},"changes":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"position"},"nodeId":{"type":"string","minLength":1},"parentPosition":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false}},"required":["kind","nodeId","parentPosition"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"resize"},"nodeId":{"type":"string","minLength":1},"size":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false}},"required":["kind","nodeId","size"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"relative-position"},"nodeId":{"type":"string","minLength":1},"referenceNodeId":{"type":"string","minLength":1},"side":{"type":"string","enum":["above","below","left","right"]},"gap":{"type":"number","minimum":0},"align":{"type":"string","enum":["start","center","end"]}},"required":["kind","nodeId","referenceNodeId","side","gap","align"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"move"},"nodeIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"targetNodeId":{"type":"string","minLength":1},"position":{"type":"string","enum":["before","inside","after"]}},"required":["kind","nodeIds","targetNodeId","position"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"group"},"nodeIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},"label":{"type":"string","minLength":1}},"required":["kind","nodeIds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"ungroup"},"nodeIds":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["kind","nodeIds"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"label"},"nodeId":{"type":"string","minLength":1},"label":{"type":"string","minLength":1}},"required":["kind","nodeId","label"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"visibility"},"nodeId":{"type":"string","minLength":1},"visible":{"type":"boolean"}},"required":["kind","nodeId","visible"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"lock"},"nodeId":{"type":"string","minLength":1},"locked":{"type":"boolean"}},"required":["kind","nodeId","locked"],"additionalProperties":false}]}}},"required":["canvasRef","baseVersion","changes"],"additionalProperties":false}
```
</details>

### Example

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

```json
{
 "canvasRef": "00000000-0000-4000-8000-000000000010",
 "baseVersion": 1,
 "changes": [
  {
   "kind": "position",
   "nodeId": "screen",
   "parentPosition": {
    "x": 40,
    "y": 40
   }
  }
 ]
}
```
</details>

## Result

Returns a typed canvas.arrange result from the Enhance API without transport-specific prose.

## Recovery

- BAD_REQUEST: correct the named fields and call again.
- UNAUTHORIZED: restore Enhance authentication, then retry once.
- FORBIDDEN or NOT_FOUND: check the supplied resource and selection; do not substitute unrelated content. Ask for corrected access or scope if needed.
- CONFLICT: read the current resource, merge the intended change, and retry with its version.
- INTERNAL: run Enhance diagnostics, report the failure, and stop repeating the call.

## Continue with

- Read the affected canvas resource to confirm the result.

Compatibility: `5eb6d88d19ff145ba0ececcca9a25fe44afc7e5f158dee7d796d2a6a2036f038`.
