From 83ea662f1b4b7f11a072d6deacb9a1133d3da950 Mon Sep 17 00:00:00 2001 From: Ace Data Cloud Dev Date: Sun, 11 Oct 2026 22:58:00 +0800 Subject: [PATCH 1/4] feat(third_party): add Flux plugin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + third_party/flux/.cursor-plugin/plugin.json | 31 +++++++++++ third_party/flux/CHANGELOG.md | 5 ++ third_party/flux/LICENSE | 21 ++++++++ third_party/flux/README.md | 56 ++++++++++++++++++++ third_party/flux/assets/logo.png | Bin 0 -> 39720 bytes third_party/flux/examples/first-run.md | 5 ++ third_party/flux/mcp.json | 11 ++++ third_party/flux/readme/README_zh_Hans.md | 42 +++++++++++++++ third_party/flux/skills/flux/SKILL.md | 14 +++++ 11 files changed, 191 insertions(+) create mode 100644 third_party/flux/.cursor-plugin/plugin.json create mode 100644 third_party/flux/CHANGELOG.md create mode 100644 third_party/flux/LICENSE create mode 100644 third_party/flux/README.md create mode 100644 third_party/flux/assets/logo.png create mode 100644 third_party/flux/examples/first-run.md create mode 100644 third_party/flux/mcp.json create mode 100644 third_party/flux/readme/README_zh_Hans.md create mode 100644 third_party/flux/skills/flux/SKILL.md diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index b8b863993..7965d3e5d 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -528,6 +528,11 @@ "source": "third_party/square", "description": "Work with payments, orders, catalog, customers, and invoices." }, + { + "name": "flux", + "source": "third_party/flux", + "description": "Generate Flux images and retrieve the finished image." + }, { "name": "tailscale", "source": "third_party/tailscale", diff --git a/README.md b/README.md index b42a64469..716087912 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `workday` | [Workday](third_party/workday/) | Cursor | Integrations | Look up workers, organizations, time off, payroll, and recruiting data in Workday. | | `whatsapp-business` | [WhatsApp Business](third_party/whatsapp-business/) | Cursor | Integrations | Send messages and manage templates, contacts, and phone numbers in WhatsApp Business. | | `square` | [Square](third_party/square/) | Cursor | Integrations | Work with payments, orders, catalog, customers, and invoices. | +| `flux` | [Flux](third_party/flux/) | Ace Data Cloud Dev | Integrations | Generate Flux images and retrieve the finished image. | | `tailscale` | [Tailscale](third_party/tailscale/) | Cursor | Integrations | Let Grok Bot reach MCP servers on your private Tailscale network. Sign in to Tailscale to connect your tailnet; Grok Bot joins it as one tagged device and only reaches the hosts you grant to tag:grokbot. | | `highlevel` | [HighLevel](third_party/highlevel/) | Cursor | Integrations | Work with contacts, conversations, opportunities, calendars, and payments. | | `finary` | [Finary](third_party/finary/) | Cursor | Integrations | Read your net worth, accounts, holdings, spending, and budgets. | diff --git a/third_party/flux/.cursor-plugin/plugin.json b/third_party/flux/.cursor-plugin/plugin.json new file mode 100644 index 000000000..6c4aca2c1 --- /dev/null +++ b/third_party/flux/.cursor-plugin/plugin.json @@ -0,0 +1,31 @@ +{ + "name": "flux", + "displayName": "Flux", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Generate Flux images and retrieve the finished image.", + "author": { + "name": "Ace Data Cloud Dev", + "email": "dev@acedata.cloud" + }, + "homepage": "https://platform.acedata.cloud/models", + "repository": "https://github.com/AceDataCloud/FluxCursor", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "flux", + "flux", + "image", + "acedatacloud", + "mcp" + ], + "category": "integrations", + "tags": [ + "flux", + "image", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/flux/CHANGELOG.md b/third_party/flux/CHANGELOG.md new file mode 100644 index 000000000..3d903c5cd --- /dev/null +++ b/third_party/flux/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 + +- Initial Flux Cursor plugin using the existing Ace Data Cloud hosted MCP. diff --git a/third_party/flux/LICENSE b/third_party/flux/LICENSE new file mode 100644 index 000000000..64bb5cfce --- /dev/null +++ b/third_party/flux/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Ace Data Cloud + +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/third_party/flux/README.md b/third_party/flux/README.md new file mode 100644 index 000000000..6fcd17bc7 --- /dev/null +++ b/third_party/flux/README.md @@ -0,0 +1,56 @@ +# Flux for Cursor + +Generate Flux images and retrieve the finished image. This standalone plugin reuses the [Ace Data Cloud flux MCP](https://github.com/AceDataCloud/MCPs/tree/main/flux) and includes a focused Agent skill. Available tools and limits come from the live MCP schema. + +[简体中文教程](readme/README_zh_Hans.md) · [Copyable first-run prompt](examples/first-run.md) · [Current pricing](https://platform.acedata.cloud/models) + +## 1. Search and install + +In Cursor 3.13 or later, open **Cursor Settings → Plugins**, search for **Flux**, confirm **Ace Data Cloud Dev** and the service logo, then click **Install**. You can also use `/add-plugin flux` in chat. If the official listing is not live, review this source under `~/.cursor/plugins/local/flux/`; local installation does not prove Marketplace publication. + +## 2. Get a service API key + +1. Sign in at [Ace Data Cloud Applications](https://platform.acedata.cloud/console/applications). +2. Open **General application** or a service-specific application. Copy an existing API key, or use **Manage Keys → Create** for a separate Cursor key. +3. Confirm Flux access, [current price](https://platform.acedata.cloud/models), and balance. If **Allowed APIs** restrictions are enabled, include /flux/images, /flux/tasks. + +Use a service API key, not a platform management token. Do not put it in chat or source files. + +## 3. Configure the plugin + +Under **Dashboard → Plugins → Configure**, select **Flux** and set `ACEDATACLOUD_API_TOKEN` to the key string. Paste only the key; the plugin adds `Bearer `. Reconnect the MCP server if tools are missing. The hosted endpoint needs no local Python installation. + +```json +{ + "mcpServers": { + "flux": { + "type": "http", + "url": "https://flux.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} +``` + +## 4. Run the first example + +Open Cursor Agent and paste the [first-run prompt](examples/first-run.md). It asks for `flux_generate_image`, model `flux-dev` and size 1024x1024, count 1. The sample prompt is `A teal ceramic cube on a cream background, studio product photograph, no text.`. Verify live model access and price before running. + +Submit with `flux_generate_image` once. Save the returned `task_id` and use `flux_get_task` with that same ID until terminal. Pending is not a completed image; open the returned result URL on success. Never regenerate merely to poll. + +Open the returned image and inspect it. In **Ace Data Cloud → Usage/Billing**, match this call to its deducted Credits record. The plugin is free; API calls follow current service pricing. + +## Troubleshooting + +| Symptom | Action | +| --- | --- | +| Plugin or tools are missing | Check the Flux listing, configure the key, and reconnect MCP. | +| 401 or 403 | Check key validity, service access, balance, and Allowed APIs; do not include `Bearer ` in the configured value. | +| Invalid model or argument | Use the live tool schema and a model this account can access. | +| Pending task | Query the original task ID; do not regenerate to poll. | +| 429, timeout, or 5xx | Inspect the original task and usage history before another paid submission. | +| Result URL will not open | Confirm a terminal success and use the URL returned by that call. | + +[Source](https://github.com/AceDataCloud/FluxCursor) · [Report a problem](https://github.com/AceDataCloud/FluxCursor/issues) · dev@acedata.cloud. The logo reuses an existing Ace Data Cloud integration asset. This tool plugin does not register a Cursor chat-model provider. diff --git a/third_party/flux/assets/logo.png b/third_party/flux/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..46c63450108e108bada61cea47456262f4c830ae GIT binary patch literal 39720 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%0AOoK9qXNou2N!>K?I1{2$PfH`{wZ&@y5@vEMGc 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 CG38JI literal 0 HcmV?d00001 diff --git a/third_party/flux/examples/first-run.md b/third_party/flux/examples/first-run.md new file mode 100644 index 000000000..ab27ad321 --- /dev/null +++ b/third_party/flux/examples/first-run.md @@ -0,0 +1,5 @@ +# First Flux run + +Copy this into Cursor Agent after installing and configuring the plugin. No key is included. + +> Use the flux MCP tool flux_generate_image for one image request. I checked the current Ace Data Cloud price and balance. Use model flux-dev if this account offers it. Set size 1024x1024, count 1. Set prompt to A teal ceramic cube on a cream background, studio product photograph, no text.. Submit at most once, keep the task ID, query it using flux_get_task until terminal, and open the completed result. If pending, report the ID so I can resume without a second generation. diff --git a/third_party/flux/mcp.json b/third_party/flux/mcp.json new file mode 100644 index 000000000..ec3c6488d --- /dev/null +++ b/third_party/flux/mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "flux": { + "type": "http", + "url": "https://flux.mcp.acedata.cloud/mcp", + "headers": { + "Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}" + } + } + } +} diff --git a/third_party/flux/readme/README_zh_Hans.md b/third_party/flux/readme/README_zh_Hans.md new file mode 100644 index 000000000..efae7ca10 --- /dev/null +++ b/third_party/flux/readme/README_zh_Hans.md @@ -0,0 +1,42 @@ +# Cursor Flux 插件 + +Generate Flux images and retrieve the finished image. 插件复用 [Ace Data Cloud flux MCP](https://github.com/AceDataCloud/MCPs/tree/main/flux),并提供专用 Agent skill。实际工具参数和限制以在线 MCP schema 为准。 + +[English guide](../README.md) · [可复制的首跑提示词](../examples/first-run.md) · [当前价格](https://platform.acedata.cloud/models) + +## 1. 搜索安装 + +在 Cursor 3.13 或更新版本打开 **Cursor Settings → Plugins**,搜索 **Flux**,确认作者 **Ace Data Cloud Dev** 和服务图标后点击 **Install**。也可在聊天中输入 `/add-plugin flux`。若官方条目尚未出现,可在 `~/.cursor/plugins/local/flux/` 本地审查;本地安装不代表 Marketplace 已上架。 + +## 2. 获取服务 API Key + +1. 登录 [Ace Data Cloud 应用管理](https://platform.acedata.cloud/console/applications)。 +2. 打开 **General application** 或服务专用应用,复制已有 Key;也可通过 **Manage Keys → Create** 新建 Cursor 专用 Key。 +3. 确认 Flux 权限、[当前价格](https://platform.acedata.cloud/models)和余额。若启用了 **Allowed APIs**,允许 /flux/images, /flux/tasks。 + +使用服务 API Key,不要用平台管理 token,也不要放在聊天或仓库文件中。 + +## 3. 配置插件 + +在 **Dashboard → Plugins → Configure** 选择 **Flux**,将 Key 原文填入 `ACEDATACLOUD_API_TOKEN`。插件会自行添加 `Bearer `,连接 `https://flux.mcp.acedata.cloud/mcp`;无需安装本地 Python 服务。工具未出现时重新连接 MCP。 + +## 4. 首次调用 + +在 Cursor Agent 中复制[首跑提示词](../examples/first-run.md)。它使用 `flux_generate_image`,模型 `flux-dev`,参数为 size 1024x1024, count 1,prompt 为 `A teal ceramic cube on a cream background, studio product photograph, no text.`。执行前核对当前模型权限和价格;字段变化时以在线工具 schema 为准。 + +只用 `flux_generate_image` 提交一次,保存返回的 `task_id`,随后用同一 ID 调用 `flux_get_task` 直到终态。pending 不代表已完成;成功后打开结果地址。不要为轮询重新生成。 + +打开返回的image结果并检查。在 **Ace Data Cloud → Usage/Billing** 核对本次调用对应的 Credits 扣费;插件免费,API 按当前服务价格计费。 + +## 排障 + +| 现象 | 处理 | +| --- | --- | +| 找不到插件或工具 | 核对 Flux 条目、配置 Key 并重连 MCP。 | +| 401 或 403 | 检查 Key、服务权限、余额和 Allowed APIs;配置值不要带 `Bearer `。 | +| 模型或参数错误 | 以在线 MCP schema 和账户可用模型为准。 | +| 任务 pending | 沿原 task ID 查询,不要为轮询重新生成。 | +| 429、超时或 5xx | 先检查原任务和用量记录,再决定是否再次付费提交。 | +| 结果无法打开 | 确认终态成功,打开该次调用返回的地址。 | + +[源码](https://github.com/AceDataCloud/FluxCursor) · [问题反馈](https://github.com/AceDataCloud/FluxCursor/issues) · dev@acedata.cloud。图标复用 Ace Data Cloud 现有集成资源。本插件提供工具,不注册 Cursor 聊天模型 Provider。 diff --git a/third_party/flux/skills/flux/SKILL.md b/third_party/flux/skills/flux/SKILL.md new file mode 100644 index 000000000..4e5aa0975 --- /dev/null +++ b/third_party/flux/skills/flux/SKILL.md @@ -0,0 +1,14 @@ +--- +name: flux +description: Use Flux through the Ace Data Cloud MCP server in Cursor. Use for Flux image work or an existing task query. +--- + +# Flux in Cursor + +This skill adapts the [existing Ace Data Cloud skill](https://github.com/AceDataCloud/Skills/tree/main/skills/flux-image). The live MCP schema is the source of truth for arguments and models. + +1. Check [current price, balance, and service access](https://platform.acedata.cloud/models) before a paid call. +2. Submit with `flux_generate_image` once. Save the returned `task_id` and use `flux_get_task` with that same ID until terminal. Pending is not a completed image; open the returned result URL on success. Never regenerate merely to poll. +3. Return the result, task ID if present, and any service error. Keep the API token out of chat and files. + +Configure `ACEDATACLOUD_API_TOKEN` under **Dashboard → Plugins → Configure**. See the [first-run guide](../../README.md). From 1e795ea1256696705579f75575faf721e8a117f1 Mon Sep 17 00:00:00 2001 From: Ace Data Cloud Dev Date: Sun, 11 Oct 2026 23:26:57 +0800 Subject: [PATCH 2/4] fix(flux): declare API token variable --- third_party/flux/.cursor-plugin/plugin.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/third_party/flux/.cursor-plugin/plugin.json b/third_party/flux/.cursor-plugin/plugin.json index 6c4aca2c1..d0b2cd30d 100644 --- a/third_party/flux/.cursor-plugin/plugin.json +++ b/third_party/flux/.cursor-plugin/plugin.json @@ -27,5 +27,18 @@ "image", "mcp" ], + "variables": { + "type": "object", + "properties": { + "ACEDATACLOUD_API_TOKEN": { + "type": "string", + "title": "Ace Data Cloud API token", + "description": "Service API key from https://platform.acedata.cloud/console/applications with Flux access." + } + }, + "required": [ + "ACEDATACLOUD_API_TOKEN" + ] + }, "mcpServers": "./mcp.json" } From 145c0bbeafd4922bd60da79abf06b9af55287c18 Mon Sep 17 00:00:00 2001 From: Ace Data Cloud Dev Date: Mon, 12 Oct 2026 01:08:03 +0800 Subject: [PATCH 3/4] docs: match Cursor 3.24 plugin navigation --- third_party/flux/README.md | 4 ++-- third_party/flux/readme/README_zh_Hans.md | 4 ++-- third_party/flux/skills/flux/SKILL.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/third_party/flux/README.md b/third_party/flux/README.md index 6fcd17bc7..2c6de8fc3 100644 --- a/third_party/flux/README.md +++ b/third_party/flux/README.md @@ -6,7 +6,7 @@ Generate Flux images and retrieve the finished image. This standalone plugin reu ## 1. Search and install -In Cursor 3.13 or later, open **Cursor Settings → Plugins**, search for **Flux**, confirm **Ace Data Cloud Dev** and the service logo, then click **Install**. You can also use `/add-plugin flux` in chat. If the official listing is not live, review this source under `~/.cursor/plugins/local/flux/`; local installation does not prove Marketplace publication. +In Cursor 3.24, open **Customize → Browse Marketplace**, search for **Flux**, confirm **Ace Data Cloud Dev** and the service logo, then click **Add**. Older releases may put Plugins under Settings. You can also use `/add-plugin flux` in chat. If the official listing is not live, review this source under `~/.cursor/plugins/local/flux/`; local installation does not prove Marketplace publication. ## 2. Get a service API key @@ -18,7 +18,7 @@ Use a service API key, not a platform management token. Do not put it in chat or ## 3. Configure the plugin -Under **Dashboard → Plugins → Configure**, select **Flux** and set `ACEDATACLOUD_API_TOKEN` to the key string. Paste only the key; the plugin adds `Bearer `. Reconnect the MCP server if tools are missing. The hosted endpoint needs no local Python installation. +Open **Customize → Plugins → Flux → Configure**, paste the key string into **Ace Data Cloud API token**, and click **Save**. Cursor uses it as `ACEDATACLOUD_API_TOKEN`; the plugin adds `Bearer `. Reconnect the MCP server if tools are missing. The hosted endpoint needs no local Python installation. ```json { diff --git a/third_party/flux/readme/README_zh_Hans.md b/third_party/flux/readme/README_zh_Hans.md index efae7ca10..16c1b279d 100644 --- a/third_party/flux/readme/README_zh_Hans.md +++ b/third_party/flux/readme/README_zh_Hans.md @@ -6,7 +6,7 @@ Generate Flux images and retrieve the finished image. 插件复用 [Ace Data Clo ## 1. 搜索安装 -在 Cursor 3.13 或更新版本打开 **Cursor Settings → Plugins**,搜索 **Flux**,确认作者 **Ace Data Cloud Dev** 和服务图标后点击 **Install**。也可在聊天中输入 `/add-plugin flux`。若官方条目尚未出现,可在 `~/.cursor/plugins/local/flux/` 本地审查;本地安装不代表 Marketplace 已上架。 +在 Cursor 3.24 打开 **Customize → Browse Marketplace**,搜索 **Flux**,确认作者 **Ace Data Cloud Dev** 和服务图标后点击 **Add**。较早版本可能在 Settings 中提供 Plugins 入口。也可在聊天中输入 `/add-plugin flux`。若官方条目尚未出现,可在 `~/.cursor/plugins/local/flux/` 本地审查;本地安装不代表 Marketplace 已上架。 ## 2. 获取服务 API Key @@ -18,7 +18,7 @@ Generate Flux images and retrieve the finished image. 插件复用 [Ace Data Clo ## 3. 配置插件 -在 **Dashboard → Plugins → Configure** 选择 **Flux**,将 Key 原文填入 `ACEDATACLOUD_API_TOKEN`。插件会自行添加 `Bearer `,连接 `https://flux.mcp.acedata.cloud/mcp`;无需安装本地 Python 服务。工具未出现时重新连接 MCP。 +打开 **Customize → Plugins → Flux → Configure**,将 Key 原文填入 **Ace Data Cloud API token** 并点击 **Save**。Cursor 将其用于 `ACEDATACLOUD_API_TOKEN`;插件会自行添加 `Bearer `,连接 `https://flux.mcp.acedata.cloud/mcp`;无需安装本地 Python 服务。工具未出现时重新连接 MCP。 ## 4. 首次调用 diff --git a/third_party/flux/skills/flux/SKILL.md b/third_party/flux/skills/flux/SKILL.md index 4e5aa0975..681b9d991 100644 --- a/third_party/flux/skills/flux/SKILL.md +++ b/third_party/flux/skills/flux/SKILL.md @@ -11,4 +11,4 @@ This skill adapts the [existing Ace Data Cloud skill](https://github.com/AceData 2. Submit with `flux_generate_image` once. Save the returned `task_id` and use `flux_get_task` with that same ID until terminal. Pending is not a completed image; open the returned result URL on success. Never regenerate merely to poll. 3. Return the result, task ID if present, and any service error. Keep the API token out of chat and files. -Configure `ACEDATACLOUD_API_TOKEN` under **Dashboard → Plugins → Configure**. See the [first-run guide](../../README.md). +Configure `ACEDATACLOUD_API_TOKEN` in **Customize → Plugins → Flux → Configure**. See the [first-run guide](../../README.md). From a4c8d25442051668cc0d4facf62afe7edf8f3e4d Mon Sep 17 00:00:00 2001 From: Ace Data Cloud Dev Date: Mon, 12 Oct 2026 05:30:49 +0000 Subject: [PATCH 4/4] docs: tag shared Cursor README activation links --- third_party/flux/README.md | 6 +++--- third_party/flux/readme/README_zh_Hans.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/third_party/flux/README.md b/third_party/flux/README.md index 2c6de8fc3..26eddaacf 100644 --- a/third_party/flux/README.md +++ b/third_party/flux/README.md @@ -2,7 +2,7 @@ Generate Flux images and retrieve the finished image. This standalone plugin reuses the [Ace Data Cloud flux MCP](https://github.com/AceDataCloud/MCPs/tree/main/flux) and includes a focused Agent skill. Available tools and limits come from the live MCP schema. -[简体中文教程](readme/README_zh_Hans.md) · [Copyable first-run prompt](examples/first-run.md) · [Current pricing](https://platform.acedata.cloud/models) +[简体中文教程](readme/README_zh_Hans.md) · [Copyable first-run prompt](examples/first-run.md) · [Current pricing](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_pricing_en) ## 1. Search and install @@ -10,9 +10,9 @@ In Cursor 3.24, open **Customize → Browse Marketplace**, search for **Flux**, ## 2. Get a service API key -1. Sign in at [Ace Data Cloud Applications](https://platform.acedata.cloud/console/applications). +1. Sign in at [Ace Data Cloud Applications](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_api_key_en). 2. Open **General application** or a service-specific application. Copy an existing API key, or use **Manage Keys → Create** for a separate Cursor key. -3. Confirm Flux access, [current price](https://platform.acedata.cloud/models), and balance. If **Allowed APIs** restrictions are enabled, include /flux/images, /flux/tasks. +3. Confirm Flux access, [current price](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_pricing_en), and balance. If **Allowed APIs** restrictions are enabled, include /flux/images, /flux/tasks. Use a service API key, not a platform management token. Do not put it in chat or source files. diff --git a/third_party/flux/readme/README_zh_Hans.md b/third_party/flux/readme/README_zh_Hans.md index 16c1b279d..067890e61 100644 --- a/third_party/flux/readme/README_zh_Hans.md +++ b/third_party/flux/readme/README_zh_Hans.md @@ -2,7 +2,7 @@ Generate Flux images and retrieve the finished image. 插件复用 [Ace Data Cloud flux MCP](https://github.com/AceDataCloud/MCPs/tree/main/flux),并提供专用 Agent skill。实际工具参数和限制以在线 MCP schema 为准。 -[English guide](../README.md) · [可复制的首跑提示词](../examples/first-run.md) · [当前价格](https://platform.acedata.cloud/models) +[English guide](../README.md) · [可复制的首跑提示词](../examples/first-run.md) · [当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_pricing_zh_hans) ## 1. 搜索安装 @@ -10,9 +10,9 @@ Generate Flux images and retrieve the finished image. 插件复用 [Ace Data Clo ## 2. 获取服务 API Key -1. 登录 [Ace Data Cloud 应用管理](https://platform.acedata.cloud/console/applications)。 +1. 登录 [Ace Data Cloud 应用管理](https://platform.acedata.cloud/console/applications?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_api_key_zh_hans)。 2. 打开 **General application** 或服务专用应用,复制已有 Key;也可通过 **Manage Keys → Create** 新建 Cursor 专用 Key。 -3. 确认 Flux 权限、[当前价格](https://platform.acedata.cloud/models)和余额。若启用了 **Allowed APIs**,允许 /flux/images, /flux/tasks。 +3. 确认 Flux 权限、[当前价格](https://platform.acedata.cloud/models?utm_source=opensource&utm_medium=referral&utm_campaign=evergreen&utm_content=flux_cursor_shared_readme_pricing_zh_hans)和余额。若启用了 **Allowed APIs**,允许 /flux/images, /flux/tasks。 使用服务 API Key,不要用平台管理 token,也不要放在聊天或仓库文件中。