From 4041a7134f363e63b2668527747cc889db52cb5c Mon Sep 17 00:00:00 2001 From: ElgoogUdiab Date: Thu, 24 Sep 2026 15:56:07 +0800 Subject: [PATCH 1/5] feat(hyper3d-rodin): add Rodin and BANG remote MCP plugin --- assets/hyper3d-rodin/icon.jpg | Bin 0 -> 15800 bytes marketplace.json | 32 +++ plugins/hyper3d-rodin/.mcp.json | 9 + .../hyper3d-rodin/.zcode-plugin/plugin.json | 31 +++ plugins/hyper3d-rodin/LICENSE | 202 ++++++++++++++++++ plugins/hyper3d-rodin/README.md | 130 +++++++++++ plugins/hyper3d-rodin/README_CN.md | 103 +++++++++ .../skills/hyper3d-rodin/SKILL.md | 132 ++++++++++++ 8 files changed, 639 insertions(+) create mode 100644 assets/hyper3d-rodin/icon.jpg create mode 100644 plugins/hyper3d-rodin/.mcp.json create mode 100644 plugins/hyper3d-rodin/.zcode-plugin/plugin.json create mode 100644 plugins/hyper3d-rodin/LICENSE create mode 100644 plugins/hyper3d-rodin/README.md create mode 100644 plugins/hyper3d-rodin/README_CN.md create mode 100644 plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md diff --git a/assets/hyper3d-rodin/icon.jpg b/assets/hyper3d-rodin/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..797ad6740bcbb3cd57c807a43c621399840926e5 GIT binary patch literal 15800 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 Date: Thu, 24 Sep 2026 17:27:13 +0800 Subject: [PATCH 2/5] fix(hyper3d-rodin): apply ZCode GUI acceptance findings --- marketplace.json | 2 +- .../hyper3d-rodin/.zcode-plugin/plugin.json | 2 +- plugins/hyper3d-rodin/README.md | 46 ++++++++++--------- plugins/hyper3d-rodin/README_CN.md | 33 +++++++------ .../skills/hyper3d-rodin/SKILL.md | 35 ++++++++------ 5 files changed, 64 insertions(+), 54 deletions(-) diff --git a/marketplace.json b/marketplace.json index 8ac5bee..f5c21e5 100644 --- a/marketplace.json +++ b/marketplace.json @@ -753,7 +753,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.0", + "version": "0.1.1", "author": { "name": "Deemos", "url": "https://hyper3d.ai" diff --git a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json index a1eac5b..e9b9ddc 100644 --- a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json +++ b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json @@ -10,7 +10,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.0", + "version": "0.1.1", "author": { "name": "Deemos", "url": "https://hyper3d.ai" diff --git a/plugins/hyper3d-rodin/README.md b/plugins/hyper3d-rodin/README.md index 8d132ee..fb71357 100644 --- a/plugins/hyper3d-rodin/README.md +++ b/plugins/hyper3d-rodin/README.md @@ -13,12 +13,12 @@ group workspace selected during OAuth authorization. ## Install and connect 1. After publication, install and enable **Hyper3D Rodin** in ZCode's plugin - manager. To test this contribution locally, open the **Discover** tab, select - **+**, and add the local marketplace checkout containing `marketplace.json` - and `plugins/hyper3d-rodin/`. Install and enable the plugin from that market. + manager. 2. Use ZCode's MCP authentication controls to sign in to Hyper3D in the browser. Review the requesting client, select the billing workspace, and authorize - access. No API key, password, cookie, or session token belongs in chat or in + access. Select the MCP scope used by your active project; authorization in + one scope does not mean another scope is connected. No API key, password, + cookie, or session token belongs in chat or in this plugin's configuration. 3. Verify that the Hyper3D tools are available in the session. Tool discovery alone does not prove that OAuth or authenticated calls work. If the host has @@ -44,7 +44,7 @@ Reconnect to change the authorized account or billing workspace. - “Split my completed Rodin model with generation ID … into parts using BANG.” - “Download the completed model into this project's assets directory.” -The Skill guides text/image submission, bounded progress waits, and result +The Skill guides text/image submission, spaced status checks, and result retrieval. Uploads accept 1–5 supported images, each at most 20 MiB. ZCode must read the actual files, request upload URLs, and perform successful HTTP PUTs before starting an image-based generation. If uploading is unavailable, the @@ -57,7 +57,7 @@ does not silently omit the images. | `rodin_generate` | Submit a Rodin generation; consumes credits | | `rodin_generate_bang` | Split an owned, completed Rodin generation; consumes credits | | `rodin_get_status` | Read a task's status and stage | -| `rodin_wait` | Wait up to 45 seconds and return the current status | +| `rodin_wait` | Server-side wait; prefer status checks in ZCode (see verification) | | `rodin_get_result` | Retrieve the result page and temporary file URLs | The server also advertises `rodin_import_images`, which is for ChatGPT Chat @@ -72,7 +72,10 @@ the live tool schemas; current model formats are GLB, USDZ, FBX, OBJ, and STL. `api.hyper3d.com`; browser sign-in and result pages use Hyper3D's web service at `hyper3d.ai` and the endpoints advertised by OAuth metadata. Image uploads and requested file downloads also access the storage/CDN hosts in the signed - URLs returned by Hyper3D. These URLs are temporary; do not log or share them. + URLs returned by Hyper3D. These URLs are temporary; avoid printing or sharing them. MCP responses and + upload/download tool cards may retain signed URLs in ZCode history; this + plugin cannot guarantee host-side redaction. Redact them before sharing logs + or screenshots, and use host secret-redaction features when available. - **Data:** Prompts, selected reference images, generation settings, and task identifiers are sent to Hyper3D as needed. The plugin does not request a repository upload. Status/result access is limited to the authorized user's @@ -111,20 +114,21 @@ identifies the service; no trademark rights are granted. The license does not license the hosted service or generated assets, which remain subject to Hyper3D's applicable account and service terms. -## Manual verification +## Verification -Before release, verify these steps in ZCode: +Version 0.1.0 was exercised on macOS arm64 with ZCode 3.14.3 (build +3.14.3.7762): plugin installation, Skill loading, seven-tool +discovery, project-scoped OAuth, reference-image PUT upload, one explicitly +authorized image-to-3D generation, status/result retrieval, and opening the +completed model's permanent result page all succeeded. Restarting ZCode and +reading the same task succeeded without another login. -1. Install from the local marketplace and confirm the plugin and Skill load. - The marketplace icon's official CDN URL becomes available after publication. -2. Complete OAuth login and test token refresh/reconnection. Confirm an - authenticated status read against a generation owned by the test account. -3. With an explicitly requested, credit-consuming test, generate one model, - wait for completion, and open the permanent result page. Separately exercise - reference-image PUT upload, BANG, and a requested file download. -4. Confirm that connection/status checks do not submit generations and that - errors do not cause automatic resubmission of paid tasks. +`rodin_wait` hit a 60-second host timeout. A subsequent `rodin_get_status` +confirmed completion; no paid task was resubmitted. Version 0.1.1 changes the +Skill to prefer spaced status checks and documents signed URLs in tool history. These revisions were checked +statically, but 0.1.1 has not been reinstalled and exercised in ZCode. -ZCode installation, OAuth/refresh, and end-to-end generation have not yet been -verified for this contribution. Successful protocol discovery or repository -validation does not substitute for those client checks. +Token-expiry refresh, account/workspace switching, BANG, text-only generation, +file downloads, and insufficient-credit/entitlement errors remain untested. +A successful restart does not establish token-expiry refresh support. Any +additional paid test needs an explicit user request. diff --git a/plugins/hyper3d-rodin/README_CN.md b/plugins/hyper3d-rodin/README_CN.md index 379dd4c..37fa861 100644 --- a/plugins/hyper3d-rodin/README_CN.md +++ b/plugins/hyper3d-rodin/README_CN.md @@ -11,11 +11,9 @@ BANG 拆件会消耗 OAuth 授权时选择的个人或团队工作空间额度 ## 安装与连接 1. 正式发布后,在 ZCode 插件管理器中安装并启用 **Hyper3D Rodin**。 - 本地测试本次贡献时,打开「发现」标签页,点击 **+**,添加包含 - `marketplace.json` 和 `plugins/hyper3d-rodin/` 的本地市场仓库目录, - 再从该市场安装并启用插件。 2. 通过 ZCode 的 MCP 认证入口在浏览器中登录 Hyper3D,核对请求授权的客户端, - 选择计费工作空间并授权。不要把 API Key、密码、Cookie 或会话 Token + 选择计费工作空间并授权。请选择当前项目实际使用的 MCP 作用域;某个作用域授权 + 不代表其他作用域也已连接。不要把 API Key、密码、Cookie 或会话 Token 放入聊天或本插件配置。 3. 确认当前会话能发现 Hyper3D 工具。仅能发现工具不代表 OAuth 或授权后的调用 已经成功。如果客户端没有授权入口或登录失败,保留脱敏后的错误以便排查, @@ -37,7 +35,7 @@ OAuth 元数据声明支持 PKCE S256 授权码流程、动态客户端注册和 - 「使用 BANG 拆分我已完成的 Rodin 模型,生成 ID 为……。」 - 「把已完成的模型下载到这个项目的 assets 目录。」 -Skill 指导文字或图片生成、限时等待进度和结果获取。参考图支持 1–5 张,每张不超过 +Skill 指导文字或图片生成、间隔查询进度和结果获取。参考图支持 1–5 张,每张不超过 20 MiB,格式以工具支持范围为准。ZCode 必须读取实际文件、申请上传地址并成功完成 HTTP PUT,再提交图片生成。如果无法上传,Agent 会说明限制并引导前往 [Hyper3D](https://hyper3d.ai),不会悄悄忽略参考图片。 @@ -48,7 +46,7 @@ HTTP PUT,再提交图片生成。如果无法上传,Agent 会说明限制并 | `rodin_generate` | 提交 Rodin 生成任务,消耗额度 | | `rodin_generate_bang` | 拆分当前授权用户拥有的已完成 Rodin 模型,消耗额度 | | `rodin_get_status` | 查询任务状态和阶段 | -| `rodin_wait` | 最多等待 45 秒并返回当前状态 | +| `rodin_wait` | 服务端等待;ZCode 优先使用状态查询,见验证记录 | | `rodin_get_result` | 获取结果页面和临时文件地址 | 服务还会声明 `rodin_import_images`,但它仅用于 ChatGPT Chat 附件,Skill 明确要求 @@ -60,7 +58,9 @@ Schema 为准;目前模型格式包括 GLB、USDZ、FBX、OBJ 和 STL。 - **服务与网络:** 对话模型由 ZCode 提供,Rodin/BANG 在线服务由 Hyper3D 提供。 MCP 请求发送到 `api.hyper3d.com`;浏览器登录和结果页面使用 `hyper3d.ai` 及 OAuth 元数据声明的端点。图片上传和按需文件下载还会访问 Hyper3D 返回的 - 签名 URL 中的存储/CDN 域名。这些 URL 是临时地址,不应记录或分享。 + 签名 URL 中的存储/CDN 域名。这些 URL 是临时地址,应避免打印或分享。 + MCP 响应及上传/下载工具卡片可能在 ZCode 历史中保留签名 URL;本插件无法保证 + 宿主自动脱敏。分享日志或截图前应移除它们;宿主支持时使用其敏感信息脱敏功能。 - **数据:** 按需将提示词、选定的参考图片、生成参数和任务标识发送到 Hyper3D。 插件不要求上传代码仓库。状态和结果仅能访问当前授权用户的生成任务; 团队计费授权不代表可以访问其他成员的模型。 @@ -88,16 +88,15 @@ MCP 服务由 Deemos 运营。Skill 改编自 Deemos 的 Hyper3D Rodin 集成; Hyper3D 图标用于标识服务,不授予商标权。该许可证不涵盖在线服务或生成资产, 它们仍受 Hyper3D 适用的账号及服务条款约束。 -## 手动验证 +## 验证记录 -发布前在 ZCode 中验证以下步骤: +已在 macOS arm64、ZCode 3.14.3(构建 3.14.3.7762)验证 0.1.0:插件安装、 +Skill 加载、七个工具发现、项目作用域 OAuth、参考图片 PUT 上传、一次明确授权的 +图片生成、状态及结果查询、打开已完成模型的永久结果页均成功。重启 ZCode 后, +无需再次登录即可查询同一任务。 -1. 从本地市场安装,确认插件与 Skill 加载。市场图标的官方 CDN 地址在发布后才可用。 -2. 完成 OAuth 登录,测试 Token 刷新与重新连接,并对测试账号拥有的生成任务执行 - 一次授权后的状态查询。 -3. 在明确要求执行会消耗额度的测试后,生成一个模型,等待完成并打开永久结果页面; - 另外验证参考图片 PUT 上传、BANG 拆件和用户要求的文件下载。 -4. 确认连接/状态检查不会提交生成任务,错误不会触发收费任务自动重提。 +`rodin_wait` 遇到宿主 60 秒超时,随后通过 `rodin_get_status` 确认完成,没有重复 +提交收费任务。0.1.1 将 Skill 默认监控改为间隔状态查询,并补充工具历史中签名 URL 的说明。这些修订已通过静态检查,尚未重新安装到 ZCode 实测。 -本次贡献尚未完成 ZCode 安装、OAuth/刷新和端到端生成验证。协议发现成功或仓库校验 -通过不能代替上述客户端检查。 +Token 到期刷新、账号/工作空间切换、BANG、纯文字生成、文件下载、额度不足及权益 +错误尚未验证。重启后可用不代表已验证 Token 到期刷新。新增收费测试需要用户明确要求。 diff --git a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md index 252738d..4d42ac3 100644 --- a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md +++ b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md @@ -25,16 +25,19 @@ a new paid task. Do not claim to know the balance or exact price from this MCP. For image-only generation omit `prompt` instead of sending an empty string. 2. Save `generation_id` and `display_url`. Do not present the result-page link until the generation completes. -3. For a single progress check, call `rodin_get_status` with `generation_id`. - To wait for completion, call `rodin_wait` with `generation_id` and - `timeout_seconds` (integer 1–45, backend default 30). Keep each wait within - the host's request timeout. -4. Repeat bounded waits while status is `queued` or `processing`, keeping the - user informed. Report `stage.name` and `stage.current`/`stage.total` as - stages, never as a percentage or time estimate. `current: 0` means no stage - has started; do not invent progress when `total` is 0. -5. `timed_out: true` means the wait ended, not that generation failed. If status - is `failed`, stop waiting and report the returned `error` when available; +3. Call `rodin_get_status` with the saved `generation_id`. Prefer this in + ZCode: `rodin_wait` hit a 60-second host timeout during client testing. +4. While status is `queued` or `processing`, leave a reasonable interval + (for example, 10–15 seconds) between checks using a host-supported delay. + Do not busy-poll; if the host cannot delay, report the current state and + saved ID so the user can request another check. Keep the user informed. + Report `stage.name` and `stage.current`/`stage.total` as stages, never as a + percentage or time estimate. `current: 0` means no stage has started; do not + invent progress when `total` is 0. +5. A status-call timeout or a wait's `timed_out: true` does not mean generation + failed. Recover by checking the same ID; never regenerate to recover a + monitoring error. If reads keep failing, report the last known state and + saved ID. On status `failed`, report the returned `error` when available; do not fetch results or automatically start another generation. 6. On `completed`, call `rodin_get_result`. Present its permanent `display_url` as the user-facing result link. Never expose or embed temporary `files[].url` @@ -108,8 +111,8 @@ Call `rodin_generate_bang` once with `asset_id` and requested options: numbers. If omitted these three settings inherit from the source task; leave them unset unless requested. -Save the new `generation_id` and monitor it using `rodin_wait` or -`rodin_get_status`, then retrieve its result with `rodin_get_result`. +Save the new `generation_id` and use the same spaced `rodin_get_status` +workflow above, then retrieve its result with `rodin_get_result`. ## Billing, privacy, and recovery @@ -124,8 +127,12 @@ Save the new `generation_id` and monitor it using `rodin_wait` or no MCP privacy parameter. - Status/result access is limited to the authorized user's generations. A group billing grant does not imply access to other members' models. -- Keep presigned upload/download URLs out of user-facing responses and shared - logs. For user-facing result links, use only the completed task's `display_url`. +- Do not echo presigned upload/download URLs or sensitive headers in responses + or command output. MCP responses and tool arguments may still be visible in + ZCode history; do not claim this plugin redacts them. Use host secret-redaction + features when available, and exclude signed URLs and credentials from shared + logs or screenshots. Shell arguments must be safely quoted. For user-facing + result links, use only the completed task's `display_url`. - The current MCP exposes generation/upload/status/result tools, not account balance or generation-history listing tools. Do not invent those calls. - Do not import models into Blender, Unreal, or another DCC. A DCC-specific From 19faa749358caa8f1576139a348527e04c9c2223 Mon Sep 17 00:00:00 2001 From: ElgoogUdiab Date: Mon, 28 Sep 2026 11:48:35 +0800 Subject: [PATCH 3/5] docs(hyper3d-rodin): use MIT and simplify plugin guidance --- marketplace.json | 4 +- .../hyper3d-rodin/.zcode-plugin/plugin.json | 4 +- plugins/hyper3d-rodin/LICENSE | 223 ++---------------- plugins/hyper3d-rodin/README.md | 43 +--- plugins/hyper3d-rodin/README_CN.md | 29 +-- .../skills/hyper3d-rodin/SKILL.md | 8 +- 6 files changed, 40 insertions(+), 271 deletions(-) diff --git a/marketplace.json b/marketplace.json index f5c21e5..4c4262b 100644 --- a/marketplace.json +++ b/marketplace.json @@ -753,13 +753,13 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.1", + "version": "0.1.2", "author": { "name": "Deemos", "url": "https://hyper3d.ai" }, "homepage": "https://hyper3d.ai", - "license": "Apache-2.0", + "license": "MIT", "keywords": [ "hyper3d", "rodin", diff --git a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json index e9b9ddc..de1236d 100644 --- a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json +++ b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json @@ -10,13 +10,13 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.1", + "version": "0.1.2", "author": { "name": "Deemos", "url": "https://hyper3d.ai" }, "homepage": "https://hyper3d.ai", - "license": "Apache-2.0", + "license": "MIT", "keywords": [ "hyper3d", "rodin", diff --git a/plugins/hyper3d-rodin/LICENSE b/plugins/hyper3d-rodin/LICENSE index d645695..d0f4657 100644 --- a/plugins/hyper3d-rodin/LICENSE +++ b/plugins/hyper3d-rodin/LICENSE @@ -1,202 +1,21 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +MIT License + +Copyright (c) 2026 Deemos + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/hyper3d-rodin/README.md b/plugins/hyper3d-rodin/README.md index fb71357..0f62071 100644 --- a/plugins/hyper3d-rodin/README.md +++ b/plugins/hyper3d-rodin/README.md @@ -57,7 +57,7 @@ does not silently omit the images. | `rodin_generate` | Submit a Rodin generation; consumes credits | | `rodin_generate_bang` | Split an owned, completed Rodin generation; consumes credits | | `rodin_get_status` | Read a task's status and stage | -| `rodin_wait` | Server-side wait; prefer status checks in ZCode (see verification) | +| `rodin_wait` | Server-side wait; prefer status checks in ZCode | | `rodin_get_result` | Retrieve the result page and temporary file URLs | The server also advertises `rodin_import_images`, which is for ChatGPT Chat @@ -87,9 +87,6 @@ the live tool schemas; current model formats are GLB, USDZ, FBX, OBJ, and STL. or ask the user to inspect Hyper3D Mine before deciding on a new submission. Insufficient balance or entitlement is reported without silently changing the workspace or requested settings. -- **Privacy:** The backend makes group-workspace and paid-subscriber generations - private. Free personal-account generations are not guaranteed private. The - MCP exposes no privacy-setting parameter. - **Local execution and files:** The package has no local MCP server, bundled executables, install scripts, commands, or hooks, and requires no additional Node.js/Python runtime or model API key. ZCode manages installation and OAuth @@ -101,34 +98,10 @@ the live tool schemas; current model formats are GLB, USDZ, FBX, OBJ, and STL. - **Results:** Show the permanent `display_url` after completion. Temporary `files[].url` values are for requested downloads, not user-facing links. -## Sources and license - -The MCP service is operated by Deemos. The Skill is adapted from Deemos's -Hyper3D Rodin integration, and the marketplace icon at -`assets/hyper3d-rodin/icon.jpg` is the existing Hyper3D icon from Deemos's -WorkBuddy distribution. No third-party executable code is bundled. - -The plugin configuration, documentation, and Skill use the -[Apache License 2.0](./LICENSE), matching this marketplace. The Hyper3D icon -identifies the service; no trademark rights are granted. The license does not -license the hosted service or generated assets, which remain subject to -Hyper3D's applicable account and service terms. - -## Verification - -Version 0.1.0 was exercised on macOS arm64 with ZCode 3.14.3 (build -3.14.3.7762): plugin installation, Skill loading, seven-tool -discovery, project-scoped OAuth, reference-image PUT upload, one explicitly -authorized image-to-3D generation, status/result retrieval, and opening the -completed model's permanent result page all succeeded. Restarting ZCode and -reading the same task succeeded without another login. - -`rodin_wait` hit a 60-second host timeout. A subsequent `rodin_get_status` -confirmed completion; no paid task was resubmitted. Version 0.1.1 changes the -Skill to prefer spaced status checks and documents signed URLs in tool history. These revisions were checked -statically, but 0.1.1 has not been reinstalled and exercised in ZCode. - -Token-expiry refresh, account/workspace switching, BANG, text-only generation, -file downloads, and insufficient-credit/entitlement errors remain untested. -A successful restart does not establish token-expiry refresh support. Any -additional paid test needs an explicit user request. +## License + +The plugin configuration, Skill, and documentation are licensed under the +[MIT License](./LICENSE). The remote MCP service is operated by Deemos; +its server implementation and generated assets are outside this license and +remain subject to Hyper3D's applicable terms. The Hyper3D icon identifies the +service and does not grant trademark rights. diff --git a/plugins/hyper3d-rodin/README_CN.md b/plugins/hyper3d-rodin/README_CN.md index 37fa861..57370b8 100644 --- a/plugins/hyper3d-rodin/README_CN.md +++ b/plugins/hyper3d-rodin/README_CN.md @@ -46,7 +46,7 @@ HTTP PUT,再提交图片生成。如果无法上传,Agent 会说明限制并 | `rodin_generate` | 提交 Rodin 生成任务,消耗额度 | | `rodin_generate_bang` | 拆分当前授权用户拥有的已完成 Rodin 模型,消耗额度 | | `rodin_get_status` | 查询任务状态和阶段 | -| `rodin_wait` | 服务端等待;ZCode 优先使用状态查询,见验证记录 | +| `rodin_wait` | 服务端等待;ZCode 优先使用状态查询 | | `rodin_get_result` | 获取结果页面和临时文件地址 | 服务还会声明 `rodin_import_images`,但它仅用于 ChatGPT Chat 附件,Skill 明确要求 @@ -68,8 +68,6 @@ Schema 为准;目前模型格式包括 GLB、USDZ、FBX、OBJ 和 STL。 首次收费提交前说明额度消耗,不会仅为测试连接而生成模型。这些调用不具备幂等性: 超时或连接异常后应查询已知任务,或让用户在 Hyper3D Mine 检查后再决定是否重新提交。 额度不足或缺少权益时会报告错误,不会擅自更换工作空间或修改用户要求的参数。 -- **隐私:** 后端会将团队工作空间和付费订阅用户的生成设为私有;免费个人账号的 - 生成不保证私有。MCP 没有提供隐私设置参数。 - **本地执行与文件:** 插件不包含本地 MCP 服务端、可执行程序、安装脚本、命令组件 或 Hooks,也不需要额外的 Node.js/Python 运行时或模型 API Key。ZCode 管理安装及 OAuth 状态。Agent 可能使用宿主的文件/网络工具或 shell 命令检查选定图片并上传。 @@ -78,25 +76,8 @@ Schema 为准;目前模型格式包括 GLB、USDZ、FBX、OBJ 和 STL。 - **结果:** 任务完成后展示永久 `display_url`。临时 `files[].url` 仅用于用户要求的 文件下载,不作为面向用户的结果链接。 -## 来源与许可证 +## 许可证 -MCP 服务由 Deemos 运营。Skill 改编自 Deemos 的 Hyper3D Rodin 集成;市场图标 -`assets/hyper3d-rodin/icon.jpg` 复用 Deemos WorkBuddy 分发包中的 Hyper3D 图标。 -没有打包第三方可执行代码。 - -插件配置、文档和 Skill 使用与本市场一致的 [Apache License 2.0](./LICENSE)。 -Hyper3D 图标用于标识服务,不授予商标权。该许可证不涵盖在线服务或生成资产, -它们仍受 Hyper3D 适用的账号及服务条款约束。 - -## 验证记录 - -已在 macOS arm64、ZCode 3.14.3(构建 3.14.3.7762)验证 0.1.0:插件安装、 -Skill 加载、七个工具发现、项目作用域 OAuth、参考图片 PUT 上传、一次明确授权的 -图片生成、状态及结果查询、打开已完成模型的永久结果页均成功。重启 ZCode 后, -无需再次登录即可查询同一任务。 - -`rodin_wait` 遇到宿主 60 秒超时,随后通过 `rodin_get_status` 确认完成,没有重复 -提交收费任务。0.1.1 将 Skill 默认监控改为间隔状态查询,并补充工具历史中签名 URL 的说明。这些修订已通过静态检查,尚未重新安装到 ZCode 实测。 - -Token 到期刷新、账号/工作空间切换、BANG、纯文字生成、文件下载、额度不足及权益 -错误尚未验证。重启后可用不代表已验证 Token 到期刷新。新增收费测试需要用户明确要求。 +插件配置、Skill 和文档采用 [MIT License](./LICENSE)。远端 MCP 服务由 Deemos +运营;其服务端实现及生成资产不在该许可证范围内,仍受 Hyper3D 适用条款约束。 +Hyper3D 图标用于标识服务,不授予商标权。 diff --git a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md index 4d42ac3..095603d 100644 --- a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md +++ b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md @@ -25,8 +25,7 @@ a new paid task. Do not claim to know the balance or exact price from this MCP. For image-only generation omit `prompt` instead of sending an empty string. 2. Save `generation_id` and `display_url`. Do not present the result-page link until the generation completes. -3. Call `rodin_get_status` with the saved `generation_id`. Prefer this in - ZCode: `rodin_wait` hit a 60-second host timeout during client testing. +3. Monitor progress with `rodin_get_status` using the saved `generation_id`. 4. While status is `queued` or `processing`, leave a reasonable interval (for example, 10–15 seconds) between checks using a host-supported delay. Do not busy-poll; if the host cannot delay, report the current state and @@ -114,7 +113,7 @@ Call `rodin_generate_bang` once with `asset_id` and requested options: Save the new `generation_id` and use the same spaced `rodin_get_status` workflow above, then retrieve its result with `rodin_get_result`. -## Billing, privacy, and recovery +## Billing and recovery - `rodin_generate` and `rodin_generate_bang` consume credits and are not idempotent. Never automatically retry either tool after a timeout or @@ -122,9 +121,6 @@ workflow above, then retrieve its result with `rodin_get_result`. to inspect Hyper3D Mine before deciding whether to submit another generation. - On insufficient balance or unavailable entitlement, report the error; do not silently change the billing workspace or downgrade requested settings. -- The backend makes group-workspace and paid-subscriber generations private. - Do not promise that a free personal-account generation is private; there is - no MCP privacy parameter. - Status/result access is limited to the authorized user's generations. A group billing grant does not imply access to other members' models. - Do not echo presigned upload/download URLs or sensitive headers in responses From 94f8f0bc6beae14fd7c2b99ecf04fb62cb4d1fd6 Mon Sep 17 00:00:00 2001 From: ElgoogUdiab Date: Mon, 28 Sep 2026 11:50:44 +0800 Subject: [PATCH 4/5] refactor(hyper3d-rodin): focus skill on workflows --- marketplace.json | 2 +- .../hyper3d-rodin/.zcode-plugin/plugin.json | 2 +- .../skills/hyper3d-rodin/SKILL.md | 186 +++++++----------- 3 files changed, 68 insertions(+), 122 deletions(-) diff --git a/marketplace.json b/marketplace.json index 4c4262b..06708b6 100644 --- a/marketplace.json +++ b/marketplace.json @@ -753,7 +753,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.2", + "version": "0.1.3", "author": { "name": "Deemos", "url": "https://hyper3d.ai" diff --git a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json index de1236d..2b991c5 100644 --- a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json +++ b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json @@ -10,7 +10,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.2", + "version": "0.1.3", "author": { "name": "Deemos", "url": "https://hyper3d.ai" diff --git a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md index 095603d..d64e761 100644 --- a/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md +++ b/plugins/hyper3d-rodin/skills/hyper3d-rodin/SKILL.md @@ -5,131 +5,77 @@ description: Generate Hyper3D Rodin Gen-2.5 models from text or images, split co # Hyper3D Rodin -Use the tools discovered from the `hyper3d-rodin` MCP server in ZCode. Its server -namespace is `plugin:hyper3d-rodin:hyper3d-rodin`; match the tool names below to -the actual session tools instead of constructing a host-specific tool prefix. -Sign in to Hyper3D through ZCode's MCP OAuth flow; do not ask for or handle a -Hyper3D session token. If authorization or required scopes are missing, use the -host's reconnect/login flow. If that flow is unavailable or fails, report the -connection problem rather than asking for credentials in chat. -Billing uses the personal or group workspace selected during OAuth; reconnect -to change that selection. Generation and BANG consume that workspace's credits. -Explain this before the first paid submission. Submit only for a user-requested -generation or split; setup, connection tests, and status checks do not authorize -a new paid task. Do not claim to know the balance or exact price from this MCP. - -## Generate, monitor, and retrieve - -1. Call `rodin_generate` once with the user's prompt, reference images, or both. - `prompt`, when supplied, must be non-empty and at most 1,024 characters. - For image-only generation omit `prompt` instead of sending an empty string. -2. Save `generation_id` and `display_url`. Do not present the result-page link - until the generation completes. -3. Monitor progress with `rodin_get_status` using the saved `generation_id`. -4. While status is `queued` or `processing`, leave a reasonable interval - (for example, 10–15 seconds) between checks using a host-supported delay. - Do not busy-poll; if the host cannot delay, report the current state and - saved ID so the user can request another check. Keep the user informed. - Report `stage.name` and `stage.current`/`stage.total` as stages, never as a - percentage or time estimate. `current: 0` means no stage has started; do not - invent progress when `total` is 0. -5. A status-call timeout or a wait's `timed_out: true` does not mean generation - failed. Recover by checking the same ID; never regenerate to recover a - monitoring error. If reads keep failing, report the last known state and - saved ID. On status `failed`, report the returned `error` when available; - do not fetch results or automatically start another generation. -6. On `completed`, call `rodin_get_result`. Present its permanent `display_url` - as the user-facing result link. Never expose or embed temporary `files[].url` - in the response. Only use those signed URLs to download files when the user - explicitly requests a download; return the resulting local file artifacts. - Select files by `role` (`model`, `preview`, `texture`, `sidecar`) and include - required textures/sidecars when downloading a multi-file model format. +Use the tools discovered from the `hyper3d-rodin` MCP server in ZCode. Match +logical names below to the actual session tools; do not construct tool prefixes. +Use live tool descriptions and schemas for parameters, limits, and defaults. +Leave optional settings unset unless needed for the user's request. For highly +reflective reference images, consider recommending `texture_delight`. + +Connect through ZCode's MCP OAuth flow. If authorization is missing, use the +host's login/reconnect flow; never request credentials in chat. Billing uses +the workspace selected during OAuth. Generation and BANG consume credits: +explain this before the first paid submission and submit only for a requested +generation or split. Connection tests and status checks do not authorize one. + +## Generate and retrieve + +1. For image input, complete the upload workflow below first. Call + `rodin_generate` once with the user's prompt, uploaded references, or both. + For image-only generation, omit `prompt` rather than sending an empty string. +2. Save the returned `generation_id`. Monitor it with `rodin_get_status`, + leaving a reasonable interval between checks rather than busy-polling. + Keep the user informed; stage counts are not percentages or time estimates. +3. A monitoring timeout does not mean generation failed. Check the same ID. + If reads keep failing, report the last known state and ID. On a failed task, + report the error; do not automatically generate again or fetch its results. +4. On completion, call `rodin_get_result` and present its permanent + `display_url`. Use temporary file URLs only for user-requested downloads. + Select the requested model files and any required textures or sidecars, + then return the downloaded local artifacts. ## Reference images -In ZCode, use actual local file paths supplied by the user or available from -their attachments with the PUT workflow below. Never fabricate paths or upload -IDs. `rodin_import_images` is only for ChatGPT Chat; do not call it in ZCode even -if the server includes it in tool discovery. - -1. Inspect the actual files. Each must be a supported, decodable image, at most - 20 MiB (20,971,520 bytes). Use the tool schema's `mime_type` enum, such as - `image/png`, `image/jpeg`, or `image/webp`; MIME type must match the bytes. -2. Call `rodin_create_uploads` with `files`, an ordered array of 1–5 objects: - `filename` (basename only, 1–128 characters, no path separators or control - characters), `mime_type`, and `size_bytes` (exact positive integer byte size). -3. For every returned `uploads[]` entry, upload the matching file using the - returned `method`, `headers`, and `upload_url` before `expires_at`. Preserve - the exact content type; confirm every PUT succeeds before generating. -4. Pass the ordered, unique `uploads[].upload_id` values as - `reference_upload_ids`, with an optional prompt, to `rodin_generate` once. - Follow the monitoring and result workflow above. - -Upload records expire after two hours and are consumed by a successful -submission. Do not reuse upload IDs for a second generation; prepare fresh -uploads for a new user-requested generation. Never reuse an uncertain submission -as a reason to upload and generate again automatically. - -If PUT is blocked and the host supports a network permission flow, request -access to the returned upload hostname and retry PUT after access is granted. -If uploading remains unavailable, explain in the user's language that this -model environment cannot upload images and they can upload and generate at -https://hyper3d.ai. Do not silently omit references or switch to text-only. - -## Rodin settings +Use actual files from the user's paths or attachments. Do not use +`rodin_import_images` in ZCode; that tool is for ChatGPT Chat attachments. -Use the live tool schema for available fields; do not pass website or CLI -settings that the MCP tool does not expose. +1. Inspect the files and check them against the live upload schema. Derive + MIME types and byte sizes from the actual files. +2. Call `rodin_create_uploads`. PUT each matching file to its returned + `upload_url`, using the supplied method and headers before `expires_at`. + Confirm every upload succeeds before submitting generation. +3. Pass the returned `upload_id` values as `reference_upload_ids` in the + original image order. These IDs are consumed by a successful submission; + prepare fresh uploads for a new generation, never to retry an uncertain one. -- `mesh_mode`: `Raw` (default) or `Quad`. -- `tier`: `Gen-2.5-Medium` (default), `Gen-2.5-High`, or `Gen-2.5-Extreme-Low`. -- `texture_delight`: boolean, default `false`. Recommend enabling it for - reference images with highly reflective surfaces; respect the user's choice. -- `quality_override`: optional integer target polygon count; 500–1,000,000 for - `Raw` or 1,000–50,000 for `Quad`. When omitted the backend uses 500,000 for - `Raw` or 18,000 for `Quad`, independently of the selected tier. -- `geometry_file_format`: `glb` (default), `usdz`, `fbx`, `obj`, or `stl`. +If the host requires network permission for PUT, use its permission flow. +If uploading remains unavailable, report the limitation and direct the user +to https://hyper3d.ai. Do not silently omit images or switch to text-only. ## BANG part splitting -Use a completed Rodin generation belonging to the authorized user. Pass the -`generation_id` returned by `rodin_generate` directly as `asset_id`; do not pass -a file URL or upload ID. Arbitrary local model uploads are not exposed by the -current MCP tool set. - -Call `rodin_generate_bang` once with `asset_id` and requested options: - -- `instruction`: optional text naming the parts the user wants separated. - Omit it unless the user specifies parts; omission uses the automatic planner. -- `strength`: integer 1–12, default 5; a soft component-count target, not an - exact guarantee. -- `explode_strength`: number at least 0, default 1; split-plan guidance strength. -- `geometry_file_format`: the same five formats as Rodin; default `glb`. -- `resolution`: `Basic` (default) or `High`. `High` requires account entitlement. -- `seed`: optional integer 0–65,535; `escore` and `reference_scale`: optional - numbers. If omitted these three settings inherit from the source task; - leave them unset unless requested. - -Save the new `generation_id` and use the same spaced `rodin_get_status` -workflow above, then retrieve its result with `rodin_get_result`. - -## Billing and recovery - -- `rodin_generate` and `rodin_generate_bang` consume credits and are not - idempotent. Never automatically retry either tool after a timeout or - connection error. If an ID is known, check that task; otherwise ask the user - to inspect Hyper3D Mine before deciding whether to submit another generation. -- On insufficient balance or unavailable entitlement, report the error; do not - silently change the billing workspace or downgrade requested settings. -- Status/result access is limited to the authorized user's generations. A group - billing grant does not imply access to other members' models. -- Do not echo presigned upload/download URLs or sensitive headers in responses - or command output. MCP responses and tool arguments may still be visible in - ZCode history; do not claim this plugin redacts them. Use host secret-redaction - features when available, and exclude signed URLs and credentials from shared - logs or screenshots. Shell arguments must be safely quoted. For user-facing - result links, use only the completed task's `display_url`. -- The current MCP exposes generation/upload/status/result tools, not account - balance or generation-history listing tools. Do not invent those calls. -- Do not import models into Blender, Unreal, or another DCC. A DCC-specific - plugin or skill owns that workflow. +Use a completed Rodin generation owned by the authorized user. Pass its +`generation_id` as `asset_id` to `rodin_generate_bang`, not a file URL or upload +ID. Arbitrary local model uploads are not supported by this workflow. + +Supply `instruction` when the user names parts to separate; otherwise leave it +unset for automatic planning. Treat `strength` as guidance, not a guaranteed +part count. Leave other options to the live schema and the user's request. + +Submit once, save the new `generation_id`, and follow the same status/result +workflow as generation. + +## Recovery and handling + +- Generation and BANG are not idempotent. Never automatically retry a paid + submission after a timeout or connection error. Query the known ID; if none + was returned, ask the user to inspect Hyper3D Mine before submitting again. +- Report insufficient-credit or entitlement errors without changing the + billing workspace or downgrading requested settings. Reconnect through OAuth + to change accounts or workspaces. Do not infer balance or price from this MCP. +- Read only the authorized user's tasks; group billing does not grant access + to other members' models. +- Do not echo signed URLs or sensitive headers. They may remain in host tool + history, so exclude them from shared logs and use host redaction when available. + Safely quote shell arguments when uploading or downloading files. +- This Skill covers generation and retrieval; DCC integration requires its own + tools or workflow. From 9e0bb0d3f1ff1119da1ca51c1ad6c1f81489aa43 Mon Sep 17 00:00:00 2001 From: ElgoogUdiab Date: Mon, 28 Sep 2026 11:51:27 +0800 Subject: [PATCH 5/5] fix(hyper3d-rodin): keep initial release at 0.1.0 --- marketplace.json | 2 +- plugins/hyper3d-rodin/.zcode-plugin/plugin.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/marketplace.json b/marketplace.json index 06708b6..d701fea 100644 --- a/marketplace.json +++ b/marketplace.json @@ -753,7 +753,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.3", + "version": "0.1.0", "author": { "name": "Deemos", "url": "https://hyper3d.ai" diff --git a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json index 2b991c5..700e74d 100644 --- a/plugins/hyper3d-rodin/.zcode-plugin/plugin.json +++ b/plugins/hyper3d-rodin/.zcode-plugin/plugin.json @@ -10,7 +10,7 @@ "en": "Generate 3D models from text or reference images with Hyper3D Rodin Gen-2.5, split completed models with BANG, and retrieve results.", "zh-CN": "通过文字或参考图片生成 Hyper3D Rodin Gen-2.5 三维模型,使用 BANG 拆分已完成模型,并获取生成结果。" }, - "version": "0.1.3", + "version": "0.1.0", "author": { "name": "Deemos", "url": "https://hyper3d.ai"