registry.json 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  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": "kuaishou_kling",
  386. "name": "快手可灵AI生成工具",
  387. "category": "ai_generation",
  388. "description": "支持AI视频生成、AI图片生成、AI对口型等功能的统一接口。可以通过文本或图片生成视频,生成多张AI图片,以及为视频添加对口型效果。",
  389. "input_schema": {
  390. "type": "object",
  391. "properties": {
  392. "biz_type": {
  393. "type": "string",
  394. "enum": [
  395. "aiImage",
  396. "aiVideo",
  397. "aiLipSync"
  398. ],
  399. "description": "业务类型"
  400. },
  401. "action": {
  402. "type": "string",
  403. "description": "动作类型"
  404. },
  405. "prompt": {
  406. "type": "string",
  407. "description": "生成内容的提示词"
  408. },
  409. "negative_prompt": {
  410. "type": "string",
  411. "description": "不希望呈现的内容"
  412. },
  413. "cfg": {
  414. "type": "string",
  415. "default": "50",
  416. "description": "创意想象力与创意相关性比例"
  417. },
  418. "mode": {
  419. "type": "string",
  420. "enum": [
  421. "text2video",
  422. "audio2video"
  423. ],
  424. "description": "生成模式"
  425. },
  426. "image_url": {
  427. "type": "string",
  428. "description": "参考图片地址"
  429. },
  430. "aspect_ratio": {
  431. "type": "string",
  432. "enum": [
  433. "9:16",
  434. "16:9",
  435. "1:1"
  436. ],
  437. "default": "16:9",
  438. "description": "长宽比"
  439. },
  440. "task_id": {
  441. "type": "string",
  442. "description": "查询任务状态时使用"
  443. },
  444. "cookie": {
  445. "type": "string",
  446. "description": "认证Cookie"
  447. },
  448. "version": {
  449. "type": "string",
  450. "description": "模型版本"
  451. },
  452. "image_count": {
  453. "type": "integer",
  454. "default": 4,
  455. "description": "生成图片数量(1-4)"
  456. },
  457. "add_audio": {
  458. "type": "boolean",
  459. "default": false,
  460. "description": "是否自动添加音频"
  461. },
  462. "start_frame_image": {
  463. "type": "string",
  464. "description": "首帧图片URL"
  465. },
  466. "end_frame_image": {
  467. "type": "string",
  468. "description": "尾帧图片URL"
  469. },
  470. "video_id": {
  471. "type": "string",
  472. "description": "视频ID(对口型用)"
  473. },
  474. "video_url": {
  475. "type": "string",
  476. "description": "视频URL(对口型用)"
  477. },
  478. "text": {
  479. "type": "string",
  480. "description": "对口型文本内容"
  481. },
  482. "voice_id": {
  483. "type": "string",
  484. "description": "音色ID"
  485. },
  486. "voice_language": {
  487. "type": "string",
  488. "enum": [
  489. "zh",
  490. "en"
  491. ],
  492. "default": "zh",
  493. "description": "音色语种"
  494. },
  495. "voice_speed": {
  496. "type": "number",
  497. "default": 1,
  498. "description": "语速"
  499. },
  500. "audio_type": {
  501. "type": "string",
  502. "enum": [
  503. "file",
  504. "url"
  505. ],
  506. "description": "音频类型"
  507. },
  508. "audio_file": {
  509. "type": "string",
  510. "description": "音频文件路径"
  511. },
  512. "audio_url": {
  513. "type": "string",
  514. "description": "音频URL"
  515. }
  516. },
  517. "required": [
  518. "biz_type"
  519. ]
  520. },
  521. "output_schema": {
  522. "type": "object",
  523. "properties": {
  524. "task_id": {
  525. "type": "string",
  526. "description": "任务ID"
  527. },
  528. "status": {
  529. "type": "string",
  530. "enum": [
  531. "process",
  532. "finished",
  533. "failed"
  534. ],
  535. "description": "任务状态"
  536. },
  537. "result": {
  538. "type": "object",
  539. "description": "生成结果",
  540. "properties": {
  541. "images": {
  542. "type": "array",
  543. "items": {
  544. "type": "string"
  545. },
  546. "description": "图片URL列表"
  547. },
  548. "videos": {
  549. "type": "array",
  550. "items": {
  551. "type": "string"
  552. },
  553. "description": "视频URL列表"
  554. }
  555. }
  556. },
  557. "error": {
  558. "type": "string",
  559. "description": "错误信息"
  560. }
  561. }
  562. },
  563. "stream_support": false,
  564. "status": "active",
  565. "backend_runtime": "local",
  566. "group_ids": [],
  567. "tool_slug_ids": []
  568. },
  569. {
  570. "tool_id": "jimeng_ai",
  571. "name": "Jimeng AI Generator",
  572. "category": "ai",
  573. "description": "AI generation tool supporting text-to-image (Seendance 2.0) and image-to-video (Seedream Lite 5.0)",
  574. "input_schema": {
  575. "type": "object",
  576. "required": [
  577. "action"
  578. ],
  579. "properties": {
  580. "action": {
  581. "type": "string",
  582. "enum": [
  583. "text2image",
  584. "image2video",
  585. "query_status"
  586. ],
  587. "description": "Operation type: text2image, image2video, or query_status"
  588. },
  589. "prompt": {
  590. "type": "string",
  591. "description": "Positive prompt describing desired content"
  592. },
  593. "negative_prompt": {
  594. "type": "string",
  595. "description": "Negative prompt for unwanted content"
  596. },
  597. "model": {
  598. "type": "string",
  599. "enum": [
  600. "seendance_2.0",
  601. "seedream_lite_5.0"
  602. ],
  603. "description": "Model selection"
  604. },
  605. "aspect_ratio": {
  606. "type": "string",
  607. "enum": [
  608. "1:1",
  609. "16:9",
  610. "9:16",
  611. "4:3",
  612. "3:4"
  613. ],
  614. "description": "Image aspect ratio"
  615. },
  616. "image_count": {
  617. "type": "integer",
  618. "minimum": 1,
  619. "maximum": 4,
  620. "description": "Number of images to generate"
  621. },
  622. "cfg_scale": {
  623. "type": "number",
  624. "minimum": 1,
  625. "maximum": 20,
  626. "description": "Creativity strength"
  627. },
  628. "steps": {
  629. "type": "integer",
  630. "minimum": 10,
  631. "maximum": 50,
  632. "description": "Generation steps"
  633. },
  634. "seed": {
  635. "type": "integer",
  636. "description": "Random seed for reproducibility"
  637. },
  638. "image_url": {
  639. "type": "string",
  640. "description": "Reference image URL (for image2video)"
  641. },
  642. "image_base64": {
  643. "type": "string",
  644. "description": "Reference image Base64 (alternative to image_url)"
  645. },
  646. "video_duration": {
  647. "type": "integer",
  648. "enum": [
  649. 3,
  650. 5,
  651. 10
  652. ],
  653. "description": "Video duration in seconds"
  654. },
  655. "motion_strength": {
  656. "type": "number",
  657. "minimum": 0,
  658. "maximum": 1,
  659. "description": "Motion strength (0=static, 1=maximum)"
  660. },
  661. "task_id": {
  662. "type": "string",
  663. "description": "Task ID for status query"
  664. },
  665. "cookie": {
  666. "type": "string",
  667. "description": "Authentication cookie"
  668. },
  669. "api_key": {
  670. "type": "string",
  671. "description": "API key"
  672. }
  673. }
  674. },
  675. "output_schema": {
  676. "type": "object",
  677. "properties": {
  678. "task_id": {
  679. "type": "string",
  680. "description": "Unique task identifier"
  681. },
  682. "status": {
  683. "type": "string",
  684. "enum": [
  685. "pending",
  686. "processing",
  687. "completed",
  688. "failed"
  689. ],
  690. "description": "Task status"
  691. },
  692. "progress": {
  693. "type": "number",
  694. "description": "Progress percentage (0-100)"
  695. },
  696. "result": {
  697. "type": "object",
  698. "description": "Generation results",
  699. "properties": {
  700. "images": {
  701. "type": "array",
  702. "items": {
  703. "type": "string"
  704. },
  705. "description": "Generated image URLs"
  706. },
  707. "videos": {
  708. "type": "array",
  709. "items": {
  710. "type": "string"
  711. },
  712. "description": "Generated video URLs"
  713. },
  714. "metadata": {
  715. "type": "object",
  716. "description": "Generation metadata"
  717. }
  718. }
  719. },
  720. "error": {
  721. "type": "string",
  722. "description": "Error message if failed"
  723. },
  724. "estimated_time": {
  725. "type": "integer",
  726. "description": "Estimated completion time in seconds"
  727. }
  728. },
  729. "required": [
  730. "task_id",
  731. "status"
  732. ]
  733. },
  734. "stream_support": false,
  735. "status": "active",
  736. "backend_runtime": "local",
  737. "group_ids": [],
  738. "tool_slug_ids": []
  739. }
  740. ],
  741. "version": "2.0"
  742. }