{
  "tools": [
    {
      "tool_id": "image_stitcher",
      "name": "图片拼接工具",
      "category": "cv",
      "description": "将多张图片按指定方向（水平/垂直/网格）拼接成一张大图。支持间距设置、背景色填充和统一缩放模式。输入输出均为 Base64 编码的 PNG 图片。",
      "input_schema": {
        "properties": {
          "background_color": {
            "default": "#FFFFFF",
            "description": "间距填充背景色，十六进制颜色值",
            "type": "string"
          },
          "columns": {
            "default": 2,
            "description": "grid 模式下每行的列数",
            "minimum": 1,
            "type": "integer"
          },
          "direction": {
            "default": "horizontal",
            "description": "拼接方向：horizontal=水平，vertical=垂直，grid=网格",
            "enum": [
              "horizontal",
              "vertical",
              "grid"
            ],
            "type": "string"
          },
          "images": {
            "description": "Base64 编码的图片列表，至少 2 张",
            "items": {
              "type": "string"
            },
            "minItems": 2,
            "type": "array"
          },
          "resize_mode": {
            "default": "none",
            "description": "缩放模式：none=不缩放，fit_width=统一宽度，fit_height=统一高度",
            "enum": [
              "none",
              "fit_width",
              "fit_height"
            ],
            "type": "string"
          },
          "spacing": {
            "default": 0,
            "description": "图片间距（像素）",
            "minimum": 0,
            "type": "integer"
          }
        },
        "reason": "图片拼接工具输入参数定义",
        "required": [
          "images"
        ],
        "type": "object"
      },
      "output_schema": {
        "properties": {
          "height": {
            "description": "结果图高度（像素）",
            "type": "integer"
          },
          "image": {
            "description": "拼接结果，Base64 编码的 PNG 图片",
            "type": "string"
          },
          "width": {
            "description": "结果图宽度（像素）",
            "type": "integer"
          }
        },
        "reason": "图片拼接工具输出结果定义",
        "required": [
          "image",
          "width",
          "height"
        ],
        "type": "object"
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [],
      "tool_slug_ids": []
    },
    {
      "tool_id": "liblibai_controlnet",
      "name": "LibLib ControlNet 图生图",
      "category": "cv",
      "description": "基于 LibLib AI 开放 API 的 ControlNet Canny 图生图工具，支持通过边缘检测控制图像生成",
      "input_schema": {
        "type": "object",
        "properties": {
          "image": {
            "type": "string",
            "description": "图片来源，支持 Base64 编码的图片数据或 HTTP 图片 URL"
          },
          "prompt": {
            "type": "string",
            "description": "正向提示词"
          },
          "negative_prompt": {
            "type": "string",
            "description": "反向提示词",
            "default": "lowres, bad anatomy, text, error"
          },
          "width": {
            "type": "integer",
            "description": "输出宽度",
            "default": 512
          },
          "height": {
            "type": "integer",
            "description": "输出高度",
            "default": 512
          },
          "steps": {
            "type": "integer",
            "description": "采样步数",
            "default": 20
          },
          "cfg_scale": {
            "type": "number",
            "description": "CFG Scale",
            "default": 7
          },
          "img_count": {
            "type": "integer",
            "description": "生成图片数量",
            "default": 1
          },
          "control_weight": {
            "type": "number",
            "description": "ControlNet 权重",
            "default": 1
          },
          "preprocessor": {
            "type": "integer",
            "description": "预处理器枚举",
            "default": 1
          },
          "canny_low": {
            "type": "integer",
            "description": "Canny 低阈值",
            "default": 100
          },
          "canny_high": {
            "type": "integer",
            "description": "Canny 高阈值",
            "default": 200
          }
        },
        "required": [
          "image",
          "prompt"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "生成的图片 URL 列表"
          },
          "task_id": {
            "type": "string",
            "description": "任务 ID"
          },
          "status": {
            "type": "string",
            "description": "任务状态（success/failed/timeout）"
          }
        }
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [],
      "tool_slug_ids": []
    },
    {
      "tool_id": "launch_comfy_env",
      "name": "Launch ComfyUI Environment",
      "category": "ai",
      "description": "启动 RunComfy 云端机器并等待就绪。返回 server_id 用于后续 ComfyUI workflow 执行。需要环境变量 RUNCOMFY_USER_ID 和 API_TOKEN。",
      "input_schema": {
        "type": "object",
        "properties": {
          "version_id": {
            "type": "string",
            "description": "RunComfy workflow version ID",
            "default": "90f77137-ba75-400d-870f-204c614ae8a3"
          },
          "server_type": {
            "type": "string",
            "enum": [
              "medium",
              "large",
              "extra-large",
              "2x-large",
              "2xl-turbo"
            ],
            "description": "机器规格",
            "default": "medium"
          },
          "duration": {
            "type": "integer",
            "description": "预估运行时长（秒）",
            "default": 3600
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "server_id": {
            "type": "string",
            "description": "机器唯一标识，用于后续操作"
          },
          "comfy_url": {
            "type": "string",
            "description": "ComfyUI 访问地址"
          },
          "status": {
            "type": "string",
            "description": "机器状态"
          },
          "usage_instruction": {
            "type": "string",
            "description": "使用说明"
          }
        },
        "required": [
          "server_id",
          "comfy_url",
          "status",
          "usage_instruction"
        ]
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [
        "runcomfy_lifecycle"
      ],
      "tool_slug_ids": [
        "comfyui"
      ]
    },
    {
      "tool_id": "runcomfy_workflow_executor",
      "name": "RunComfy Workflow Executor",
      "category": "image_generation",
      "description": "在已就绪的 RunComfy 机器上提交 ComfyUI 工作流，上传输入文件，监听执行状态，下载结果图片（不启动/关闭机器）",
      "input_schema": {
        "type": "object",
        "required": [
          "server_id",
          "workflow_api"
        ],
        "properties": {
          "server_id": {
            "type": "string",
            "description": "已启动的 RunComfy 机器 ID"
          },
          "workflow_api": {
            "type": "object",
            "description": "ComfyUI workflow_api.json 内容（字典格式）"
          },
          "input_files": {
            "type": "array",
            "description": "可选的输入文件列表",
            "items": {
              "type": "object",
              "required": [
                "filename",
                "type",
                "base64_data"
              ],
              "properties": {
                "filename": {
                  "type": "string",
                  "description": "文件名"
                },
                "type": {
                  "type": "string",
                  "description": "文件类型：images/loras/checkpoints/vae/controlnet"
                },
                "base64_data": {
                  "type": "string",
                  "description": "文件的 Base64 编码数据"
                }
              }
            }
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "prompt_id": {
            "type": "string",
            "description": "任务 ID"
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "结果图片的 Base64 数据列表"
          },
          "status": {
            "type": "string",
            "description": "执行状态"
          },
          "server_id": {
            "type": "string",
            "description": "机器 ID"
          }
        }
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [
        "runcomfy_lifecycle"
      ],
      "tool_slug_ids": [
        "comfyui"
      ]
    },
    {
      "tool_id": "runcomfy_stop_env",
      "name": "RunComfy Stop Service",
      "category": "cloud",
      "description": "Stop and delete RunComfy server instances to release resources. Works with launch_comfy_env for complete lifecycle management.",
      "input_schema": {
        "type": "object",
        "properties": {
          "server_id": {
            "type": "string",
            "description": "The server ID to stop"
          }
        },
        "required": [
          "server_id"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "server_id": {
            "type": "string",
            "description": "The stopped server ID"
          },
          "status": {
            "type": "string",
            "description": "Deleted, NotFound, or Error"
          },
          "message": {
            "type": "string",
            "description": "Detailed result message"
          }
        }
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [
        "runcomfy_lifecycle"
      ],
      "tool_slug_ids": [
        "comfyui"
      ]
    },
    {
      "tool_id": "kuaishou_kling",
      "name": "快手可灵AI生成工具",
      "category": "ai_generation",
      "description": "支持AI视频生成、AI图片生成、AI对口型等功能的统一接口。可以通过文本或图片生成视频，生成多张AI图片，以及为视频添加对口型效果。",
      "input_schema": {
        "type": "object",
        "properties": {
          "biz_type": {
            "type": "string",
            "enum": [
              "aiImage",
              "aiVideo",
              "aiLipSync"
            ],
            "description": "业务类型"
          },
          "action": {
            "type": "string",
            "description": "动作类型"
          },
          "prompt": {
            "type": "string",
            "description": "生成内容的提示词"
          },
          "negative_prompt": {
            "type": "string",
            "description": "不希望呈现的内容"
          },
          "cfg": {
            "type": "string",
            "default": "50",
            "description": "创意想象力与创意相关性比例"
          },
          "mode": {
            "type": "string",
            "enum": [
              "text2video",
              "audio2video"
            ],
            "description": "生成模式"
          },
          "image_url": {
            "type": "string",
            "description": "参考图片地址"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "16:9",
            "description": "长宽比"
          },
          "task_id": {
            "type": "string",
            "description": "查询任务状态时使用"
          },
          "cookie": {
            "type": "string",
            "description": "认证Cookie"
          },
          "version": {
            "type": "string",
            "description": "模型版本"
          },
          "image_count": {
            "type": "integer",
            "default": 4,
            "description": "生成图片数量(1-4)"
          },
          "add_audio": {
            "type": "boolean",
            "default": false,
            "description": "是否自动添加音频"
          },
          "start_frame_image": {
            "type": "string",
            "description": "首帧图片URL"
          },
          "end_frame_image": {
            "type": "string",
            "description": "尾帧图片URL"
          },
          "video_id": {
            "type": "string",
            "description": "视频ID(对口型用)"
          },
          "video_url": {
            "type": "string",
            "description": "视频URL(对口型用)"
          },
          "text": {
            "type": "string",
            "description": "对口型文本内容"
          },
          "voice_id": {
            "type": "string",
            "description": "音色ID"
          },
          "voice_language": {
            "type": "string",
            "enum": [
              "zh",
              "en"
            ],
            "default": "zh",
            "description": "音色语种"
          },
          "voice_speed": {
            "type": "number",
            "default": 1,
            "description": "语速"
          },
          "audio_type": {
            "type": "string",
            "enum": [
              "file",
              "url"
            ],
            "description": "音频类型"
          },
          "audio_file": {
            "type": "string",
            "description": "音频文件路径"
          },
          "audio_url": {
            "type": "string",
            "description": "音频URL"
          }
        },
        "required": [
          "biz_type"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "task_id": {
            "type": "string",
            "description": "任务ID"
          },
          "status": {
            "type": "string",
            "enum": [
              "process",
              "finished",
              "failed"
            ],
            "description": "任务状态"
          },
          "result": {
            "type": "object",
            "description": "生成结果",
            "properties": {
              "images": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "图片URL列表"
              },
              "videos": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "视频URL列表"
              }
            }
          },
          "error": {
            "type": "string",
            "description": "错误信息"
          }
        }
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [],
      "tool_slug_ids": []
    },
    {
      "tool_id": "jimeng_ai",
      "name": "Jimeng AI Generator",
      "category": "ai",
      "description": "AI generation tool supporting text-to-image (Seendance 2.0) and image-to-video (Seedream Lite 5.0)",
      "input_schema": {
        "type": "object",
        "required": [
          "action"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "text2image",
              "image2video",
              "query_status"
            ],
            "description": "Operation type: text2image, image2video, or query_status"
          },
          "prompt": {
            "type": "string",
            "description": "Positive prompt describing desired content"
          },
          "negative_prompt": {
            "type": "string",
            "description": "Negative prompt for unwanted content"
          },
          "model": {
            "type": "string",
            "enum": [
              "seendance_2.0",
              "seedream_lite_5.0"
            ],
            "description": "Model selection"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "16:9",
              "9:16",
              "4:3",
              "3:4"
            ],
            "description": "Image aspect ratio"
          },
          "image_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "description": "Number of images to generate"
          },
          "cfg_scale": {
            "type": "number",
            "minimum": 1,
            "maximum": 20,
            "description": "Creativity strength"
          },
          "steps": {
            "type": "integer",
            "minimum": 10,
            "maximum": 50,
            "description": "Generation steps"
          },
          "seed": {
            "type": "integer",
            "description": "Random seed for reproducibility"
          },
          "image_url": {
            "type": "string",
            "description": "Reference image URL (for image2video)"
          },
          "image_base64": {
            "type": "string",
            "description": "Reference image Base64 (alternative to image_url)"
          },
          "video_duration": {
            "type": "integer",
            "enum": [
              3,
              5,
              10
            ],
            "description": "Video duration in seconds"
          },
          "motion_strength": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Motion strength (0=static, 1=maximum)"
          },
          "task_id": {
            "type": "string",
            "description": "Task ID for status query"
          },
          "cookie": {
            "type": "string",
            "description": "Authentication cookie"
          },
          "api_key": {
            "type": "string",
            "description": "API key"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "task_id": {
            "type": "string",
            "description": "Unique task identifier"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ],
            "description": "Task status"
          },
          "progress": {
            "type": "number",
            "description": "Progress percentage (0-100)"
          },
          "result": {
            "type": "object",
            "description": "Generation results",
            "properties": {
              "images": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Generated image URLs"
              },
              "videos": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Generated video URLs"
              },
              "metadata": {
                "type": "object",
                "description": "Generation metadata"
              }
            }
          },
          "error": {
            "type": "string",
            "description": "Error message if failed"
          },
          "estimated_time": {
            "type": "integer",
            "description": "Estimated completion time in seconds"
          }
        },
        "required": [
          "task_id",
          "status"
        ]
      },
      "stream_support": false,
      "status": "active",
      "backend_runtime": "local",
      "group_ids": [],
      "tool_slug_ids": []
    }
  ],
  "version": "2.0"
}