registry.json 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
  1. {
  2. "tools": [
  3. {
  4. "tool_id": "image_stitcher",
  5. "name": "图片拼接工具",
  6. "category": "cv",
  7. "description": "将多张图片按指定方向(水平/垂直/网格)拼接成一张大图。支持间距设置、背景色填充和统一缩放模式。输入输出均为 Base64 编码的 PNG 图片。",
  8. "input_schema": {
  9. "properties": {
  10. "background_color": {
  11. "default": "#FFFFFF",
  12. "description": "间距填充背景色,十六进制颜色值",
  13. "type": "string"
  14. },
  15. "columns": {
  16. "default": 2,
  17. "description": "grid 模式下每行的列数",
  18. "minimum": 1,
  19. "type": "integer"
  20. },
  21. "direction": {
  22. "default": "horizontal",
  23. "description": "拼接方向:horizontal=水平,vertical=垂直,grid=网格",
  24. "enum": [
  25. "horizontal",
  26. "vertical",
  27. "grid"
  28. ],
  29. "type": "string"
  30. },
  31. "images": {
  32. "description": "Base64 编码的图片列表,至少 2 张",
  33. "items": {
  34. "type": "string"
  35. },
  36. "minItems": 2,
  37. "type": "array"
  38. },
  39. "resize_mode": {
  40. "default": "none",
  41. "description": "缩放模式:none=不缩放,fit_width=统一宽度,fit_height=统一高度",
  42. "enum": [
  43. "none",
  44. "fit_width",
  45. "fit_height"
  46. ],
  47. "type": "string"
  48. },
  49. "spacing": {
  50. "default": 0,
  51. "description": "图片间距(像素)",
  52. "minimum": 0,
  53. "type": "integer"
  54. }
  55. },
  56. "reason": "图片拼接工具输入参数定义",
  57. "required": [
  58. "images"
  59. ],
  60. "type": "object"
  61. },
  62. "output_schema": {
  63. "properties": {
  64. "height": {
  65. "description": "结果图高度(像素)",
  66. "type": "integer"
  67. },
  68. "image": {
  69. "description": "拼接结果,Base64 编码的 PNG 图片",
  70. "type": "string"
  71. },
  72. "width": {
  73. "description": "结果图宽度(像素)",
  74. "type": "integer"
  75. }
  76. },
  77. "reason": "图片拼接工具输出结果定义",
  78. "required": [
  79. "image",
  80. "width",
  81. "height"
  82. ],
  83. "type": "object"
  84. },
  85. "stream_support": false,
  86. "status": "active",
  87. "backend_runtime": "local",
  88. "group_ids": [],
  89. "tool_slug_ids": []
  90. },
  91. {
  92. "tool_id": "liblibai_controlnet",
  93. "name": "LibLib ControlNet 图生图",
  94. "category": "cv",
  95. "description": "基于 LibLib AI 开放 API 的 ControlNet Canny 图生图工具,支持通过边缘检测控制图像生成",
  96. "input_schema": {
  97. "type": "object",
  98. "properties": {
  99. "image": {
  100. "type": "string",
  101. "description": "图片来源,支持 Base64 编码的图片数据或 HTTP 图片 URL"
  102. },
  103. "prompt": {
  104. "type": "string",
  105. "description": "正向提示词"
  106. },
  107. "negative_prompt": {
  108. "type": "string",
  109. "description": "反向提示词",
  110. "default": "lowres, bad anatomy, text, error"
  111. },
  112. "width": {
  113. "type": "integer",
  114. "description": "输出宽度",
  115. "default": 512
  116. },
  117. "height": {
  118. "type": "integer",
  119. "description": "输出高度",
  120. "default": 512
  121. },
  122. "steps": {
  123. "type": "integer",
  124. "description": "采样步数",
  125. "default": 20
  126. },
  127. "cfg_scale": {
  128. "type": "number",
  129. "description": "CFG Scale",
  130. "default": 7
  131. },
  132. "img_count": {
  133. "type": "integer",
  134. "description": "生成图片数量",
  135. "default": 1
  136. },
  137. "control_weight": {
  138. "type": "number",
  139. "description": "ControlNet 权重",
  140. "default": 1
  141. },
  142. "preprocessor": {
  143. "type": "integer",
  144. "description": "预处理器枚举",
  145. "default": 1
  146. },
  147. "canny_low": {
  148. "type": "integer",
  149. "description": "Canny 低阈值",
  150. "default": 100
  151. },
  152. "canny_high": {
  153. "type": "integer",
  154. "description": "Canny 高阈值",
  155. "default": 200
  156. }
  157. },
  158. "required": [
  159. "image",
  160. "prompt"
  161. ]
  162. },
  163. "output_schema": {
  164. "type": "object",
  165. "properties": {
  166. "images": {
  167. "type": "array",
  168. "items": {
  169. "type": "string"
  170. },
  171. "description": "生成的图片 URL 列表"
  172. },
  173. "task_id": {
  174. "type": "string",
  175. "description": "任务 ID"
  176. },
  177. "status": {
  178. "type": "string",
  179. "description": "任务状态(success/failed/timeout)"
  180. }
  181. }
  182. },
  183. "stream_support": false,
  184. "status": "active",
  185. "backend_runtime": "local",
  186. "group_ids": [],
  187. "tool_slug_ids": []
  188. },
  189. {
  190. "tool_id": "launch_comfy_env",
  191. "name": "Launch ComfyUI Environment",
  192. "category": "ai",
  193. "description": "启动 RunComfy 云端机器并等待就绪。返回 server_id 用于后续 ComfyUI workflow 执行。需要环境变量 RUNCOMFY_USER_ID 和 API_TOKEN。",
  194. "input_schema": {
  195. "type": "object",
  196. "properties": {
  197. "version_id": {
  198. "type": "string",
  199. "description": "RunComfy workflow version ID",
  200. "default": "90f77137-ba75-400d-870f-204c614ae8a3"
  201. },
  202. "server_type": {
  203. "type": "string",
  204. "enum": [
  205. "medium",
  206. "large",
  207. "extra-large",
  208. "2x-large",
  209. "2xl-turbo"
  210. ],
  211. "description": "机器规格",
  212. "default": "medium"
  213. },
  214. "duration": {
  215. "type": "integer",
  216. "description": "预估运行时长(秒)",
  217. "default": 3600
  218. }
  219. }
  220. },
  221. "output_schema": {
  222. "type": "object",
  223. "properties": {
  224. "server_id": {
  225. "type": "string",
  226. "description": "机器唯一标识,用于后续操作"
  227. },
  228. "comfy_url": {
  229. "type": "string",
  230. "description": "ComfyUI 访问地址"
  231. },
  232. "status": {
  233. "type": "string",
  234. "description": "机器状态"
  235. },
  236. "usage_instruction": {
  237. "type": "string",
  238. "description": "使用说明"
  239. }
  240. },
  241. "required": [
  242. "server_id",
  243. "comfy_url",
  244. "status",
  245. "usage_instruction"
  246. ]
  247. },
  248. "stream_support": false,
  249. "status": "active",
  250. "backend_runtime": "local",
  251. "group_ids": [
  252. "runcomfy_lifecycle"
  253. ],
  254. "tool_slug_ids": [
  255. "comfyui"
  256. ]
  257. },
  258. {
  259. "tool_id": "runcomfy_workflow_executor",
  260. "name": "RunComfy Workflow Executor",
  261. "category": "image_generation",
  262. "description": "在已就绪的 RunComfy 机器上提交 ComfyUI 工作流,上传输入文件,监听执行状态,下载结果图片(不启动/关闭机器)",
  263. "input_schema": {
  264. "type": "object",
  265. "required": [
  266. "server_id",
  267. "workflow_api"
  268. ],
  269. "properties": {
  270. "server_id": {
  271. "type": "string",
  272. "description": "已启动的 RunComfy 机器 ID"
  273. },
  274. "workflow_api": {
  275. "type": "object",
  276. "description": "ComfyUI workflow_api.json 内容(字典格式)"
  277. },
  278. "input_files": {
  279. "type": "array",
  280. "description": "可选的输入文件列表",
  281. "items": {
  282. "type": "object",
  283. "required": [
  284. "filename",
  285. "type",
  286. "base64_data"
  287. ],
  288. "properties": {
  289. "filename": {
  290. "type": "string",
  291. "description": "文件名"
  292. },
  293. "type": {
  294. "type": "string",
  295. "description": "文件类型:images/loras/checkpoints/vae/controlnet"
  296. },
  297. "base64_data": {
  298. "type": "string",
  299. "description": "文件的 Base64 编码数据"
  300. }
  301. }
  302. }
  303. }
  304. }
  305. },
  306. "output_schema": {
  307. "type": "object",
  308. "properties": {
  309. "prompt_id": {
  310. "type": "string",
  311. "description": "任务 ID"
  312. },
  313. "images": {
  314. "type": "array",
  315. "items": {
  316. "type": "string"
  317. },
  318. "description": "结果图片的 Base64 数据列表"
  319. },
  320. "status": {
  321. "type": "string",
  322. "description": "执行状态"
  323. },
  324. "server_id": {
  325. "type": "string",
  326. "description": "机器 ID"
  327. }
  328. }
  329. },
  330. "stream_support": false,
  331. "status": "active",
  332. "backend_runtime": "local",
  333. "group_ids": [
  334. "runcomfy_lifecycle"
  335. ],
  336. "tool_slug_ids": [
  337. "comfyui"
  338. ]
  339. },
  340. {
  341. "tool_id": "runcomfy_stop_env",
  342. "name": "RunComfy Stop Service",
  343. "category": "cloud",
  344. "description": "Stop and delete RunComfy server instances to release resources. Works with launch_comfy_env for complete lifecycle management.",
  345. "input_schema": {
  346. "type": "object",
  347. "properties": {
  348. "server_id": {
  349. "type": "string",
  350. "description": "The server ID to stop"
  351. }
  352. },
  353. "required": [
  354. "server_id"
  355. ]
  356. },
  357. "output_schema": {
  358. "type": "object",
  359. "properties": {
  360. "server_id": {
  361. "type": "string",
  362. "description": "The stopped server ID"
  363. },
  364. "status": {
  365. "type": "string",
  366. "description": "Deleted, NotFound, or Error"
  367. },
  368. "message": {
  369. "type": "string",
  370. "description": "Detailed result message"
  371. }
  372. }
  373. },
  374. "stream_support": false,
  375. "status": "active",
  376. "backend_runtime": "local",
  377. "group_ids": [
  378. "runcomfy_lifecycle"
  379. ],
  380. "tool_slug_ids": [
  381. "comfyui"
  382. ]
  383. },
  384. {
  385. "tool_id": "ji_meng_add_task",
  386. "name": "即梦-创建任务",
  387. "tool_slug_ids": [],
  388. "category": "cv",
  389. "description": "提交异步任务到上游(本地服务转发 JI_MENG_API_BASE,POST /add_task)。需配置 tools/local/ji_meng/.env。",
  390. "input_schema": {
  391. "type": "object",
  392. "properties": {
  393. "task_type": {
  394. "type": "string",
  395. "enum": [
  396. "image",
  397. "video"
  398. ],
  399. "description": "任务类型:图生/文生图或视频"
  400. },
  401. "prompt": {
  402. "type": "string",
  403. "description": "任务描述 / 提示词"
  404. },
  405. "image_url": {
  406. "type": "string",
  407. "description": "可选,图生类任务时的参考图 URL"
  408. }
  409. },
  410. "required": [
  411. "task_type",
  412. "prompt"
  413. ]
  414. },
  415. "output_schema": {
  416. "type": "object",
  417. "properties": {
  418. "task_id": {
  419. "type": "string",
  420. "description": "任务 ID,用于 ji_meng_query_task"
  421. },
  422. "status": {
  423. "type": "string"
  424. }
  425. }
  426. },
  427. "stream_support": false,
  428. "status": "active",
  429. "backend_runtime": "local",
  430. "group_ids": [
  431. "ji_meng_task_lifecycle"
  432. ]
  433. },
  434. {
  435. "tool_id": "ji_meng_query_task",
  436. "name": "即梦-查询任务",
  437. "tool_slug_ids": [],
  438. "category": "cv",
  439. "description": "按 task_id 查询任务状态与结果(本地服务转发上游,POST /query_task)。",
  440. "input_schema": {
  441. "type": "object",
  442. "properties": {
  443. "task_id": {
  444. "type": "string",
  445. "description": "ji_meng_add_task 返回的任务 ID"
  446. }
  447. },
  448. "required": [
  449. "task_id"
  450. ]
  451. },
  452. "output_schema": {
  453. "type": "object",
  454. "properties": {
  455. "task_id": {
  456. "type": "string"
  457. },
  458. "status": {
  459. "type": "string"
  460. },
  461. "message": {
  462. "type": "string"
  463. },
  464. "images": {
  465. "type": "array",
  466. "items": {
  467. "type": "string"
  468. }
  469. }
  470. }
  471. },
  472. "stream_support": false,
  473. "status": "active",
  474. "backend_runtime": "local",
  475. "group_ids": [
  476. "ji_meng_task_lifecycle"
  477. ]
  478. },
  479. {
  480. "tool_id": "nano_banana",
  481. "name": "Nano Banana(Gemini 图模)",
  482. "tool_slug_ids": [],
  483. "category": "cv",
  484. "description": "通过 Google Gemini 原生图模 REST generateContent 文生图/图生图。需 GEMINI_API_KEY;可选 gemini-2.5-flash-image、gemini-3.1-flash-image-preview 等。详见 https://ai.google.dev/gemini-api/docs/image-generation?hl=zh-cn#rest",
  485. "input_schema": {
  486. "type": "object",
  487. "properties": {
  488. "prompt": {
  489. "type": "string",
  490. "description": "提示词(文生图或与参考图配合做编辑)"
  491. },
  492. "model": {
  493. "type": "string",
  494. "description": "模型 ID;省略则使用环境变量 GEMINI_IMAGE_MODEL,默认 gemini-2.5-flash-image。示例:gemini-3.1-flash-image-preview"
  495. },
  496. "aspect_ratio": {
  497. "type": "string",
  498. "description": "输出宽高比,如 1:1、16:9(对应 generationConfig.imageConfig.aspectRatio)"
  499. },
  500. "image_size": {
  501. "type": "string",
  502. "description": "Gemini 3.x 输出规格:512、1K、2K、4K(须大写 K,见官方文档)"
  503. },
  504. "response_modalities": {
  505. "type": "array",
  506. "items": {
  507. "type": "string"
  508. },
  509. "description": "如 [\"TEXT\",\"IMAGE\"] 或 [\"IMAGE\"];省略则由 API 默认"
  510. },
  511. "images": {
  512. "type": "array",
  513. "description": "可选参考图,每项为 {mime_type, data},data 为 Base64 或 data URL",
  514. "items": {
  515. "type": "object",
  516. "properties": {
  517. "mime_type": {
  518. "type": "string"
  519. },
  520. "data": {
  521. "type": "string"
  522. }
  523. },
  524. "required": [
  525. "data"
  526. ]
  527. }
  528. }
  529. },
  530. "required": [
  531. "prompt"
  532. ]
  533. },
  534. "output_schema": {
  535. "type": "object",
  536. "properties": {
  537. "images": {
  538. "type": "array",
  539. "items": {
  540. "type": "string"
  541. },
  542. "description": "data:mime;base64,... 列表"
  543. },
  544. "model": {
  545. "type": "string",
  546. "description": "实际调用的模型 ID"
  547. },
  548. "text": {
  549. "type": "string",
  550. "description": "若返回文本部分则在此汇总"
  551. }
  552. }
  553. },
  554. "stream_support": false,
  555. "status": "active",
  556. "backend_runtime": "local",
  557. "group_ids": []
  558. },
  559. {
  560. "tool_id": "flux_submit",
  561. "name": "FLUX-提交生图任务",
  562. "tool_slug_ids": [],
  563. "category": "cv",
  564. "description": "向 BFL 提交异步生图任务(POST /v1/{model})。需 BFL_API_KEY;model 为端点名如 flux-2-pro-preview。返回 id、polling_url 供 flux_query 轮询。文档 https://docs.bfl.ai/quick_start/generating_images",
  565. "input_schema": {
  566. "type": "object",
  567. "properties": {
  568. "model": {
  569. "type": "string",
  570. "description": "端点路径段,如 flux-2-pro-preview、flux-2-max、flux-dev、flux-kontext-pro 等"
  571. },
  572. "prompt": {
  573. "type": "string",
  574. "description": "提示词"
  575. },
  576. "width": {
  577. "type": "integer",
  578. "description": "输出宽度(像素),可选"
  579. },
  580. "height": {
  581. "type": "integer",
  582. "description": "输出高度(像素),可选"
  583. },
  584. "parameters": {
  585. "type": "object",
  586. "description": "合并进 BFL 请求体的额外字段(模型专有参数)"
  587. }
  588. },
  589. "required": [
  590. "model",
  591. "prompt"
  592. ]
  593. },
  594. "output_schema": {
  595. "type": "object",
  596. "properties": {
  597. "id": {
  598. "type": "string",
  599. "description": "请求 ID,flux_query 的 request_id"
  600. },
  601. "polling_url": {
  602. "type": "string",
  603. "description": "轮询地址,须原样传给 flux_query(全球端点必须用返回的 URL)"
  604. }
  605. }
  606. },
  607. "stream_support": false,
  608. "status": "active",
  609. "backend_runtime": "local",
  610. "group_ids": [
  611. "flux_bfl_lifecycle"
  612. ]
  613. },
  614. {
  615. "tool_id": "flux_query",
  616. "name": "FLUX-查询任务结果",
  617. "tool_slug_ids": [],
  618. "category": "cv",
  619. "description": "按 flux_submit 返回的 polling_url 与 id 轮询状态;Ready 时 result.sample 为签名图 URL(约 10 分钟有效)。",
  620. "input_schema": {
  621. "type": "object",
  622. "properties": {
  623. "polling_url": {
  624. "type": "string",
  625. "description": "提交响应中的 polling_url"
  626. },
  627. "request_id": {
  628. "type": "string",
  629. "description": "提交响应中的 id"
  630. }
  631. },
  632. "required": [
  633. "polling_url",
  634. "request_id"
  635. ]
  636. },
  637. "output_schema": {
  638. "type": "object",
  639. "properties": {
  640. "status": {
  641. "type": "string",
  642. "description": "如 Ready、Pending、Error、Failed 等"
  643. },
  644. "result": {
  645. "type": "object",
  646. "description": "成功时常含 sample(图片签名 URL)"
  647. }
  648. }
  649. },
  650. "stream_support": false,
  651. "status": "active",
  652. "backend_runtime": "local",
  653. "group_ids": [
  654. "flux_bfl_lifecycle"
  655. ]
  656. },
  657. {
  658. "tool_id": "midjourney_submit_job",
  659. "name": "Midjourney-提交生图任务",
  660. "tool_slug_ids": [],
  661. "category": "cv",
  662. "description": "提交 Midjourney 生图任务(转发至 MIDJOURNEY_API_BASE/submit_job)。需配置 tools/local/midjourney/.env。mode 为 relaxed 或 fast。",
  663. "input_schema": {
  664. "type": "object",
  665. "properties": {
  666. "cookie": {
  667. "type": "string",
  668. "description": "Midjourney 会话 cookie"
  669. },
  670. "prompt": {
  671. "type": "string",
  672. "description": "提示词"
  673. },
  674. "user_id": {
  675. "type": "string",
  676. "description": "用户 ID"
  677. },
  678. "mode": {
  679. "type": "string",
  680. "enum": [
  681. "relaxed",
  682. "fast"
  683. ],
  684. "description": "队列模式:relaxed 或 fast"
  685. }
  686. },
  687. "required": [
  688. "cookie",
  689. "prompt",
  690. "user_id",
  691. "mode"
  692. ]
  693. },
  694. "output_schema": {
  695. "type": "object",
  696. "description": "上游返回 JSON,通常含 job_id 或 id",
  697. "properties": {}
  698. },
  699. "stream_support": false,
  700. "status": "active",
  701. "backend_runtime": "local",
  702. "group_ids": [
  703. "midjourney_lifecycle"
  704. ]
  705. },
  706. {
  707. "tool_id": "midjourney_query_job_status",
  708. "name": "Midjourney-查询任务状态",
  709. "tool_slug_ids": [],
  710. "category": "cv",
  711. "description": "查询指定任务状态(转发 MIDJOURNEY_API_BASE/query_job_status)。",
  712. "input_schema": {
  713. "type": "object",
  714. "properties": {
  715. "cookie": {
  716. "type": "string",
  717. "description": "Midjourney 会话 cookie"
  718. },
  719. "job_id": {
  720. "type": "string",
  721. "description": "submit_job 返回的任务 ID"
  722. }
  723. },
  724. "required": [
  725. "cookie",
  726. "job_id"
  727. ]
  728. },
  729. "output_schema": {
  730. "type": "object",
  731. "description": "上游状态 JSON,如 status / job_status 等",
  732. "properties": {}
  733. },
  734. "stream_support": false,
  735. "status": "active",
  736. "backend_runtime": "local",
  737. "group_ids": [
  738. "midjourney_lifecycle"
  739. ]
  740. },
  741. {
  742. "tool_id": "midjourney_get_image_urls",
  743. "name": "Midjourney-获取结果图链接",
  744. "tool_slug_ids": [],
  745. "category": "cv",
  746. "description": "根据 job_id 获取 4 张图 URL(转发 MIDJOURNEY_API_BASE/get_image_urls)。",
  747. "input_schema": {
  748. "type": "object",
  749. "properties": {
  750. "job_id": {
  751. "type": "string",
  752. "description": "任务 ID"
  753. }
  754. },
  755. "required": [
  756. "job_id"
  757. ]
  758. },
  759. "output_schema": {
  760. "type": "object",
  761. "description": "上游返回 JSON 或 URL 数组,常见字段 image_urls / urls",
  762. "properties": {
  763. "image_urls": {
  764. "type": "array",
  765. "items": {
  766. "type": "string"
  767. },
  768. "description": "四张图片链接(字段名以实际服务为准)"
  769. }
  770. }
  771. },
  772. "stream_support": false,
  773. "status": "active",
  774. "backend_runtime": "local",
  775. "group_ids": [
  776. "midjourney_lifecycle"
  777. ]
  778. }
  779. ],
  780. "version": "2.0"
  781. }