{
  "id": "image.generate",
  "object": "tool",
  "name": "Generate image",
  "summary": "From a prompt, or edit an image.",
  "description": "Creates an image from a text prompt with FLUX.2. Give up to four reference images to edit, restyle or combine them (refer to them as image 0, image 1…). Width and height 256 to 1920, optional seed for repeatable results.",
  "category": "images",
  "hosted_by": "Opentools",
  "runtime": "ai",
  "side_effects": false,
  "status": "live",
  "credits": 3,
  "price": "$0.0030",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0030"
    }
  ],
  "mcp_name": "image_generate",
  "input_schema": {
    "type": "object",
    "properties": {
      "prompt": {
        "type": "string",
        "minLength": 1,
        "maxLength": 4000,
        "description": "What to draw"
      },
      "images": {
        "description": "Reference images to edit or combine. Larger ones are scaled to fit 512×512.",
        "maxItems": 4,
        "type": "array",
        "items": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Public http(s) URL of the file"
                }
              },
              "required": [
                "url"
              ]
            },
            {
              "type": "object",
              "properties": {
                "file_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "An id returned by POST /v1/files"
                }
              },
              "required": [
                "file_id"
              ]
            },
            {
              "type": "object",
              "properties": {
                "base64": {
                  "type": "string",
                  "description": "Base64-encoded file bytes (up to 10 MB)"
                },
                "name": {
                  "type": "string",
                  "description": "File name, e.g. invoice.pdf"
                },
                "content_type": {
                  "type": "string"
                }
              },
              "required": [
                "base64",
                "name"
              ]
            },
            {
              "type": "object",
              "properties": {
                "connection": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "description": "A storage connection id or name (see storage.connections)"
                },
                "path": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024,
                  "description": "Path of the file in that connection, e.g. reports/q3.pdf"
                }
              },
              "required": [
                "connection",
                "path"
              ]
            }
          ],
          "x-file": true,
          "description": "A file: { url }, { file_id }, { base64, name } or { connection, path } from connected storage"
        }
      },
      "width": {
        "default": 1024,
        "description": "Width in pixels",
        "type": "integer",
        "minimum": 256,
        "maximum": 1920
      },
      "height": {
        "default": 1024,
        "description": "Height in pixels",
        "type": "integer",
        "minimum": 256,
        "maximum": 1920
      },
      "quality": {
        "default": "fast",
        "description": "fast: FLUX.2 klein (4 steps). best: FLUX.2 dev (slower, more detail).",
        "type": "string",
        "enum": [
          "fast",
          "best"
        ]
      },
      "steps": {
        "default": 25,
        "description": "Diffusion steps, only for quality: best",
        "type": "integer",
        "minimum": 1,
        "maximum": 50
      },
      "guidance": {
        "description": "How closely to follow the prompt",
        "type": "number",
        "minimum": 1,
        "maximum": 20
      },
      "seed": {
        "description": "Seed for repeatable results",
        "type": "integer",
        "minimum": 0,
        "maximum": 2147483647
      },
      "name": {
        "default": "image",
        "description": "Name of the output file, without extension",
        "type": "string",
        "maxLength": 120
      }
    },
    "required": [
      "prompt"
    ]
  },
  "kind": "tool"
}