# Fuzzbucket MCP tools

Use a dedicated scoped personal access token from Fuzzbucket Settings. Browser session credentials are not accepted. Saving drafts does not generate. Chat and generation may spend credits. Retry mutations with the same operationId and identical arguments.

## fuzz_brand

Select or onboard a brand: identity, products, audience and style used by creative work. Check quota before creating; onboarding can spend credits and ask questions. list: List your brands. get: Read brand context and onboarding state. quota: Read current brand creation limits. create: Start existing-brand onboarding with at least one website or social URL in inputs. Additional factual context is optional. respond: Answer an actual pending onboarding question using its returned identifiers.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "list"
          ]
        },
        "page": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Page size from 1 to 50. Follow nextCursor rather than requesting a larger page."
            },
            "cursor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Optional bounded page size and cursor; follow the returned cursor for more results."
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false,
      "description": "List your brands."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "get"
          ]
        },
        "brandId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Brand ID returned by fuzz_brand. Required for workspace creation; optional on brand/respond before onboarding creates the profile."
        }
      },
      "required": [
        "action",
        "brandId"
      ],
      "additionalProperties": false,
      "description": "Read brand context and onboarding state."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "quota"
          ]
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false,
      "description": "Read current brand creation limits."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "create"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "inputs": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50000
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "Website URLs and factual brand/product/audience context for onboarding. Do not invent missing brand facts."
        },
        "sessionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Chat or onboarding session identifier returned by the corresponding tool. Omit on a new send/create when no session exists."
        }
      },
      "required": [
        "action",
        "operationId",
        "inputs"
      ],
      "additionalProperties": false,
      "description": "Start existing-brand onboarding with at least one website or social URL in inputs. Additional factual context is optional."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "respond"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "brandId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Brand ID returned by fuzz_brand. Required for workspace creation; optional on brand/respond before onboarding creates the profile."
        },
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Opaque MCP runId returned by brand creation, chat send or node generation."
        },
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Identifier of the actual pending question/approval returned by the run. Do not invent it."
        },
        "answers": {
          "type": "object",
          "properties": {
            "confirmed": {
              "type": "boolean"
            },
            "corrections": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50000
            },
            "selected_option": {
              "type": "string",
              "minLength": 1,
              "maxLength": 5000
            },
            "freeform_answer": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50000
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Answers to the pending brand onboarding question, using the displayed options or freeform text."
        }
      },
      "required": [
        "action",
        "operationId",
        "runId",
        "requestId",
        "answers"
      ],
      "additionalProperties": false,
      "description": "Answer an actual pending onboarding question using its returned identifiers."
    }
  ]
}
```

## fuzz_workspace

Find, open or create a brand-bound workspace containing chat and a canvas. Opening returns data; it does not navigate or change the active brand in the browser. list: List workspaces for the selected brand. open: Read a workspace; optionally include chat sessions to resume. create: Create a named workspace under an existing brand.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "list"
          ]
        },
        "brandId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Brand ID returned by fuzz_brand. Required for workspace creation; optional on brand/respond before onboarding creates the profile."
        },
        "page": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Page size from 1 to 50. Follow nextCursor rather than requesting a larger page."
            },
            "cursor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Optional bounded page size and cursor; follow the returned cursor for more results."
        }
      },
      "required": [
        "action",
        "brandId"
      ],
      "additionalProperties": false,
      "description": "List workspaces for the selected brand."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "open"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "includeSessions": {
          "type": "boolean",
          "description": "Include resumable chat sessions; requires chat:read in addition to workspace access."
        },
        "sessionsPage": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Page size from 1 to 50. Follow nextCursor rather than requesting a larger page."
            },
            "cursor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Pagination for sessions; only valid when includeSessions is true."
        }
      },
      "required": [
        "action",
        "workspaceId"
      ],
      "additionalProperties": false,
      "description": "Read a workspace; optionally include chat sessions to resume."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "create"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "brandId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Brand ID returned by fuzz_brand. Required for workspace creation; optional on brand/respond before onboarding creates the profile."
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "description": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000
        }
      },
      "required": [
        "action",
        "operationId",
        "brandId",
        "name"
      ],
      "additionalProperties": false,
      "description": "Create a named workspace under an existing brand."
    }
  ]
}
```

## fuzz_workspace_contents

Find compact named canvas nodes and stored assets in a workspace. Follow pagination; use node/get or asset/get for details. Node IDs and asset IDs are distinct. 

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "kind": {
          "type": "string",
          "enum": [
            "node",
            "asset",
            "all"
          ]
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "page": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Page size from 1 to 50. Follow nextCursor rather than requesting a larger page."
            },
            "cursor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Optional bounded page size and cursor; follow the returned cursor for more results."
        }
      },
      "required": [
        "workspaceId"
      ],
      "additionalProperties": false,
      "description": "Find compact named canvas nodes and stored assets in a workspace. Follow pagination; use node/get or asset/get for details. Node IDs and asset IDs are distinct."
    }
  ]
}
```

## fuzz_node

Inspect or create a canvas node, edit its saved input-box draft, or connect/disconnect references. All draft operations save and place content without generating. Read get for revision, supported inputSlots, connections and outputs. get: Read draft, revision, inputSlots, connections, placement and output asset IDs. create: Create and place a draft node. Optional input.bindings connect references; no generation occurs. update_input: Patch the saved draft. Omitted draft fields are preserved; validate settings for the chosen model. connect_input: Connect a source node or stored asset to a supported target input slot. disconnect_input: Remove a connection by its returned connectionId; retain its source node/asset.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "get"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "nodeId"
      ],
      "additionalProperties": false,
      "description": "Read draft, revision, inputSlots, connections, placement and output asset IDs."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "create"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "kind": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "video",
            "audio",
            "post"
          ]
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "input": {
          "type": "object",
          "properties": {
            "prompt": {
              "type": "string",
              "maxLength": 50000,
              "description": "Creative instructions saved in the node input box. Empty text clears the draft prompt."
            },
            "modelId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Available model ID from fuzz_models for this workspace and media type."
            },
            "settings": {
              "type": "object",
              "properties": {
                "aspectRatio": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "resolution": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "durationSeconds": {
                  "type": "integer",
                  "minimum": 1
                },
                "generationCount": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10
                },
                "audioParams": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "speech",
                        "dialogue",
                        "sound_scene",
                        "music",
                        "sfx"
                      ]
                    },
                    "voiceId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "language": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "voiceInstruction": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 500
                    },
                    "speed": {
                      "type": "number",
                      "minimum": 0.5,
                      "maximum": 2
                    },
                    "volume": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 2
                    },
                    "pitch": {
                      "type": "integer",
                      "minimum": -12,
                      "maximum": 12
                    },
                    "stability": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "outputFormat": {
                      "type": "string",
                      "enum": [
                        "wav",
                        "mp3",
                        "pcm",
                        "opus",
                        "ogg_opus"
                      ]
                    },
                    "sampleRate": {
                      "type": "integer",
                      "enum": [
                        8000,
                        16000,
                        22050,
                        24000,
                        32000,
                        44100,
                        48000
                      ]
                    },
                    "multilingual": {
                      "type": "boolean"
                    },
                    "timestamps": {
                      "type": "boolean"
                    }
                  },
                  "required": [],
                  "additionalProperties": false
                }
              },
              "required": [],
              "additionalProperties": false,
              "description": "Generation settings supported by the chosen model; discover allowed values with fuzz_models."
            },
            "bindings": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "slotId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Exact inputSlots.slotId returned by fuzz_node/get for the target node and chosen model. Check mediaTypes, required and maxConnections."
                  },
                  "source": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "nodeId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 255,
                            "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
                          }
                        },
                        "required": [
                          "nodeId"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "assetId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 255,
                            "description": "Stored content asset ID from contents, node outputs, or upload completion."
                          }
                        },
                        "required": [
                          "assetId"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Exactly one nodeId (live canvas input) or assetId (stored reference) from this workspace."
                  }
                },
                "required": [
                  "slotId",
                  "source"
                ],
                "additionalProperties": false
              },
              "maxItems": 50,
              "description": "Initial typed input connections. For discoverable slots, create a draft then read inputSlots and connect_input."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Saved input-box draft; saving it does not start generation."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "kind",
        "name"
      ],
      "additionalProperties": false,
      "description": "Create and place a draft node. Optional input.bindings connect references; no generation occurs."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "update_input"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        },
        "expectedRevision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "description": "Opaque revision string from the latest fuzz_node response. Copy verbatim; reread after conflicts and use a new deliberate operation."
        },
        "patch": {
          "type": "object",
          "properties": {
            "prompt": {
              "type": "string",
              "maxLength": 50000,
              "description": "Creative instructions saved in the node input box. Empty text clears the draft prompt."
            },
            "modelId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Available model ID from fuzz_models for this workspace and media type."
            },
            "settings": {
              "type": "object",
              "properties": {
                "aspectRatio": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "resolution": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "durationSeconds": {
                  "type": "integer",
                  "minimum": 1
                },
                "generationCount": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10
                },
                "audioParams": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "speech",
                        "dialogue",
                        "sound_scene",
                        "music",
                        "sfx"
                      ]
                    },
                    "voiceId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "language": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "voiceInstruction": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 500
                    },
                    "speed": {
                      "type": "number",
                      "minimum": 0.5,
                      "maximum": 2
                    },
                    "volume": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 2
                    },
                    "pitch": {
                      "type": "integer",
                      "minimum": -12,
                      "maximum": 12
                    },
                    "stability": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "outputFormat": {
                      "type": "string",
                      "enum": [
                        "wav",
                        "mp3",
                        "pcm",
                        "opus",
                        "ogg_opus"
                      ]
                    },
                    "sampleRate": {
                      "type": "integer",
                      "enum": [
                        8000,
                        16000,
                        22050,
                        24000,
                        32000,
                        44100,
                        48000
                      ]
                    },
                    "multilingual": {
                      "type": "boolean"
                    },
                    "timestamps": {
                      "type": "boolean"
                    }
                  },
                  "required": [],
                  "additionalProperties": false
                }
              },
              "required": [],
              "additionalProperties": false,
              "description": "Generation settings supported by the chosen model; discover allowed values with fuzz_models."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Draft fields to update. Omitted fields are preserved; read current draft and model capabilities first."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "nodeId",
        "expectedRevision",
        "patch"
      ],
      "additionalProperties": false,
      "description": "Patch the saved draft. Omitted draft fields are preserved; validate settings for the chosen model."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "connect_input"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        },
        "expectedRevision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "description": "Opaque revision string from the latest fuzz_node response. Copy verbatim; reread after conflicts and use a new deliberate operation."
        },
        "slotId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Exact inputSlots.slotId returned by fuzz_node/get for the target node and chosen model. Check mediaTypes, required and maxConnections."
        },
        "source": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "nodeId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
                }
              },
              "required": [
                "nodeId"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "assetId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "description": "Stored content asset ID from contents, node outputs, or upload completion."
                }
              },
              "required": [
                "assetId"
              ],
              "additionalProperties": false
            }
          ],
          "description": "Exactly one nodeId (live canvas input) or assetId (stored reference) from this workspace."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "nodeId",
        "expectedRevision",
        "slotId",
        "source"
      ],
      "additionalProperties": false,
      "description": "Connect a source node or stored asset to a supported target input slot."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "disconnect_input"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        },
        "expectedRevision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "description": "Opaque revision string from the latest fuzz_node response. Copy verbatim; reread after conflicts and use a new deliberate operation."
        },
        "connectionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Exact connections.connectionId returned by fuzz_node/get."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "nodeId",
        "expectedRevision",
        "connectionId"
      ],
      "additionalProperties": false,
      "description": "Remove a connection by its returned connectionId; retain its source node/asset."
    }
  ]
}
```

## fuzz_chat

Ask the workspace orchestrator to carry out a creative brief, read persisted assistant answers, or respond to a pending approval. Sending can generate and spend credits; keep returned sessionId and runId. send: Send a creative brief with optional node/asset references. Returns asynchronous run and session IDs. read: Read persisted user/assistant messages in a session, following pagination. respond: Submit the user’s decision for an actual pending approval request.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "send"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "sessionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Chat or onboarding session identifier returned by the corresponding tool. Omit on a new send/create when no session exists."
        },
        "message": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50000
        },
        "references": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "nodeId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
                  }
                },
                "required": [
                  "nodeId"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "assetId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Stored content asset ID from contents, node outputs, or upload completion."
                  }
                },
                "required": [
                  "assetId"
                ],
                "additionalProperties": false
              }
            ]
          },
          "maxItems": 50,
          "description": "Existing workspace node or asset references to include in the creative brief."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "message"
      ],
      "additionalProperties": false,
      "description": "Send a creative brief with optional node/asset references. Returns asynchronous run and session IDs."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "read"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "sessionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Chat or onboarding session identifier returned by the corresponding tool. Omit on a new send/create when no session exists."
        },
        "page": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Page size from 1 to 50. Follow nextCursor rather than requesting a larger page."
            },
            "cursor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
            }
          },
          "required": [],
          "additionalProperties": false,
          "description": "Optional bounded page size and cursor; follow the returned cursor for more results."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "sessionId"
      ],
      "additionalProperties": false,
      "description": "Read persisted user/assistant messages in a session, following pagination."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "respond"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "sessionId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Chat or onboarding session identifier returned by the corresponding tool. Omit on a new send/create when no session exists."
        },
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Opaque MCP runId returned by brand creation, chat send or node generation."
        },
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Identifier of the actual pending question/approval returned by the run. Do not invent it."
        },
        "response": {
          "type": "object",
          "properties": {
            "approved": {
              "type": "boolean"
            },
            "message": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50000
            }
          },
          "required": [
            "approved"
          ],
          "additionalProperties": false,
          "description": "User decision for the pending approval, optionally with feedback."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "sessionId",
        "runId",
        "requestId",
        "response"
      ],
      "additionalProperties": false,
      "description": "Submit the user’s decision for an actual pending approval request."
    }
  ]
}
```

## fuzz_node_generate

Generate from a node’s saved prompt, model, settings and connections. Read the node first and supply its exact latest revision. Returns a runId; poll fuzz_run/get and inspect node outputs. May spend credits. 

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        },
        "expectedRevision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "description": "Opaque revision string from the latest fuzz_node response. Copy verbatim; reread after conflicts and use a new deliberate operation."
        }
      },
      "required": [
        "operationId",
        "workspaceId",
        "nodeId",
        "expectedRevision"
      ],
      "additionalProperties": false,
      "description": "Generate from a node’s saved prompt, model, settings and connections. Read the node first and supply its exact latest revision. Returns a runId; poll fuzz_run/get and inspect node outputs. May spend credits."
    }
  ]
}
```

## fuzz_run

Inspect asynchronous brand/chat/node work or explicitly cancel it. Poll get with returned event cursors; follow pending questions and output IDs. Connection loss does not cancel a run. A successful lookup is not generation success: inspect status, error.code/message/retryable and progress errors. Report failures and partial results. Retrieve the completed run’s assets and show the actual deliverable, not only IDs. Do not automatically retry or switch models to bypass a content-policy failure. get: Read progress, events, pending responses and results; cursor continues event pagination. cancel: Request explicit cancellation of the identified run.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "get"
          ]
        },
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Opaque MCP runId returned by brand creation, chat send or node generation."
        },
        "cursor": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2048,
          "description": "Opaque pagination/event cursor returned by the previous response. Omit for the first page."
        }
      },
      "required": [
        "action",
        "runId"
      ],
      "additionalProperties": false,
      "description": "Read progress, events, pending responses and results; cursor continues event pagination."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "cancel"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Opaque MCP runId returned by brand creation, chat send or node generation."
        }
      },
      "required": [
        "action",
        "operationId",
        "runId"
      ],
      "additionalProperties": false,
      "description": "Request explicit cancellation of the identified run."
    }
  ]
}
```

## fuzz_asset

Inspect stored text/media or upload a reference into a workspace. prepare_upload returns a short-lived transfer request; upload multipart file with its headers, then complete_upload. Keep transfer headers private. get: Read owned asset details. prepare_upload: Prepare a transfer for a file up to 100 MB; return uploadId, URL and headers. complete_upload: Finalize the already-transferred file using uploadId and return the stored asset.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "get"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "assetId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Stored content asset ID from contents, node outputs, or upload completion."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "assetId"
      ],
      "additionalProperties": false,
      "description": "Read owned asset details."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "prepare_upload"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "filename": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "mimeType": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "sizeBytes": {
          "type": "integer",
          "minimum": 1,
          "maximum": 104857600
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "filename",
        "mimeType",
        "sizeBytes"
      ],
      "additionalProperties": false,
      "description": "Prepare a transfer for a file up to 100 MB; return uploadId, URL and headers."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "complete_upload"
          ]
        },
        "operationId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Client-generated identifier for one deliberate mutation (UUID recommended). Reuse exactly the same ID and arguments for retries; use a new ID for a new operation."
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "uploadId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Transfer identifier from prepare_upload, after uploading bytes to its returned URL."
        }
      },
      "required": [
        "action",
        "operationId",
        "workspaceId",
        "uploadId"
      ],
      "additionalProperties": false,
      "description": "Finalize the already-transferred file using uploadId and return the stored asset."
    }
  ]
}
```

## fuzz_download

Prepare a short-lived download of stored asset content, one canvas node, or a group of nodes. Fetch the returned URL with its required headers. A successful tool call prepares the transfer; it does not itself save a local file. Use action=asset for media previews; node/nodes exports are ZIPs. Inspect asset MIME type, fetch privately, then display the saved image/video/audio with native client media support. In Codex use Markdown ![description](absolute-local-file-path), or a clickable file link if preview is unsupported. Never embed transfer URLs or headers. asset: Download stored asset content. node: Export one node using a supported format. nodes: Export a group of nodes.

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "asset"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "assetId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Stored content asset ID from contents, node outputs, or upload completion."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "assetId"
      ],
      "additionalProperties": false,
      "description": "Download stored asset content."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "node"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Canvas nodeId returned by contents or node tools, not entityId or assetId."
        },
        "format": {
          "type": "string",
          "minLength": 1,
          "maxLength": 32,
          "description": "Optional export format supported by the node. Omit to use the normal app default; unsupported formats fail."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "nodeId"
      ],
      "additionalProperties": false,
      "description": "Export one node using a supported format."
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "nodes"
          ]
        },
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "nodeIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "Canvas node IDs returned by the server, all in the specified workspace."
        },
        "format": {
          "type": "string",
          "minLength": 1,
          "maxLength": 32,
          "description": "Optional export format supported by the node. Omit to use the normal app default; unsupported formats fail."
        }
      },
      "required": [
        "action",
        "workspaceId",
        "nodeIds"
      ],
      "additionalProperties": false,
      "description": "Export a group of nodes."
    }
  ]
}
```

## fuzz_models

Discover the same user-specific model options, supported settings/reference types, access restrictions and available credit estimates as the frontend. Filter by mediaType or modelId; do not invent IDs, capabilities or prices. 

```json
{
  "type": "object",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "workspaceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Workspace ID returned by fuzz_workspace. Resources must belong to this workspace."
        },
        "mediaType": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "video",
            "audio"
          ]
        },
        "modelId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255,
          "description": "Available model ID from fuzz_models for this workspace and media type."
        }
      },
      "required": [
        "workspaceId"
      ],
      "additionalProperties": false,
      "description": "Discover the same user-specific model options, supported settings/reference types, access restrictions and available credit estimates as the frontend. Filter by mediaType or modelId; do not invent IDs, capabilities or prices."
    }
  ]
}
```
