{"id":"b16e255f-3a27-41ee-8936-dc2d2802b4ad","entityType":"agent","slug":"clawhub-sunshinehu-550w-ai-subtitle-remover","name":"550W AI Subtitle & Watermark Remover","canonicalUrl":"https://www.xpersona.co/agent/clawhub-sunshinehu-550w-ai-subtitle-remover","canonicalPath":"/agent/clawhub-sunshinehu-550w-ai-subtitle-remover","generatedAt":"2026-10-11T03:57:25.410Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":null},"description":"Remove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits. Use for user-selected media or public share links.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s1701p66an287t266ahebtnhm986qbr5:550w-ai-subtitle-remover","sourceUrl":"https://clawhub.ai/sunshinehu/550w-ai-subtitle-remover","homepage":"https://clawhub.ai/sunshinehu/skills/550w-ai-subtitle-remover","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/sunshinehu/550w-ai-subtitle-remover","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/sunshinehu/skills/550w-ai-subtitle-remover","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"550W AI Subtitle & Watermark Remover technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":null},"stars":null,"forks":null,"downloads":1214,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T00:50:32.996Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T00:50:33.010Z","lastCrawledAt":"2026-10-11T00:50:32.996Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T00:50:32.996Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-09-23T04:46:26.510Z","changelog":"Split domestic and global distributions while preserving one Skill identity. The global edition now defaults to English and Eraser account setup, supports TikTok share-link watermark removal, and improves media safety, task handling, and MCP compatibility. Removed duplicate Skill entrypoints and aligned credential guidance.","fileCount":59,"zipByteSize":368146},{"version":"1.3.7","createdAt":"2026-09-23T01:24:09.364Z","changelog":"Security and global compatibility update: declared OpenClaw runtime and environment requirements; restricted local media access to user-selected, supported regular files; rejected symlinks and unsafe private-network video URLs; added explicit upload disclosures; improved multilingual credential guidance and task error handling.","fileCount":61,"zipByteSize":549926},{"version":"1.3.6","createdAt":"2026-09-22T15:58:46.930Z","changelog":"Version 1.3.6 – Major update with expanded documentation, new feature support, and internationalization. - Added comprehensive, bilingual documentation and API contracts for both domestic (qzm.550wai.cn) and global (eraser.550wai.com) environments. - Introduced wider tool support: video subtitle removal, short-video watermark removal (e.g., TikTok), image watermark removal, task management (progress, history, deletion), and credit inquiry. - Clarified credential handling by region and improved privacy/security instructions. - Enhanced instructions for handling batch operations, retries, and billing transparency. - Updated compatibility notes and agent integration guidelines. - Significant file structure changes: new references, metadata, action implementations, and localization resources; obsolete skill-card.md removed.","fileCount":59,"zipByteSize":546904},{"version":"1.2.0","createdAt":"2026-08-15T06:17:17.816Z","changelog":"新增图片去水印、视频去水印和静音去字幕能力；视频去字幕固定全屏处理，无需设置擦除区域；优化凭证配置、媒体预检、错误处理和重复计费保护；增加通用 CLI 执行支持。","fileCount":44,"zipByteSize":138917},{"version":"1.0.2","createdAt":"2026-08-15T06:12:24.777Z","changelog":"**Expanded support for video and image watermark removal with new actions.** - Added video and image去水印 (watermark removal) capabilities via new actions: `removeVideoWatermark`, `removeImageWatermark`, and `imageWatermarkTaskDetail`. - Updated skill description, routing, and workflow guidance to include静音去字幕、短视频无水印、图片去水印等多种场景。 - Clarified credential configuration and runtime invocation. Now supports dedicated configuration action. - Strict routing logic and billing explanations for each operation type. - SKILL.md now points to a new API contract document for detailed API field and status requirements.","fileCount":44,"zipByteSize":138700},{"version":"1.0.1","createdAt":"2026-05-14T12:29:44.710Z","changelog":"**重要调用规则与用户回复规范调整，简化为端到端全自动“workflow”调用方式。** - “workflow” action 现在只需传 videoUrl 或 file，禁止传 width/height/duration/坐标，Skill 会自动获取元信息并采用全屏去字幕。 - 去除了对 ffprobe 或其他工具预探测视频的建议，强调 Skill 必须内部自动处理视频属性。 - 新增了明确的调用示例（正确/错误）与参数填写要求，杜绝误用。 - 增加详细的用户回复规范，要求无论成功、失败或超时均主动向用户说明结果，禁止 NO_REPLY。 - 源码精简，仅保留关键运行依赖文件。","fileCount":33,"zipByteSize":23900},{"version":"1.0.0","createdAt":"2026-05-14T10:03:32.165Z","changelog":"ai-subtitle-remover 是一个视频去字幕 Skill，封装了 550W AI 平台的极速去字幕 OpenAPI。支持通过 Agent 直接调用，提供从视频上传到获取去字幕结果的完整能力闭环。 核心能力： 视频上传（uploadVideo）：上传本地视频获取云端 URL，支持 mp4/mov 格式，最大 1GB 提交去字幕任务（submitTask）：指定字幕区域坐标，支持全屏模式和区域模式 任务状态查询（taskDetail）：实时查询处理进度，获取去字幕后的视频下载地址 历史任务列表（taskList）：分页查询已提交的任务记录 积分余额查询（queryCredits）：查询账户剩余积分，支持消耗预估 端到端工作流（workflow）：一次调用完成上传→提交→轮询→返回结果的完整流程 特性： 完善的参数校验，避免无效请求 统一错误码体系（-100 鉴权/-200 参数/-300 业务/-500 服务异常） 首次使用自动引导凭证配置 workflow 模式支持 10 分钟自动轮询，超时返回 taskId 供后续查询 适用平台： SkillHub、ClawHub 适用 Agent： OpenClaw、Hermes 凭证要求： 需要 userNo 和 apiKey，申请地址 https://qzm.550wai.cn","fileCount":44,"zipByteSize":49727}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1701p66an287t266ahebtnhm986qbr5:550w-ai-subtitle-remover","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s1701p66an287t266ahebtnhm986qbr5:550w-ai-subtitle-remover` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/sunshinehu/550w-ai-subtitle-remover before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T03:57:25.406Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sunshinehu-550w-ai-subtitle-remover/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":null},"readme":"Skill: 550W AI Subtitle & Watermark Remover\n\nOwner: sunshinehu\n\nSummary: Remove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits. Use for user-selected media or public share links.\n\nTags: latest:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-09-23T04:46:26.510Z | user\n\nSplit domestic and global distributions while preserving one Skill identity. The global edition now defaults to English and Eraser account setup, supports TikTok share-link watermark removal, and improves media safety, task handling, and MCP compatibility. Removed duplicate Skill entrypoints and aligned credential guidance.\n\nv1.3.7 | 2026-09-23T01:24:09.364Z | user\n\nSecurity and global compatibility update: declared OpenClaw runtime and environment requirements; restricted local media access to user-selected, supported regular files; rejected symlinks and unsafe private-network video URLs; added explicit upload disclosures; improved multilingual credential guidance and task error handling.\n\nv1.3.6 | 2026-09-22T15:58:46.930Z | user\n\nVersion 1.3.6 – Major update with expanded documentation, new feature support, and internationalization.\n\n- Added comprehensive, bilingual documentation and API contracts for both domestic (qzm.550wai.cn) and global (eraser.550wai.com) environments.\n- Introduced wider tool support: video subtitle removal, short-video watermark removal (e.g., TikTok), image watermark removal, task management (progress, history, deletion), and credit inquiry.\n- Clarified credential handling by region and improved privacy/security instructions.\n- Enhanced instructions for handling batch operations, retries, and billing transparency.\n- Updated compatibility notes and agent integration guidelines.\n- Significant file structure changes: new references, metadata, action implementations, and localization resources; obsolete skill-card.md removed.\n\nv1.2.0 | 2026-08-15T06:17:17.816Z | user\n\n新增图片去水印、视频去水印和静音去字幕能力；视频去字幕固定全屏处理，无需设置擦除区域；优化凭证配置、媒体预检、错误处理和重复计费保护；增加通用 CLI 执行支持。\n\nv1.0.2 | 2026-08-15T06:12:24.777Z | user\n\n**Expanded support for video and image watermark removal with new actions.**\n\n- Added video and image去水印 (watermark removal) capabilities via new actions: `removeVideoWatermark`, `removeImageWatermark`, and `imageWatermarkTaskDetail`.\n- Updated skill description, routing, and workflow guidance to include静音去字幕、短视频无水印、图片去水印等多种场景。\n- Clarified credential configuration and runtime invocation. Now supports dedicated configuration action.\n- Strict routing logic and billing explanations for each operation type.\n- SKILL.md now points to a new API contract document for detailed API field and status requirements.\n\nv1.0.1 | 2026-05-14T12:29:44.710Z | user\n\n**重要调用规则与用户回复规范调整，简化为端到端全自动“workflow”调用方式。**\n\n- “workflow” action 现在只需传 videoUrl 或 file，禁止传 width/height/duration/坐标，Skill 会自动获取元信息并采用全屏去字幕。\n- 去除了对 ffprobe 或其他工具预探测视频的建议，强调 Skill 必须内部自动处理视频属性。\n- 新增了明确的调用示例（正确/错误）与参数填写要求，杜绝误用。\n- 增加详细的用户回复规范，要求无论成功、失败或超时均主动向用户说明结果，禁止 NO_REPLY。\n- 源码精简，仅保留关键运行依赖文件。\n\nv1.0.0 | 2026-05-14T10:03:32.165Z | user\n\nai-subtitle-remover 是一个视频去字幕 Skill，封装了 550W AI 平台的极速去字幕 OpenAPI。支持通过 Agent 直接调用，提供从视频上传到获取去字幕结果的完整能力闭环。\n\n核心能力：\n\n视频上传（uploadVideo）：上传本地视频获取云端 URL，支持 mp4/mov 格式，最大 1GB\n提交去字幕任务（submitTask）：指定字幕区域坐标，支持全屏模式和区域模式\n任务状态查询（taskDetail）：实时查询处理进度，获取去字幕后的视频下载地址\n历史任务列表（taskList）：分页查询已提交的任务记录\n积分余额查询（queryCredits）：查询账户剩余积分，支持消耗预估\n端到端工作流（workflow）：一次调用完成上传→提交→轮询→返回结果的完整流程\n特性：\n\n完善的参数校验，避免无效请求\n统一错误码体系（-100 鉴权/-200 参数/-300 业务/-500 服务异常）\n首次使用自动引导凭证配置\nworkflow 模式支持 10 分钟自动轮询，超时返回 taskId 供后续查询\n适用平台： SkillHub、ClawHub\n\n适用 Agent： OpenClaw、Hermes\n\n凭证要求： 需要 userNo 和 apiKey，申请地址 https://qzm.550wai.cn\n\nArchive index:\n\nArchive v2.0.0: 59 files, 368146 bytes\n\nFiles: connector-meta.json (1681b), dist/550w-mcp.cjs (1865995b), dist/550w-skill.cjs (72841b), dist/actions/delete-task.d.ts (193b), dist/actions/delete-task.js (1202b), dist/actions/image-watermark-task-detail.d.ts (207b), dist/actions/image-watermark-task-detail.js (1197b), dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1242b), dist/actions/remove-image-watermark.d.ts (203b), dist/actions/remove-image-watermark.js (1399b), dist/actions/remove-video-watermark.d.ts (203b), dist/actions/remove-video-watermark.js (1325b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (2652b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (2188b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (1565b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1210b), dist/api-client.d.ts (627b), dist/api-client.js (5970b), dist/cli.d.ts (31b), dist/cli.js (1768b), dist/credential-manager.d.ts (399b), dist/credential-manager.js (5551b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (4375b), dist/error-handler.d.ts (363b), dist/error-handler.js (3568b), dist/i18n.d.ts (601b), dist/i18n.js (5049b), dist/index.d.ts (117b), dist/index.js (462b), dist/local-media.d.ts (232b), dist/local-media.js (2556b), dist/mcp-server.d.ts (31b), dist/mcp-server.js (9884b), dist/types.d.ts (5499b), dist/types.js (2802b), dist/validator.d.ts (574b), dist/validator.js (13160b), dist/video-probe.d.ts (479b), dist/video-probe.js (3806b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (5570b), distribution.json (481b), icon.svg (262b), mcp.json (406b), package-lock.json (66354b), package.json (870b), references/agent-compatibility.md (3733b), references/api-contract.md (6966b), skill-card.md (2232b), skill.json (1391b), SKILL.md (4870b), token-schema.json (1761b), _meta.json (143b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: ai-subtitle-remover\ndescription: Remove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits. Use for user-selected media or public share links.\nmetadata:\n  openclaw:\n    primaryEnv: SUBTITLE_REMOVER_API_KEY\n    requires:\n      bins:\n        - node\n    envVars:\n      - name: SUBTITLE_REMOVER_API_KEY\n        required: false\n        description: API key for authenticated requests to the 550W Open API.\n      - name: SUBTITLE_REMOVER_USER_NO\n        required: false\n        description: User ID belonging to the same 550W account as the API key.\n      - name: FFPROBE_PATH\n        required: false\n        description: Optional ffprobe executable path for inspecting public direct video URLs.\n---\n\n# 550W AI subtitle and watermark removal\n\nUse the highest-level matching tool. The global edition defaults to English; its account setup uses Eraser, while media operations use the shared 550W Open API. Respond in the user's language when possible; tool messages fall back to English except for Chinese. Language never changes the service region.\n\n## Credentials and data\n\n- If credentials are missing, direct the user to the localized Eraser API page at `https://eraser.550wai.com/{locale}/api/`; use <https://eraser.550wai.com/api/> for English or unsupported locales. They need the User ID and API Key from the same account.\n- In WorkBuddy, ask the user to fill in both fields in the connector settings. Otherwise use `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`, or the `configureCredentials` action. Never repeat a complete API Key.\n- Before the first media operation, explain that the selected file or public link is sent to the 550W Open API. Use only a file the user explicitly selected or named. Privacy and terms: <https://eraser.550wai.com/privacy/> and <https://eraser.550wai.com/terms/>; localized pages are available.\n\n## Capabilities\n\n- Remove hardcoded subtitles from a local MP4/MOV video or a public direct video-file URL: `remove_video_subtitles` (CLI action `workflow`). The tool derives local-video metadata. `removeAudio` is only an optional parameter when explicitly requested.\n- Remove a short-video watermark: ask the user to copy the public video share link inside the platform app and provide that link, or share text containing one link. TikTok and other service-supported platforms are examples. Call `remove_video_watermark` (CLI action `removeVideoWatermark`) with the share link; do not download the video first. Use a stable `operationId` when available.\n- Remove watermarks or unwanted text from a user-selected local image: `remove_image_watermark` (CLI action `removeImageWatermark`). Process multiple images serially.\n- Check subtitle or image task status, subtitle task history, and credit balance: `get_subtitle_task`, `get_image_task`, `list_subtitle_tasks`, `query_credits`.\n- Delete an owned subtitle task: `delete_subtitle_task`. Explain that this schedules media cleanup and does not refund credits; confirm immediately before deletion.\n- Ask one question if the input or intended billed operation is ambiguous.\n\nIf the host has no registered tools, send one JSON request on standard input to `node {baseDir}/dist/550w-skill.cjs`. Use an absolute `params.filePath` for a local file and parse the single JSON response.\n\n## Processing and billing\n\n- Subtitle removal uses full-frame erasing. Never request or send erase coordinates. For a public direct video URL, `ffprobe` obtains actual width, height, and duration unless all three are supplied. Reject private-network or credential-bearing URLs; never invent metadata.\n- Use the same `subUserId` for a child user's submission, task lookup, list filtering, and deletion. The subtitle workflow polls for up to 10 minutes; on timeout or repeated query failure, return the task ID for later lookup.\n- Image removal is synchronous by default. For `processing`, preserve the task ID and query it later. Only expose a result URL on `success`; explain `failed` and `expired` states.\n- Subtitle removal is billed by duration and resolution. Share-link video watermark removal costs one credit per successful result; image removal costs 10 credits per successful image. State the unit before a batch and include only selected items.\n- A timeout does not prove submission failed. Query the task first; never blindly retry a billed operation. Reuse an `idempotencyKey` only with identical subtitle inputs. Report the service's `refundStatus` on subtitle failure without assuming a refund.\n- Return the result or actionable error to the user in every case.\n\nRead [API contract](references/api-contract.md) for limits, statuses, billing formulas, and errors. Read [agent compatibility](references/agent-compatibility.md) for installation outside WorkBuddy.\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7czsjs5ywdr4de3e947n93r586qqsa\",\n  \"slug\": \"550w-ai-subtitle-remover\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1790138786510\n}\n\nFile v2.0.0:references/agent-compatibility.md\n\n# Agent compatibility / Agent 兼容性\n\nRead this reference when installing the package outside WorkBuddy or diagnosing an MCP client.\n\n仅在 WorkBuddy 之外安装，或排查 MCP 客户端兼容性时读取。\n\n## Runtime contract / 运行契约\n\n- Runtime: Node.js 18 or newer / Node.js 18 或更高版本。\n- Transport: local MCP over stdio using newline-delimited JSON-RPC. The server writes protocol messages only to stdout / 使用 stdio 的本地 MCP，协议为按行分隔的 JSON-RPC；服务端仅向 stdout 写协议消息。\n- Entrypoint: `dist/550w-mcp.cjs`; set the package root as `cwd` or use an absolute entrypoint path / 入口是 `dist/550w-mcp.cjs`；将包根目录设为 `cwd`，或使用入口绝对路径。\n- Credentials: `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`. The package selects its service region; users do not need a region setting / 凭据使用上述两个环境变量；发行包已决定服务区域，用户无需设置地区。\n- Network access: allow HTTPS access to `www.550wai.cn`; local-file tools also need read access to the selected media / 需要允许访问 `www.550wai.cn`；本地文件工具还需获得所选媒体的读取权限。\n\n## Client families / 客户端类型\n\n- WorkBuddy: use the bundled `mcp.json`, `token-schema.json`, and connector metadata. Its token form maps credentials into the MCP process environment / 使用包内 WorkBuddy 配置，由凭据表单注入环境变量。\n- Claude Desktop, Cursor, Windsurf, and clients using the common `mcpServers` shape: launch `node` with the absolute `dist/550w-mcp.cjs` path and pass credentials through `env` / 使用常见 `mcpServers` 结构的客户端，以 `node` 启动绝对入口路径并通过 `env` 传入凭据。\n- Codex desktop, CLI, and IDE: configure a local stdio server with command, args, cwd, and forwarded environment variables / 使用本地 stdio 配置，提供 command、args、cwd 与环境变量。\n- VS Code and GitHub Copilot: use the `servers` configuration shape rather than `mcpServers`; prefer secure input variables for credentials / 使用 `servers` 结构，并优先使用安全输入变量保存凭据。\n- OpenClaw and other Agent Skills clients: install the `ai-subtitle-remover` package directory and discover its root `SKILL.md`; the bundled MCP server remains the source of callable tools / 安装 `ai-subtitle-remover` 目录并读取根目录的 `SKILL.md`，可调用工具仍由包内 MCP 服务提供。\n\n## Portability boundaries / 可移植性边界\n\n- Global MCP tools accept an optional `locale` for localized messages. The global package defaults to English; the domestic package responds in Chinese. Neither package asks for a region parameter / 全球版 MCP 工具可选传入 `locale`，默认英语；国内版使用中文。两版都不要求设置地区。\n- Tool schemas are JSON-Schema compatible and expose MCP safety annotations. Read-only tools are marked read-only; task deletion is marked destructive / 工具 schema 兼容 JSON Schema，并提供 MCP 安全标记；查询类工具为只读，删除任务标记为破坏性操作。\n- This package is a local stdio server. Browser-only or SaaS agents that accept only remote Streamable HTTP MCP cannot connect to the ZIP directly; deploy a separately secured HTTP MCP gateway instead / 本包是本地 stdio 服务。仅接受远程 Streamable HTTP MCP 的浏览器或 SaaS Agent 不能直接连接 ZIP，需要另行部署带鉴权的 HTTP MCP 网关。\n- Do not translate one client's configuration file directly into another without changing its top-level schema (`mcpServers` versus `servers` or TOML) / 不要在未调整顶层结构时直接复制不同客户端的配置。\n\nFile v2.0.0:references/api-contract.md\n\n# 550W Open API contract / 接口契约\n\nRead this reference only when validating inputs, explaining billing, or handling provider responses. The domestic credential-management page is `https://qzm.550wai.cn/api-keys`. The global documentation and credential page is `https://eraser.550wai.com/api/`; supported locale routes use `https://eraser.550wai.com/{locale}/api/`. These regional surfaces configure the same shared Skill capabilities.\n\n仅在校验输入、解释计费或处理服务响应时读取。国内凭据管理页是 `https://qzm.550wai.cn/api-keys`；全球文档与凭据页是 `https://eraser.550wai.com/api/`，支持的语言使用 `https://eraser.550wai.com/{locale}/api/`。这些地区入口配置的是同一个全球共享 Skill 能力。\n\n## Actions / 能力\n\n| Action | Endpoint | Scope and input / 范围与输入 |\n|---|---|---|\n| `uploadVideo` | `/open/uploadVideo` | MP4/MOV file / MP4、MOV 文件 |\n| `submitTask` | `/open/submitTask` | Direct video URL plus actual width, height, and duration; optional `subUserId`; the skill submits full-frame coordinates / 视频直链及真实宽高、时长；可选 `subUserId`；Skill 固定提交全屏坐标 |\n| `taskDetail` | `/open/taskDetail` | Subtitle-removal `taskId`; optional matching `subUserId` / 去字幕任务编号；可选且需匹配的 `subUserId` |\n| `taskList` | `/open/taskList` | `page`, `size`; optional `subUserId` scope / 分页参数；可选 `subUserId` 范围 |\n| `deleteTask` | `/open/deleteTask` | Subtitle task `taskId`; optional `subUserId`. Destructive and does not refund credits / 去字幕任务编号；可选 `subUserId`。删除不可撤销且不退积分 |\n| `queryCredits` | `/open/queryCredits` | No business parameters / 无业务参数 |\n| `removeImageWatermark` | `/open/removeImageWatermark` | One image file; `sync` defaults to `true` / 单张图片；`sync` 默认 `true` |\n| `imageWatermarkTaskDetail` | `/open/imageWatermarkTaskDetail` | Image task `taskId` / 图片任务编号 |\n| `removeVideoWatermark` | `/open/removeVideoWatermark` | TikTok or another supported short-video share URL copied in the platform app, or copied share text; optional `operationId` / 在平台 App 内复制的 TikTok 等短视频分享链接或分享文本；可选 `operationId` |\n\nAll remote calls authenticate with `userNo` and `apiKey`. Capabilities are shared globally; region and locale affect the credential/documentation URL and user-facing language, not tool availability.\n\n所有远程请求使用 `userNo` 与 `apiKey` 鉴权。能力全球共享；地区和语言只影响凭据/文档入口及用户文案，不限制工具可用性。\n\n## Input limits / 输入限制\n\n- Video / 视频：MP4 or MOV, at most 1 GB, 1–600 seconds; maximum side at most 1920 and minimum side at most 1080 / MP4 或 MOV，最大 1GB，时长 1–600 秒；最大边不超过 1920，最小边不超过 1080。\n- Image / 图片：JPG, PNG, BMP, WebP, AVIF, TIFF, or SVG; at most 50 MB / 最大 50MB。\n- URL：HTTP or HTTPS only, at most 2048 characters / 仅 HTTP 或 HTTPS，最长 2048 字符。\n- Video-link watermark removal accepts TikTok and other provider-supported public share links copied inside the platform app. Supply that link as `videoUrl`; no prior download is needed. Copied share text may be supplied when it contains one HTTP(S) URL. Actual platform support depends on the service response. `operationId` is 8–64 characters using letters, numbers, `.`, `_`, `:`, or `-`; reuse it only for the same URL / 在平台 App 内复制 TikTok 等短视频的公开视频分享链接，并将链接作为 `videoUrl` 输入，无需先下载。分享文本中包含一个 HTTP(S) URL 时也可使用；实际支持的平台以服务端响应为准。`operationId` 为 8–64 位，字符集同上且仅用于同一链接。\n- Subtitle submission accepts an optional `idempotencyKey` of 8–128 characters using the same character set. Reusing the key with identical inputs returns the original task; different inputs are rejected / 去字幕提交支持可选的 `idempotencyKey`，长度 8–128 位且字符集同上。同一键与相同参数会返回原任务，与不同参数复用会被拒绝。\n- `removeAudio` is an optional subtitle-removal parameter, defaults to `false`, and must be enabled only when the user explicitly requests removal of the audio track. It does not re-encode the video stream / `removeAudio` 是去字幕的次要可选参数，默认 `false`；仅在用户明确要求移除音轨时启用，且不重新编码视频流。\n- When image `sync=false`, query the returned task ID later / 图片 `sync=false` 时按返回的任务编号查询。\n\n## Status / 状态\n\n- Subtitle removal / 去字幕：`waiting`, `processing`, `success`, `failed`.\n- Image watermark removal / 图片去水印：`processing`, `success`, `failed`, `expired`.\n\n## Billing / 计费\n\n- Subtitle removal / 去字幕：up to 720p, `ceil(duration × 1.3)`; above 720p, `ceil(duration × 1.6)` / 不高于 720P 按 `ceil(duration × 1.3)`，高于 720P 按 `ceil(duration × 1.6)`。\n- Video-link watermark removal / 短视频链接去水印：1 credit per successful result; failures are not charged / 成功一次 1 积分，失败不扣积分。\n- Image watermark removal / 图片去水印：10 credits per successful image / 成功一张 10 积分。\n- Capabilities share the account credit balance; the API response is authoritative / 各能力共用账户积分余额，以接口响应为准。\n\n## Errors and retry safety / 错误与重试安全\n\n- `200`: success / 成功。\n- `-100`: authentication or insufficient credits; follow `message` / 鉴权或额度不足，以 `message` 为准。\n- `-200`: invalid parameter or file / 参数或文件不合法。\n- `-300`: business rejection, missing task, or service busy / 业务拒绝、任务不存在或服务繁忙。\n- `-401` / `-402`: temporarily or permanently restricted account; stop submitting / 账号被临时或永久限制，停止提交。\n- `-500`: service error. If submission may have succeeded, query task state before retrying / 服务异常；无法确认是否已提交时先查询任务，不能直接重试。\n- `-600`: unsupported video format; ask the user to export a compatible MP4 or MOV / 视频格式不支持，提示用户重新导出兼容格式。\n\n## Data handling / 数据处理\n\nSelected local files and public media URLs are sent to the 550W Open API for processing. Credentials remain in local configuration. For global users, surface the localized privacy and terms pages when relevant: `https://eraser.550wai.com/{locale}/privacy/` and `https://eraser.550wai.com/{locale}/terms/`, with the locale segment omitted for English.\n\n选中的本地文件和公开媒体 URL 会发送到 550W Open API 处理，凭据保存在本地配置中。面向全球用户时，按需提供对应语言的隐私政策和服务条款；英语页面省略语言路径段。\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nRemove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[sunshinehu](https://clawhub.ai/user/sunshinehu)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agent operators use this skill to remove subtitles or watermarks from selected videos, public share links, and images, and to check processing tasks and account credits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected media files or public links are sent to the 550W Open API for processing.\n\nMitigation: Use only media or links explicitly selected by the user and disclose the remote processing step before the first media operation.\n\nRisk: Credentials may be stored locally for authenticated API requests.\n\nMitigation: Use connector or environment secret storage when available and avoid repeating complete API keys in chat or logs.\n\nRisk: Deleting a subtitle task can clean up related remote media and does not refund credits.\n\nMitigation: Allow deletion only through a host workflow that asks for explicit confirmation immediately before the destructive action.\n\n## Reference(s):\n\n- [API contract](references/api-contract.md)\n- [Agent compatibility](references/agent-compatibility.md)\n- [550W Open API credential page](https://eraser.550wai.com/api/)\n- [ClawHub skill page](https://clawhub.ai/sunshinehu/skills/550w-ai-subtitle-remover)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, API calls, shell commands, configuration]\n\n**Output Format:** [Markdown and JSON-like tool responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May return task IDs, status messages, credit balances, result URLs, and actionable errors.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release evidence and package.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.0.0:connector-meta.json\n\n{\n  \"name\": \"550W AI Subtitle & Watermark Remover\",\n  \"name_zh\": \"550W AI 字幕与水印去除\",\n  \"name_en\": \"550W AI Subtitle & Watermark Remover\",\n  \"description\": \"Remove hardcoded video subtitles, watermarks from TikTok and other supported short-video share links, and image watermarks or unwanted text; check tasks and credits. Copy a video share link in the app to use it.\",\n  \"description_zh\": \"去除视频硬字幕、抖音/快手/Bilibili/微博/小红书等短视频分享链接水印、图片水印或多余文字，并查询任务和积分。在 App 内复制视频分享链接即可使用。\",\n  \"description_en\": \"Remove hardcoded video subtitles, watermarks from TikTok and other supported short-video share links, and image watermarks or unwanted text; check tasks and credits. Copy a video share link in the app to use it.\",\n  \"source\": \"ai-subtitle-remover\",\n  \"type\": \"mcp\",\n  \"version\": \"2.0.0\",\n  \"auth_mode\": \"token\",\n  \"minWorkbuddyVersion\": \"4.24.0\",\n  \"examples_zh\": [\n    \"去掉这个视频里的字幕\",\n    \"我在抖音 App 内复制了这条视频的分享链接，帮我去水印\",\n    \"去掉这张图片上的文字水印\",\n    \"查询我的积分余额\"\n  ],\n  \"examples_en\": [\n    \"Remove the subtitles from this video\",\n    \"I copied this TikTok video share link in the app. Remove its watermark.\",\n    \"Remove the text watermark from this image\",\n    \"Check my credit balance\"\n  ],\n  \"examples\": [\n    \"Remove the subtitles from this video\",\n    \"I copied this TikTok video share link in the app. Remove its watermark.\",\n    \"Remove the text watermark from this image\",\n    \"Check my credit balance\"\n  ],\n  \"distributionRegion\": \"global\"\n}\n\nFile v2.0.0:distribution.json\n\n{\n  \"region\": \"global\",\n  \"locale\": \"en\",\n  \"market\": \"ClawHub and all non-domestic Agent Skills stores\",\n  \"displayName\": \"550W AI Subtitle & Watermark Remover\",\n  \"description\": \"Remove hardcoded video subtitles, watermarks from TikTok and other supported short-video share links, and image watermarks or unwanted text; check tasks and credits. Copy a video share link in the app to use it.\",\n  \"credentialUrl\": \"https://eraser.550wai.com/api/\",\n  \"archiveDirectory\": \"global\"\n}\n\nFile v2.0.0:mcp.json\n\n{\n  \"mcpServers\": {\n    \"ai-subtitle-remover\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\n        \"dist/550w-mcp.cjs\"\n      ],\n      \"cwd\": \".\",\n      \"env\": {\n        \"SUBTITLE_REMOVER_USER_NO\": \"${SUBTITLE_REMOVER_USER_NO}\",\n        \"SUBTITLE_REMOVER_API_KEY\": \"${SUBTITLE_REMOVER_API_KEY}\",\n        \"SUBTITLE_REMOVER_REGION\": \"global\"\n      },\n      \"timeout\": 660000\n    }\n  }\n}\n\nFile v2.0.0:package-lock.json\n\n{\n  \"name\": \"ai-subtitle-remover\",\n  \"version\": \"2.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"ai-subtitle-remover\",\n      \"version\": \"2.0.0\",\n      \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.30.0\",\n        \"axios\": \"^1.19.0\",\n        \"form-data\": \"^4.0.6\",\n        \"zod\": \"^4.6.5\"\n      },\n      \"bin\": {\n        \"550w-mcp\": \"dist/550w-mcp.cjs\",\n        \"550w-skill\": \"dist/550w-skill.cjs\"\n      },\n      \"devDependencies\": {\n        \"@types/node\": \"^20.14.0\",\n        \"esbuild\": \"^0.28.2\",\n        \"typescript\": \"^5.4.5\"\n      }\n    },\n    \"node_modules/@esbuild/aix-ppc64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz\",\n      \"integrity\": \"sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==\",\n      \"cpu\": [\n        \"ppc64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"aix\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-arm\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz\",\n      \"integrity\": \"sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/darwin-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/darwin-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/freebsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"freebsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/freebsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"freebsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-arm\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz\",\n      \"integrity\": \"sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-ia32\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz\",\n      \"integrity\": \"sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==\",\n      \"cpu\": [\n        \"ia32\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-loong64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz\",\n      \"integrity\": \"sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==\",\n      \"cpu\": [\n        \"loong64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-mips64el\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz\",\n      \"integrity\": \"sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==\",\n      \"cpu\": [\n        \"mips64el\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-ppc64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz\",\n      \"integrity\": \"sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==\",\n      \"cpu\": [\n        \"ppc64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-riscv64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz\",\n      \"integrity\": \"sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==\",\n      \"cpu\": [\n        \"riscv64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-s390x\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz\",\n      \"integrity\": \"sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==\",\n      \"cpu\": [\n        \"s390x\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/netbsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"netbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/netbsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"netbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openbsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openbsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openharmony-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openharmony\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/sunos-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"sunos\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-ia32\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz\",\n      \"integrity\": \"sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==\",\n      \"cpu\": [\n        \"ia32\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@hono/node-server\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz\",\n      \"integrity\": \"sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20\"\n      },\n      \"peerDependencies\": {\n        \"hono\": \"^4\"\n      }\n    },\n    \"node_modules/@modelcontextprotocol/sdk\": {\n      \"version\": \"1.30.0\",\n      \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz\",\n      \"integrity\": \"sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n        \"ajv\": \"^8.17.1\",\n        \"ajv-formats\": \"^3.0.1\",\n        \"content-type\": \"^1.0.5\",\n        \"cors\": \"^2.8.5\",\n        \"cross-spawn\": \"^7.0.5\",\n        \"eventsource\": \"^3.0.2\",\n        \"eventsource-parser\": \"^3.0.0\",\n        \"express\": \"^5.2.1\",\n        \"express-rate-limit\": \"^8.2.1\",\n        \"hono\": \"^4.11.4\",\n        \"jose\": \"^6.1.3\",\n        \"json-schema-typed\": \"^8.0.2\",\n        \"pkce-challenge\": \"^5.0.0\",\n        \"raw-body\": \"^3.0.0\",\n        \"zod\": \"^3.25 || ^4.0\",\n        \"zod-to-json-schema\": \"^3.25.1\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"peerDependencies\": {\n        \"@cfworker/json-schema\": \"^4.1.1\",\n        \"zod\": \"^3.25 || ^4.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"@cfworker/json-schema\": {\n          \"optional\": true\n        },\n        \"zod\": {\n          \"optional\": false\n        }\n      }\n    },\n    \"node_modules/@types/node\": {\n      \"version\": \"20.19.43\",\n      \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz\",\n      \"integrity\": \"sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"undici-types\": \"~6.21.0\"\n      }\n    },\n    \"node_modules/accepts\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n      \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-types\": \"^3.0.0\",\n        \"negotiator\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/accepts/node_modules/mime-db\": {\n      \"version\": \"1.54.0\",\n      \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz\",\n      \"integrity\": \"sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/accepts/node_modules/mime-types\": {\n      \"version\": \"3.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz\",\n      \"integrity\": \"sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-db\": \"^1.54.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"6.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz\",\n      \"integrity\": \"sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"4\"\n      },\n      \"engines\": {\n        \"node\": \">= 6.0.0\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.20.0\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n      \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ajv-formats\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n      \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ajv\": \"^8.0.0\"\n      },\n      \"peerDependencies\": {\n        \"ajv\": \"^8.0.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"ajv\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/axios\": {\n      \"version\": \"1.19.0\",\n      \"resolved\": \"https://registry.npmjs.org/axios/-/axios-1.19.0.tgz\",\n      \"integrity\": \"sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"follow-redirects\": \"^1.16.0\",\n        \"form-data\": \"^4.0.6\",\n        \"https-proxy-agent\": \"^5.0.1\",\n        \"proxy-from-env\": \"^2.1.0\"\n      }\n    },\n    \"node_modules/body-parser\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n      \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bytes\": \"^3.1.2\",\n        \"content-type\": \"^2.0.0\",\n        \"debug\": \"^4.4.3\",\n        \"http-errors\": \"^2.0.1\",\n        \"iconv-lite\": \"^0.7.2\",\n        \"on-finished\": \"^2.4.1\",\n        \"qs\": \"^6.15.2\",\n        \"raw-body\": \"^3.0.2\",\n        \"type-is\": \"^2.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/body-parser/node_modules/content-type\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n      \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/bytes\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n      \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/content-disposition\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz\",\n      \"integrity\": \"sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/content-type\": {\n      \"version\": \"1.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n      \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/cookie\": {\n      \"version\": \"0.7.2\",\n      \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n      \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/cookie-signature\": {\n      \"version\": \"1.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n      \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.6.0\"\n      }\n    },\n    \"node_modules/cors\": {\n      \"version\": \"2.8.6\",\n      \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.6.tgz\",\n      \"integrity\": \"sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"object-assign\": \"^4\",\n        \"vary\": \"^1\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.10\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/depd\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/depd/-/depd-2.0.0.tgz\",\n      \"integrity\": \"sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/dunder-proto\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz\",\n      \"integrity\": \"sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.1\",\n        \"es-errors\": \"^1.3.0\",\n        \"gopd\": \"^1.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/ee-first\": {\n      \"version\": \"1.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz\",\n      \"integrity\": \"sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/encodeurl\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz\",\n      \"integrity\": \"sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/es-define-property\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz\",\n      \"integrity\": \"sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-errors\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz\",\n      \"integrity\": \"sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-object-atoms\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz\",\n      \"integrity\": \"sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-set-tostringtag\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz\",\n      \"integrity\": \"sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"get-intrinsic\": \"^1.2.6\",\n        \"has-tostringtag\": \"^1.0.2\",\n        \"hasown\": \"^2.0.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/esbuild\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz\",\n      \"integrity\": \"sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"esbuild\": \"bin/esbuild\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"@esbuild/aix-ppc64\": \"0.28.2\",\n        \"@esbuild/android-arm\": \"0.28.2\",\n        \"@esbuild/android-arm64\": \"0.28.2\",\n        \"@esbuild/android-x64\": \"0.28.2\",\n        \"@esbuild/darwin-arm64\": \"0.28.2\",\n        \"@esbuild/darwin-x64\": \"0.28.2\",\n        \"@esbuild/freebsd-arm64\": \"0.28.2\",\n        \"@esbuild/freebsd-x64\": \"0.28.2\",\n        \"@esbuild/linux-arm\": \"0.28.2\",\n        \"@esbuild/linux-arm64\": \"0.28.2\",\n        \"@esbuild/linux-ia32\": \"0.28.2\",\n        \"@esbuild/linux-loong64\": \"0.28.2\",\n        \"@esbuild/linux-mips64el\": \"0.28.2\",\n        \"@esbuild/linux-ppc64\": \"0.28.2\",\n        \"@esbuild/linux-riscv64\": \"0.28.2\",\n        \"@esbuild/linux-s390x\": \"0.28.2\",\n        \"@esbuild/linux-x64\": \"0.28.2\",\n        \"@esbuild/netbsd-arm64\": \"0.28.2\",\n        \"@esbuild/netbsd-x64\": \"0.28.2\",\n        \"@esbuild/openbsd-arm64\": \"0.28.2\",\n        \"@esbuild/openbsd-x64\": \"0.28.2\",\n        \"@esbuild/openharmony-arm64\": \"0.28.2\",\n        \"@esbuild/sunos-x64\": \"0.28.2\",\n        \"@esbuild/win32-arm64\": \"0.28.2\",\n        \"@esbuild/win32-ia32\": \"0.28.2\",\n        \"@esbuild/win32-x64\": \"0.28.2\"\n      }\n    },\n    \"node_modules/escape-html\": {\n      \"version\": \"1.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz\",\n      \"integrity\": \"sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/etag\": {\n      \"version\": \"1.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/etag/-/etag-1.8.1.tgz\",\n      \"integrity\": \"sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/eventsource\": {\n      \"version\": \"3.0.7\",\n      \"resolved\": \"https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz\",\n      \"integrity\": \"sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eventsource-parser\": \"^3.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/eventsource-parser\": {\n      \"version\": \"3.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz\",\n      \"integrity\": \"sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/express\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/express/-/express-5.2.1.tgz\",\n      \"integrity\": \"sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"accepts\": \"^2.0.0\",\n        \"body-parser\": \"^2.2.1\",\n        \"content-disposition\": \"^1.0.0\",\n        \"content-type\": \"^1.0.5\",\n        \"cookie\": \"^0.7.1\",\n        \"cookie-signature\": \"^1.2.1\",\n        \"debug\": \"^4.4.0\",\n        \"depd\": \"^2.0.0\",\n        \"encodeurl\": \"^2.0.0\",\n        \"escape-html\": \"^1.0.3\",\n        \"etag\": \"^1.8.1\",\n        \"finalhandler\": \"^2.1.0\",\n        \"fresh\": \"^2.0.0\",\n        \"http-errors\": \"^2.0.0\",\n        \"merge-descriptors\": \"^2.0.0\",\n        \"mime-types\": \"^3.0.0\",\n        \"on-finished\": \"^2.4.1\",\n        \"once\": \"^1.4.0\",\n        \"parseurl\": \"^1.3.3\",\n        \"proxy-addr\": \"^2.0.7\",\n        \"qs\": \"^6.14.0\",\n        \"range-parser\": \"^1.2.1\",\n        \"router\": \"^2.2.0\",\n        \"send\": \"^1.1.0\",\n        \"serve-static\": \"^2.2.0\",\n        \"statuses\": \"^2.0.1\",\n        \"type-is\": \"^2.0.1\",\n        \"vary\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/express-rate-limit\": {\n      \"version\": \"8.7.0\",\n      \"resolved\": \"https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz\",\n      \"integrity\": \"sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"^4.4.3\",\n        \"ip-address\": \"^10.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 16\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/express-rate-limit\"\n      },\n      \"peerDependencies\": {\n        \"express\": \">= 4.11\"\n      }\n    },\n    \"node_modules/express/node_modules/mime-db\": {\n      \"version\": \"1.54.0\",\n      \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz\",\n      \"integrity\": \"sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/express/node_modules/mime-types\": {\n      \"version\": \"3.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz\",\n      \"integrity\": \"sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-db\": \"^1.54.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/fast-deep-equal\": {\n      \"version\": \"3.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz\",\n      \"integrity\": \"sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/fast-uri\": {\n      \"version\": \"3.1.8\",\n      \"resolved\": \"https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz\",\n      \"integrity\": \"sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==\",\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/fastify\"\n        },\n        {\n          \"type\": \"opencollective\",\n          \"url\": \"https://opencollective.com/fastify\"\n        }\n      ],\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/finalhandler\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz\",\n      \"integrity\": \"sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"^4.4.0\",\n        \"encodeurl\": \"^2.0.0\",\n        \"escape-html\": \"^1.0.3\",\n        \"on-finished\": \"^2.4.1\",\n        \"parseurl\": \"^1.3.3\",\n        \"statuses\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 18.0.0\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/follow-redirects\": {\n      \"version\": \"1.16.0\",\n      \"resolved\": \"https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz\",\n      \"integrity\": \"sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==\",\n      \"funding\": [\n        {\n          \"type\": \"individual\",\n          \"url\": \"https://github.com/sponsors/RubenVerborgh\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=4.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"debug\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/form-data\": {\n      \"version\": \"4.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz\",\n      \"integrity\": \"sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"asynckit\": \"^0.4.0\",\n        \"combined-stream\": \"^1.0.8\",\n        \"es-set-tostringtag\": \"^2.1.0\",\n        \"hasown\": \"^2.0.4\",\n        \"mime-types\": \"^2.1.35\"\n      },\n      \"engines\": {\n        \"node\": \">= 6\"\n      }\n    },\n    \"node_modules/forwarded\": {\n      \"version\": \"0.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz\",\n      \"integrity\": \"sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/fresh\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz\",\n      \"integrity\": \"sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/function-bind\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz\",\n      \"integrity\": \"sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==\",\n      \"license\": \"MIT\",\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/get-intrinsic\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz\",\n      \"integrity\": \"sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"es-define-property\": \"^1.0.1\",\n        \"es-errors\": \"^1.3.0\",\n        \"es-object-atoms\": \"^1.1.1\",\n        \"function-bind\": \"^1.1.2\",\n        \"get-proto\": \"^1.0.1\",\n        \"gopd\": \"^1.2.0\",\n        \"has-symbols\": \"^1.1.0\",\n        \"hasown\": \"^2.0.2\",\n        \"math-intrinsics\": \"^1.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/get-proto\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz\",\n      \"integrity\": \"sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dunder-proto\": \"^1.0.1\",\n        \"es-object-atoms\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/gopd\": {\n      \"version\": \"1.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz\",\n      \"integrity\": \"sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/has-symbols\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz\",\n      \"integrity\": \"sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/has-tostringtag\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz\",\n      \"integrity\": \"sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"has-symbols\": \"^1.0.3\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/hasown\": {\n      \"version\": \"2.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz\",\n      \"integrity\": \"sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/hono\": {\n      \"version\": \"4.13.8\",\n      \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.13.8.tgz\",\n      \"integrity\": \"sha512-/Gng7NfoykZl2pjukW5Z6+8Yxm3BPRf86GTbQnt0SbySkvax4fyL4H3HhY1cCpBGmiW9XDRFzRV+CXK2W8QudQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=16.9.0\"\n      }\n    },\n    \"node_modules/http-errors\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz\",\n      \"integrity\": \"sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"depd\": \"~2.0.0\",\n        \"inherits\": \"~2.0.4\",\n        \"setprototypeof\": \"~1.2.0\",\n        \"statuses\": \"~2.0.2\",\n        \"toidentifier\": \"~1.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/https-proxy-agent\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz\",\n      \"integrity\": \"sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"agent-base\": \"6\",\n        \"debug\": \"4\"\n      },\n      \"engines\": {\n        \"node\": \">= 6\"\n      }\n    },\n    \"node_modules/iconv-lite\": {\n      \"version\": \"0.7.3\",\n      \"resolved\": \"https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz\",\n      \"integrity\": \"sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"safer-buffer\": \">= 2.1.2 < 3.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.10.0\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/inherits\": {\n      \"version\": \"2.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz\",\n      \"integrity\": \"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==\",\n      \"license\": \"ISC\"\n    },\n    \"node_modules/ip-address\": {\n      \"version\": \"10.7.2\",\n      \"resolved\": \"https://registry.npmjs.org/ip-address/-/ip-address-10.7.2.tgz\",\n      \"integrity\": \"sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 12\"\n      }\n    },\n    \"node_modules/ipaddr.js\": {\n      \"version\": \"1.9.1\",\n      \"resolved\": \"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz\",\n      \"integrity\": \"sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.10\"\n      }\n    },\n    \"node_modules/is-promise\": {\n      \"version\": \"4.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz\",\n      \"integrity\": \"sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/isexe\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz\",\n      \"integrity\": \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\n      \"license\": \"ISC\"\n    },\n    \"node_modules/jose\": {\n      \"version\": \"6.2.12\",\n      \"resolved\": \"https://registry.npmjs.org/jose/-/jose-6.2.12.tgz\",\n      \"integrity\": \"sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==\",\n      \"license\": \"MIT\",\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/panva\"\n      }\n    },\n    \"node_modules/json-schema-traverse\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz\",\n      \"integrity\": \"sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/json-schema-typed\": {\n      \"version\": \"8.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz\",\n      \"integrity\": \"sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==\",\n      \"license\": \"BSD-2-Clause\"\n    },\n    \"node_modules/math-intrinsics\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz\",\n      \"integrity\": \"sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/media-typer\": {\n      \"version\": \"1.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz\",\n      \"integrity\": \"sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/merge-descriptors\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz\",\n      \"integrity\": \"sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/mime-db\": {\n      \"version\": \"1.52.0\",\n      \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz\",\n      \"integrity\": \"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/mime-types\": {\n      \"version\": \"2.1.35\",\n      \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz\",\n      \"integrity\": \"sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-db\": \"1.52.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/negotiator\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz\",\n      \"integrity\": \"sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"content-type\": \"^2.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/negotiator/node_modules/content-type\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n      \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/object-assign\": {\n      \"version\": \"4.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz\",\n      \"integrity\": \"sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.10.0\"\n      }\n    },\n    \"node_modules/object-inspect\": {\n      \"version\": \"1.13.4\",\n      \"resolved\": \"https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz\",\n      \"integrity\": \"sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/on-finished\": {\n      \"version\": \"2.4.1\",\n      \"resolved\": \"https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz\",\n      \"integrity\": \"sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ee-first\": \"1.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/once\": {\n      \"version\": \"1.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/once/-/once-1.4.0.tgz\",\n      \"integrity\": \"sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"wrapp\n\nFile v2.0.0:package.json\n\n{\n  \"name\": \"ai-subtitle-remover\",\n  \"version\": \"2.0.0\",\n  \"description\": \"Remove video subtitles, short-video and image watermarks with the 550W Open API\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"550w-skill\": \"dist/550w-skill.cjs\",\n    \"550w-mcp\": \"dist/550w-mcp.cjs\"\n  },\n  \"types\": \"dist/index.d.ts\",\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"test\": \"npm run build --silent && node --test test/*.test.js\",\n    \"package\": \"bash build.sh all\",\n    \"package:cn\": \"bash build.sh cn\",\n    \"package:global\": \"bash build.sh global\"\n  },\n  \"files\": [\n    \"dist/\",\n    \"references/\",\n    \"skill.json\",\n    \"SKILL.md\"\n  ],\n  \"dependencies\": {\n    \"@modelcontextprotocol/sdk\": \"^1.30.0\",\n    \"axios\": \"^1.19.0\",\n    \"form-data\": \"^4.0.6\",\n    \"zod\": \"^4.6.5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.14.0\",\n    \"esbuild\": \"^0.28.2\",\n    \"typescript\": \"^5.4.5\"\n  }\n}\n\nFile v2.0.0:skill.json\n\n{\n  \"name\": \"ai-subtitle-remover\",\n  \"version\": \"2.0.0\",\n  \"displayName\": \"550W AI Subtitle & Watermark Remover\",\n  \"displayNameEn\": \"550W AI Subtitle & Watermark Remover\",\n  \"description\": \"Remove hardcoded video subtitles, watermarks from TikTok and other supported short-video share links, and image watermarks or unwanted text; check tasks and credits. Copy a video share link in the app to use it.\",\n  \"descriptionEn\": \"Remove hardcoded video subtitles, watermarks from TikTok and other supported short-video share links, and image watermarks or unwanted text; check tasks and credits. Copy a video share link in the app to use it.\",\n  \"platforms\": [\n    \"ClawHub\",\n    \"Agent Skills\"\n  ],\n  \"agents\": [\n    \"WorkBuddy\",\n    \"OpenClaw\",\n    \"Hermes\"\n  ],\n  \"actions\": [\n    \"configureCredentials\",\n    \"uploadVideo\",\n    \"submitTask\",\n    \"taskDetail\",\n    \"taskList\",\n    \"deleteTask\",\n    \"queryCredits\",\n    \"removeVideoWatermark\",\n    \"removeImageWatermark\",\n    \"imageWatermarkTaskDetail\",\n    \"workflow\"\n  ],\n  \"credentials\": {\n    \"required\": [\n      \"userNo\",\n      \"apiKey\"\n    ],\n    \"applyUrl\": \"https://eraser.550wai.com/api/\",\n    \"applyUrlEn\": \"https://eraser.550wai.com/api/\"\n  },\n  \"distribution\": {\n    \"region\": \"global\",\n    \"locale\": \"en\",\n    \"market\": \"ClawHub and all non-domestic Agent Skills stores\",\n    \"credentialUrl\": \"https://eraser.550wai.com/api/\"\n  }\n}\n\nFile v2.0.0:token-schema.json\n\n{\n  \"title\": \"Configure 550W Open API\",\n  \"title_en\": \"Configure 550W Open API\",\n  \"description\": \"Enter your user ID and API key. Credentials stay in your local WorkBuddy environment; selected media or public URLs are sent to the 550W Open API for processing. Privacy: https://eraser.550wai.com/privacy/ Terms: https://eraser.550wai.com/terms/\",\n  \"description_en\": \"Enter your user ID and API key. Credentials stay in your local WorkBuddy environment; selected media or public URLs are sent to the 550W Open API for processing. Privacy: https://eraser.550wai.com/privacy/ Terms: https://eraser.550wai.com/terms/\",\n  \"docUrl\": \"https://eraser.550wai.com/api/\",\n  \"docUrl_en\": \"https://eraser.550wai.com/api/\",\n  \"docLabel\": \"Get a user ID and API key\",\n  \"docLabel_en\": \"Get a user ID and API key\",\n  \"fields\": [\n    {\n      \"key\": \"SUBTITLE_REMOVER_USER_NO\",\n      \"label\": \"User ID\",\n      \"label_en\": \"User ID\",\n      \"type\": \"text\",\n      \"required\": true,\n      \"placeholder\": \"Find your user ID on the API page\",\n      \"placeholder_en\": \"Find your user ID on the API page\",\n      \"description\": \"Must belong to the same 550W account as the API key. Get it at https://eraser.550wai.com/api/.\",\n      \"description_en\": \"Must belong to the same 550W account as the API key. Get it at https://eraser.550wai.com/api/.\"\n    },\n    {\n      \"key\": \"SUBTITLE_REMOVER_API_KEY\",\n      \"label\": \"API Key\",\n      \"label_en\": \"API Key\",\n      \"type\": \"password\",\n      \"required\": true,\n      \"placeholder\": \"sk-550w-…\",\n      \"placeholder_en\": \"sk-550w-…\",\n      \"description\": \"Create or rotate it at https://eraser.550wai.com/api/.\",\n      \"description_en\": \"Create or rotate it at https://eraser.550wai.com/api/.\"\n    }\n  ],\n  \"distributionRegion\": \"global\"\n}\n\nArchive v1.3.7: 61 files, 549926 bytes\n\nFiles: connector-meta.json (981b), dist/550w-mcp.cjs (2364058b), dist/550w-skill.cjs (575215b), dist/actions/delete-task.d.ts (193b), dist/actions/delete-task.js (1202b), dist/actions/image-watermark-task-detail.d.ts (207b), dist/actions/image-watermark-task-detail.js (1197b), dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1242b), dist/actions/remove-image-watermark.d.ts (203b), dist/actions/remove-image-watermark.js (1399b), dist/actions/remove-video-watermark.d.ts (203b), dist/actions/remove-video-watermark.js (1325b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (2652b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (2188b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (1565b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1210b), dist/api-client.d.ts (582b), dist/api-client.js (3179b), dist/cli.d.ts (31b), dist/cli.js (1768b), dist/credential-manager.d.ts (399b), dist/credential-manager.js (5597b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (4375b), dist/error-handler.d.ts (363b), dist/error-handler.js (3568b), dist/i18n.d.ts (601b), dist/i18n.js (2870b), dist/index.d.ts (117b), dist/index.js (462b), dist/local-media.d.ts (232b), dist/local-media.js (2556b), dist/mcp-server.d.ts (31b), dist/mcp-server.js (8207b), dist/types.d.ts (5499b), dist/types.js (2802b), dist/validator.d.ts (574b), dist/validator.js (13160b), dist/video-probe.d.ts (479b), dist/video-probe.js (3806b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (5570b), icon.svg (262b), mcp.json (344b), package-lock.json (66354b), package.json (742b), references/agent-compatibility.md (3606b), references/api-contract.md (6784b), skill-card.md (2291b), skill.json (882b), SKILL.md (6549b), skills/ai-subtitle-remover/references/agent-compatibility.md (3606b), skills/ai-subtitle-remover/references/api-contract.md (6784b), skills/ai-subtitle-remover/SKILL.md (3657b), token-schema.json (1597b), _meta.json (143b)\n\nFile v1.3.7:SKILL.md\n\n---\nname: ai-subtitle-remover\ndescription: \"使用 550W Open API 处理视频去字幕、TikTok 等短视频分享链接去水印、图片去水印、任务与积分查询；Use globally for video subtitle removal, TikTok and supported short-video watermark removal, image watermark removal, task status, and credit balance.\"\nmetadata:\n  openclaw:\n    primaryEnv: SUBTITLE_REMOVER_API_KEY\n    requires:\n      bins:\n        - node\n    envVars:\n      - name: SUBTITLE_REMOVER_API_KEY\n        required: false\n        description: API key used only for authenticated requests to the 550W Open API.\n      - name: SUBTITLE_REMOVER_USER_NO\n        required: false\n        description: User ID belonging to the same 550W account as the API key.\n      - name: SUBTITLE_REMOVER_REGION\n        required: false\n        description: Optional domestic or global credential-management region.\n      - name: FFPROBE_PATH\n        required: false\n        description: Optional ffprobe executable path used only to inspect public direct video URLs.\n---\n\n# 550W 视频与图片处理\n\nRoute the user's intent to the highest-level matching tool. Do not ask users for API fields, dimensions, duration, or erase coordinates when the tool can derive them.\n\n## Language and credentials\n\nReply in the user's language. If credentials are missing:\n\n- For Chinese conversations using the domestic service, direct the user to the API management page at <https://qzm.550wai.cn/api-keys> to create or rotate credentials and review usage.\n- For all other languages, direct the user to the matching localized Eraser API page (`https://eraser.550wai.com/{locale}/api/`), falling back to <https://eraser.550wai.com/api/> for English or unsupported locales.\n- Region takes precedence over language: use `region: domestic` for the qzm service and `region: global` for Eraser, including overseas users who speak Chinese. If region is unknown, preserve backward compatibility by inferring it from the conversation language.\n- In WorkBuddy, ask the user to open this connector's settings and fill in both fields. Do not ask them to paste a secret into a public conversation.\n- Outside WorkBuddy, credentials may be provided through `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`, or configured with the `configureCredentials` action.\n- Never repeat a complete API Key in replies, logs, tool arguments shown to the user, or error messages.\n- Before the first media operation, make clear that selected files or public media URLs are sent to the 550W Open API for processing. Use only a local file the user explicitly selected or named; never choose a file by exploring the filesystem. Global users can review <https://eraser.550wai.com/privacy/> and <https://eraser.550wai.com/terms/>; use their localized paths when available.\n\n## Tool selection\n\n- Local video or direct video-file URL + subtitle removal: `remove_video_subtitles` (fallback action: `workflow`). `removeAudio` is only an optional parameter of this workflow; do not present it as a separate capability.\n- TikTok or another supported short-video share link/text + watermark removal: `remove_video_watermark` (fallback: `removeVideoWatermark`). This capability is available globally. Pass a stable `operationId` when available; do not download the shared video first.\n- Local image + watermark/text removal: `remove_image_watermark` (fallback: `removeImageWatermark`). Process multiple images serially.\n- Subtitle task progress/history: `get_subtitle_task` / `list_subtitle_tasks`.\n- Delete one subtitle task and schedule its media cleanup: `delete_subtitle_task` (fallback: `deleteTask`). Explain that charged credits are not refunded and get confirmation immediately before deletion.\n- Asynchronous image task progress: `get_image_task`.\n- Credit balance: `query_credits`.\n- If either the input type or intended operation is unclear, ask one necessary question before any billed submission.\n\nWhen the host has no registered tools, send one JSON request on standard input:\n\n```bash\nnode {baseDir}/dist/550w-skill.cjs\n```\n\nUse an absolute `params.filePath` for a local file. Send one request at a time and parse the single JSON response.\n\n## Processing rules\n\n- Subtitle removal uses full-frame erasing. Never ask for or send `x1`, `y1`, `x2`, or `y2`; the implementation forces all coordinates to zero.\n- A local video upload supplies trusted metadata. A public remote direct URL is preflighted with `ffprobe` unless the caller already supplies the complete actual `width`, `height`, and `duration`; local, private-network, credential-bearing, and non-HTTP(S) URLs are rejected. If probing fails, stop instead of inventing metadata or submitting.\n- When acting for a child or tenant user, pass the same `subUserId` on submission, status lookup, list filtering, and deletion.\n- The subtitle workflow polls for up to 10 minutes. On timeout or repeated query failure, return the `taskId` and tell the user to check it later; never resubmit automatically.\n- Image removal is synchronous by default. If it returns `processing`, preserve the task ID and query it. Only expose `resultUrl` for `success`; show `failReason` for `failed`; ask for a new run when `expired`.\n- Return the service result to the user in every case; never return `NO_REPLY`.\n\n## Billing and retries\n\n- Subtitle removal is billed by video duration and resolution. On failure, report the service's `refundStatus`; never infer a refund from the status or message.\n- Video watermark removal costs 1 credit on success. Image watermark removal costs 10 credits per successful image.\n- Before a batch, state the billing unit. Do not expand the batch beyond the files the user explicitly selected.\n- A timeout does not prove that submission failed. Query the existing task first. Never blindly retry a billed operation; duplicate submissions may be charged independently.\n- Pass a stable `idempotencyKey` for subtitle-removal submissions when possible and reuse it only with identical inputs. Older clients may omit both `locale` and idempotency fields; keep those calls compatible.\n\nFor field limits, statuses, billing formulas, and error codes, read the bilingual [API contract](references/api-contract.md). The domestic API management page and localized Eraser API pages are region-specific credential/documentation surfaces for the same shared Skill capabilities.\n\nFor installation in Codex, Claude Desktop, Cursor, VS Code/Copilot, Windsurf, OpenClaw, or another MCP/Agent Skills client, read [agent compatibility](references/agent-compatibility.md).\n\nFile v1.3.7:skills/ai-subtitle-remover/SKILL.md\n\n---\nname: ai-subtitle-remover\ndisplay_name: 550W视频去字幕\ndisplay_name_en: 550W AI Subtitle Remover\ndescription: 使用 550W Open API 处理视频去字幕、视频与图片去水印，并查询任务或积分。\ndescription_zh: 通过自然语言完成视频去字幕、视频与图片去水印，并查询任务状态和积分。\ndescription_en: Remove video subtitles, TikTok and supported short-video watermarks, and image watermarks, then check task status and credits.\nversion: 1.3.7\nauthor: 550W\n---\n\n# 550W 视频与图片处理\n\nReply in the user's language and select the highest-level matching MCP tool. Do not ask for fields the tool can derive.\n\n## Credentials\n\nIf the connector is not configured, ask the user to open its settings and fill in both User ID and API Key. For the Chinese domestic service, use the API management page <https://qzm.550wai.cn/api-keys>. For global users, use the matching localized Eraser API page—including `/zh-Hans/api/` or `/zh-Hant/api/` for overseas Chinese users—and fall back to <https://eraser.550wai.com/api/> for English or unsupported locales. These are different regional credential surfaces for the same Skill. Never repeat a complete API Key. Before the first media operation, explain that the selected file or public URL is sent to the 550W Open API; global privacy and terms are available at <https://eraser.550wai.com/privacy/> and <https://eraser.550wai.com/terms/> with localized variants.\n\nWhen known, pass `region: domestic` for qzm users and `region: global` for Eraser users. Region takes precedence over language, so an overseas Chinese-speaking user still receives the Eraser credential page. Omit `region` only when it is genuinely unknown.\n\n## Routing\n\n- Video file or direct video URL + subtitle removal: `remove_video_subtitles`. Treat `removeAudio` only as an optional parameter when explicitly requested, not as a separate capability.\n- TikTok or another supported short-video share URL/text: `remove_video_watermark`. This is available globally. Supply a stable `operationId` when available; do not download the shared video first.\n- Local image + watermark/text removal: `remove_image_watermark`. Process multiple images serially.\n- Status/history: `get_subtitle_task`, `get_image_task`, or `list_subtitle_tasks`.\n- Delete one subtitle task and schedule its media cleanup: `delete_subtitle_task`. Explain that deletion does not refund charged credits and require confirmation immediately before calling it.\n- Balance: `query_credits`.\n- If the input or intent is ambiguous, ask one necessary question before any billed operation.\n\n## Safety and billing\n\n- Subtitle removal uses full-frame erasing and is billed by duration and resolution. Do not request coordinates.\n- Video watermark removal costs 1 credit on success; image watermark removal costs 10 credits per successful image. State the unit before a batch.\n- A timeout does not prove submission failed. Query the task first and never blindly retry a billed operation.\n- Supply a stable `idempotencyKey` for subtitle-removal submissions when possible and reuse it only with identical inputs.\n- For child or tenant users, keep the same `subUserId` across submission, status, list, and deletion calls. Report `failCode` and `refundStatus` on failure instead of assuming a refund.\n- Return successes, processing states, task IDs, and actionable failures to the user; never return `NO_REPLY`.\n\nRead @references/api-contract.md only when field limits, statuses, billing formulas, or error codes are needed.\nRead @references/agent-compatibility.md only when installing outside WorkBuddy or diagnosing another MCP client.\n\nFile v1.3.7:_meta.json\n\n{\n  \"ownerId\": \"kn7czsjs5ywdr4de3e947n93r586qqsa\",\n  \"slug\": \"550w-ai-subtitle-remover\",\n  \"version\": \"1.3.7\",\n  \"publishedAt\": 1790126649364\n}\n\nFile v1.3.7:references/agent-compatibility.md\n\n# Agent compatibility / Agent 兼容性\n\nRead this reference when installing the package outside WorkBuddy or diagnosing an MCP client.\n\n仅在 WorkBuddy 之外安装，或排查 MCP 客户端兼容性时读取。\n\n## Runtime contract / 运行契约\n\n- Runtime: Node.js 18 or newer / Node.js 18 或更高版本。\n- Transport: local MCP over stdio using newline-delimited JSON-RPC. The server writes protocol messages only to stdout / 使用 stdio 的本地 MCP，协议为按行分隔的 JSON-RPC；服务端仅向 stdout 写协议消息。\n- Entrypoint: `dist/550w-mcp.cjs`; set the package root as `cwd` or use an absolute entrypoint path / 入口是 `dist/550w-mcp.cjs`；将包根目录设为 `cwd`，或使用入口绝对路径。\n- Credentials: `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`. Optional `SUBTITLE_REMOVER_REGION` accepts `domestic` or `global` / 凭据使用上述两个环境变量；可选地区变量支持 `domestic` 或 `global`。\n- Network access: allow HTTPS access to `www.550wai.cn`; local-file tools also need read access to the selected media / 需要允许访问 `www.550wai.cn`；本地文件工具还需获得所选媒体的读取权限。\n\n## Client families / 客户端类型\n\n- WorkBuddy: use the bundled `mcp.json`, `token-schema.json`, and connector metadata. Its token form maps credentials into the MCP process environment / 使用包内 WorkBuddy 配置，由凭据表单注入环境变量。\n- Claude Desktop, Cursor, Windsurf, and clients using the common `mcpServers` shape: launch `node` with the absolute `dist/550w-mcp.cjs` path and pass credentials through `env` / 使用常见 `mcpServers` 结构的客户端，以 `node` 启动绝对入口路径并通过 `env` 传入凭据。\n- Codex desktop, CLI, and IDE: configure a local stdio server with command, args, cwd, and forwarded environment variables / 使用本地 stdio 配置，提供 command、args、cwd 与环境变量。\n- VS Code and GitHub Copilot: use the `servers` configuration shape rather than `mcpServers`; prefer secure input variables for credentials / 使用 `servers` 结构，并优先使用安全输入变量保存凭据。\n- OpenClaw and other Agent Skills clients: discover the packaged `skills/ai-subtitle-remover/SKILL.md`; the executable MCP server remains the source of callable tools / 通过包内标准 Skill 目录发现说明，实际可调用能力仍由 MCP 服务提供。\n\n## Portability boundaries / 可移植性边界\n\n- `locale` and `region` are optional so older and generic MCP clients remain compatible. Pass them when available for accurate language and credential guidance / 两者均为可选，兼容旧客户端；可获取时应传入以提高引导准确性。\n- Tool schemas are JSON-Schema compatible and expose MCP safety annotations. Read-only tools are marked read-only; task deletion is marked destructive / 工具 schema 兼容 JSON Schema，并提供 MCP 安全标记；查询类工具为只读，删除任务标记为破坏性操作。\n- This package is a local stdio server. Browser-only or SaaS agents that accept only remote Streamable HTTP MCP cannot connect to the ZIP directly; deploy a separately secured HTTP MCP gateway instead / 本包是本地 stdio 服务。仅接受远程 Streamable HTTP MCP 的浏览器或 SaaS Agent 不能直接连接 ZIP，需要另行部署带鉴权的 HTTP MCP 网关。\n- Do not translate one client's configuration file directly into another without changing its top-level schema (`mcpServers` versus `servers` or TOML) / 不要在未调整顶层结构时直接复制不同客户端的配置。\n\nFile v1.3.7:references/api-contract.md\n\n# 550W Open API contract / 接口契约\n\nRead this reference only when validating inputs, explaining billing, or handling provider responses. The domestic credential-management page is `https://qzm.550wai.cn/api-keys`. The global documentation and credential page is `https://eraser.550wai.com/api/`; supported locale routes use `https://eraser.550wai.com/{locale}/api/`. These regional surfaces configure the same shared Skill capabilities.\n\n仅在校验输入、解释计费或处理服务响应时读取。国内凭据管理页是 `https://qzm.550wai.cn/api-keys`；全球文档与凭据页是 `https://eraser.550wai.com/api/`，支持的语言使用 `https://eraser.550wai.com/{locale}/api/`。这些地区入口配置的是同一个全球共享 Skill 能力。\n\n## Actions / 能力\n\n| Action | Endpoint | Scope and input / 范围与输入 |\n|---|---|---|\n| `uploadVideo` | `/open/uploadVideo` | MP4/MOV file / MP4、MOV 文件 |\n| `submitTask` | `/open/submitTask` | Direct video URL plus actual width, height, and duration; optional `subUserId`; the skill submits full-frame coordinates / 视频直链及真实宽高、时长；可选 `subUserId`；Skill 固定提交全屏坐标 |\n| `taskDetail` | `/open/taskDetail` | Subtitle-removal `taskId`; optional matching `subUserId` / 去字幕任务编号；可选且需匹配的 `subUserId` |\n| `taskList` | `/open/taskList` | `page`, `size`; optional `subUserId` scope / 分页参数；可选 `subUserId` 范围 |\n| `deleteTask` | `/open/deleteTask` | Subtitle task `taskId`; optional `subUserId`. Destructive and does not refund credits / 去字幕任务编号；可选 `subUserId`。删除不可撤销且不退积分 |\n| `queryCredits` | `/open/queryCredits` | No business parameters / 无业务参数 |\n| `removeImageWatermark` | `/open/removeImageWatermark` | One image file; `sync` defaults to `true` / 单张图片；`sync` 默认 `true` |\n| `imageWatermarkTaskDetail` | `/open/imageWatermarkTaskDetail` | Image task `taskId` / 图片任务编号 |\n| `removeVideoWatermark` | `/open/removeVideoWatermark` | Global: TikTok or another supported short-video share URL or copied share text; optional `operationId` / 全球可用：TikTok 或其他受支持短视频分享链接或分享文本；可选 `operationId` |\n\nAll remote calls authenticate with `userNo` and `apiKey`. Capabilities are shared globally; region and locale affect the credential/documentation URL and user-facing language, not tool availability.\n\n所有远程请求使用 `userNo` 与 `apiKey` 鉴权。能力全球共享；地区和语言只影响凭据/文档入口及用户文案，不限制工具可用性。\n\n## Input limits / 输入限制\n\n- Video / 视频：MP4 or MOV, at most 1 GB, 1–600 seconds; maximum side at most 1920 and minimum side at most 1080 / MP4 或 MOV，最大 1GB，时长 1–600 秒；最大边不超过 1920，最小边不超过 1080。\n- Image / 图片：JPG, PNG, BMP, WebP, AVIF, TIFF, or SVG; at most 50 MB / 最大 50MB。\n- URL：HTTP or HTTPS only, at most 2048 characters / 仅 HTTP 或 HTTPS，最长 2048 字符。\n- Video-link watermark removal accepts TikTok and other provider-supported public share links. Copied share text may be supplied when it contains one HTTP(S) URL. `operationId` is 8–64 characters using letters, numbers, `.`, `_`, `:`, or `-`; reuse it only for the same URL / 视频链接去水印支持 TikTok 及服务端支持的其他公开分享链接。分享文本中包含一个 HTTP(S) URL 时可直接传入。`operationId` 为 8–64 位，仅允许字母、数字、点、下划线、冒号和连字符；同一标识只能用于同一链接。\n- Subtitle submission accepts an optional `idempotencyKey` of 8–128 characters using the same character set. Reusing the key with identical inputs returns the original task; different inputs are rejected / 去字幕提交支持可选的 `idempotencyKey`，长度 8–128 位且字符集同上。同一键与相同参数会返回原任务，与不同参数复用会被拒绝。\n- `removeAudio` is an optional subtitle-removal parameter, defaults to `false`, and must be enabled only when the user explicitly requests removal of the audio track. It does not re-encode the video stream / `removeAudio` 是去字幕的次要可选参数，默认 `false`；仅在用户明确要求移除音轨时启用，且不重新编码视频流。\n- When image `sync=false`, query the returned task ID later / 图片 `sync=false` 时按返回的任务编号查询。\n\n## Status / 状态\n\n- Subtitle removal / 去字幕：`waiting`, `processing`, `success`, `failed`.\n- Image watermark removal / 图片去水印：`processing`, `success`, `failed`, `expired`.\n\n## Billing / 计费\n\n- Subtitle removal / 去字幕：up to 720p, `ceil(duration × 1.3)`; above 720p, `ceil(duration × 1.6)` / 不高于 720P 按 `ceil(duration × 1.3)`，高于 720P 按 `ceil(duration × 1.6)`。\n- Global video-link watermark removal / 全球短视频链接去水印：1 credit per successful result; failures are not charged / 成功一次 1 积分，失败不扣积分。\n- Image watermark removal / 图片去水印：10 credits per successful image / 成功一张 10 积分。\n- Capabilities share the account credit balance; the API response is authoritative / 各能力共用账户积分余额，以接口响应为准。\n\n## Errors and retry safety / 错误与重试安全\n\n- `200`: success / 成功。\n- `-100`: authentication or insufficient credits; follow `message` / 鉴权或额度不足，以 `message` 为准。\n- `-200`: invalid parameter or file / 参数或文件不合法。\n- `-300`: business rejection, missing task, or service busy / 业务拒绝、任务不存在或服务繁忙。\n- `-401` / `-402`: temporarily or permanently restricted account; stop submitting / 账号被临时或永久限制，停止提交。\n- `-500`: service error. If submission may have succeeded, query task state before retrying / 服务异常；无法确认是否已提交时先查询任务，不能直接重试。\n- `-600`: unsupported video format; ask the user to export a compatible MP4 or MOV / 视频格式不支持，提示用户重新导出兼容格式。\n\n## Data handling / 数据处理\n\nSelected local files and public media URLs are sent to the 550W Open API for processing. Credentials remain in local configuration. For global users, surface the localized privacy and terms pages when relevant: `https://eraser.550wai.com/{locale}/privacy/` and `https://eraser.550wai.com/{locale}/terms/`, with the locale segment omitted for English.\n\n选中的本地文件和公开媒体 URL 会发送到 550W Open API 处理，凭据保存在本地配置中。面向全球用户时，按需提供对应语言的隐私政策和服务条款；英语页面省略语言路径段。\n\nFile v1.3.7:skills/ai-subtitle-remover/references/agent-compatibility.md\n\n# Agent compatibility / Agent 兼容性\n\nRead this reference when installing the package outside WorkBuddy or diagnosing an MCP client.\n\n仅在 WorkBuddy 之外安装，或排查 MCP 客户端兼容性时读取。\n\n## Runtime contract / 运行契约\n\n- Runtime: Node.js 18 or newer / Node.js 18 或更高版本。\n- Transport: local MCP over stdio using newline-delimited JSON-RPC. The server writes protocol messages only to stdout / 使用 stdio 的本地 MCP，协议为按行分隔的 JSON-RPC；服务端仅向 stdout 写协议消息。\n- Entrypoint: `dist/550w-mcp.cjs`; set the package root as `cwd` or use an absolute entrypoint path / 入口是 `dist/550w-mcp.cjs`；将包根目录设为 `cwd`，或使用入口绝对路径。\n- Credentials: `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`. Optional `SUBTITLE_REMOVER_REGION` accepts `domestic` or `global` / 凭据使用上述两个环境变量；可选地区变量支持 `domestic` 或 `global`。\n- Network access: allow HTTPS access to `www.550wai.cn`; local-file tools also need read access to the selected media / 需要允许访问 `www.550wai.cn`；本地文件工具还需获得所选媒体的读取权限。\n\n## Client families / 客户端类型\n\n- WorkBuddy: use the bundled `mcp.json`, `token-schema.json`, and connector metadata. Its token form maps credentials into the MCP process environment / 使用包内 WorkBuddy 配置，由凭据表单注入环境变量。\n- Claude Desktop, Cursor, Windsurf, and clients using the common `mcpServers` shape: launch `node` with the absolute `dist/550w-mcp.cjs` path and pass credentials through `env` / 使用常见 `mcpServers` 结构的客户端，以 `node` 启动绝对入口路径并通过 `env` 传入凭据。\n- Codex desktop, CLI, and IDE: configure a local stdio server with command, args, cwd, and forwarded environment variables / 使用本地 stdio 配置，提供 command、args、cwd 与环境变量。\n- VS Code and GitHub Copilot: use the `servers` configuration shape rather than `mcpServers`; prefer secure input variables for credentials / 使用 `servers` 结构，并优先使用安全输入变量保存凭据。\n- OpenClaw and other Agent Skills clients: discover the packaged `skills/ai-subtitle-remover/SKILL.md`; the executable MCP server remains the source of callable tools / 通过包内标准 Skill 目录发现说明，实际可调用能力仍由 MCP 服务提供。\n\n## Portability boundaries / 可移植性边界\n\n- `locale` and `region` are optional so older and generic MCP clients remain compatible. Pass them when available for accurate language and credential guidance / 两者均为可选，兼容旧客户端；可获取时应传入以提高引导准确性。\n- Tool schemas are JSON-Schema compatible and expose MCP safety annotations. Read-only tools are marked read-only; task deletion is marked destructive / 工具 schema 兼容 JSON Schema，并提供 MCP 安全标记；查询类工具为只读，删除任务标记为破坏性操作。\n- This package is a local stdio server. Browser-only or SaaS agents that accept only remote Streamable HTTP MCP cannot connect to the ZIP directly; deploy a separately secured HTTP MCP gateway instead / 本包是本地 stdio 服务。仅接受远程 Streamable HTTP MCP 的浏览器或 SaaS Agent 不能直接连接 ZIP，需要另行部署带鉴权的 HTTP MCP 网关。\n- Do not translate one client's configuration file directly into another without changing its top-level schema (`mcpServers` versus `servers` or TOML) / 不要在未调整顶层结构时直接复制不同客户端的配置。\n\nFile v1.3.7:skills/ai-subtitle-remover/references/api-contract.md\n\n# 550W Open API contract / 接口契约\n\nRead this reference only when validating inputs, explaining billing, or handling provider responses. The domestic credential-management page is `https://qzm.550wai.cn/api-keys`. The global documentation and credential page is `https://eraser.550wai.com/api/`; supported locale routes use `https://eraser.550wai.com/{locale}/api/`. These regional surfaces configure the same shared Skill capabilities.\n\n仅在校验输入、解释计费或处理服务响应时读取。国内凭据管理页是 `https://qzm.550wai.cn/api-keys`；全球文档与凭据页是 `https://eraser.550wai.com/api/`，支持的语言使用 `https://eraser.550wai.com/{locale}/api/`。这些地区入口配置的是同一个全球共享 Skill 能力。\n\n## Actions / 能力\n\n| Action | Endpoint | Scope and input / 范围与输入 |\n|---|---|---|\n| `uploadVideo` | `/open/uploadVideo` | MP4/MOV file / MP4、MOV 文件 |\n| `submitTask` | `/open/submitTask` | Direct video URL plus actual width, height, and duration; optional `subUserId`; the skill submits full-frame coordinates / 视频直链及真实宽高、时长；可选 `subUserId`；Skill 固定提交全屏坐标 |\n| `taskDetail` | `/open/taskDetail` | Subtitle-removal `taskId`; optional matching `subUserId` / 去字幕任务编号；可选且需匹配的 `subUserId` |\n| `taskList` | `/open/taskList` | `page`, `size`; optional `subUserId` scope / 分页参数；可选 `subUserId` 范围 |\n| `deleteTask` | `/open/deleteTask` | Subtitle task `taskId`; optional `subUserId`. Destructive and does not refund credits / 去字幕任务编号；可选 `subUserId`。删除不可撤销且不退积分 |\n| `queryCredits` | `/open/queryCredits` | No business parameters / 无业务参数 |\n| `removeImageWatermark` | `/open/removeImageWatermark` | One image file; `sync` defaults to `true` / 单张图片；`sync` 默认 `true` |\n| `imageWatermarkTaskDetail` | `/open/imageWatermarkTaskDetail` | Image task `taskId` / 图片任务编号 |\n| `removeVideoWatermark` | `/open/removeVideoWatermark` | Global: TikTok or another supported short-video share URL or copied share text; optional `operationId` / 全球可用：TikTok 或其他受支持短视频分享链接或分享文本；可选 `operationId` |\n\nAll remote calls authenticate with `userNo` and `apiKey`. Capabilities are shared globally; region and locale affect the credential/documentation URL and user-facing language, not tool availability.\n\n所有远程请求使用 `userNo` 与 `apiKey` 鉴权。能力全球共享；地区和语言只影响凭据/文档入口及用户文案，不限制工具可用性。\n\n## Input limits / 输入限制\n\n- Video / 视频：MP4 or MOV, at most 1 GB, 1–600 seconds; maximum side at most 1920 and minimum side at most 1080 / MP4 或 MOV，最大 1GB，时长 1–600 秒；最大边不超过 1920，最小边不超过 1080。\n- Image / 图片：JPG, PNG, BMP, WebP, AVIF, TIFF, or SVG; at most 50 MB / 最大 50MB。\n- URL：HTTP or HTTPS only, at most 2048 characters / 仅 HTTP 或 HTTPS，最长 2048 字符。\n- Video-link watermark removal accepts TikTok and other provider-supported public share links. Copied share text may be supplied when it contains one HTTP(S) URL. `operationId` is 8–64 characters using letters, numbers, `.`, `_`, `:`, or `-`; reuse it only for the same URL / 视频链接去水印支持 TikTok 及服务端支持的其他公开分享链接。分享文本中包含一个 HTTP(S) URL 时可直接传入。`operationId` 为 8–64 位，仅允许字母、数字、点、下划线、冒号和连字符；同一标识只能用于同一链接。\n- Subtitle submission accepts an optional `idempotencyKey` of 8–128 characters using the same character set. Reusing the key with identical inputs returns the original task; different inputs are rejected / 去字幕提交支持可选的 `idempotencyKey`，长度 8–128 位且字符集同上。同一键与相同参数会返回原任务，与不同参数复用会被拒绝。\n- `removeAudio` is an optional subtitle-removal parameter, defaults to `false`, and must be enabled only when the user explicitly requests removal of the audio track. It does not re-encode the video stream / `removeAudio` 是去字幕的次要可选参数，默认 `false`；仅在用户明确要求移除音轨时启用，且不重新编码视频流。\n- When image `sync=false`, query the returned task ID later / 图片 `sync=false` 时按返回的任务编号查询。\n\n## Status / 状态\n\n- Subtitle removal / 去字幕：`waiting`, `processing`, `success`, `failed`.\n- Image watermark removal / 图片去水印：`processing`, `success`, `failed`, `expired`.\n\n## Billing / 计费\n\n- Subtitle removal / 去字幕：up to 720p, `ceil(duration × 1.3)`; above 720p, `ceil(duration × 1.6)` / 不高于 720P 按 `ceil(duration × 1.3)`，高于 720P 按 `ceil(duration × 1.6)`。\n- Global video-link watermark removal / 全球短视频链接去水印：1 credit per successful result; failures are not charged / 成功一次 1 积分，失败不扣积分。\n- Image watermark removal / 图片去水印：10 credits per successful image / 成功一张 10 积分。\n- Capabilities share the account credit balance; the API response is authoritative / 各能力共用账户积分余额，以接口响应为准。\n\n## Errors and retry safety / 错误与重试安全\n\n- `200`: success / 成功。\n- `-100`: authentication or insufficient credits; follow `message` / 鉴权或额度不足，以 `message` 为准。\n- `-200`: invalid parameter or file / 参数或文件不合法。\n- `-300`: business rejection, missing task, or service busy / 业务拒绝、任务不存在或服务繁忙。\n- `-401` / `-402`: temporarily or permanently restricted account; stop submitting / 账号被临时或永久限制，停止提交。\n- `-500`: service error. If submission may have succeeded, query task state before retrying / 服务异常；无法确认是否已提交时先查询任务，不能直接重试。\n- `-600`: unsupported video format; ask the user to export a compatible MP4 or MOV / 视频格式不支持，提示用户重新导出兼容格式。\n\n## Data handling / 数据处理\n\nSelected local files and public media URLs are sent to the 550W Open API for processing. Credentials remain in local configuration. For global users, surface the localized privacy and terms pages when relevant: `https://eraser.550wai.com/{locale}/privacy/` and `https://eraser.550wai.com/{locale}/terms/`, with the locale segment omitted for English.\n\n选中的本地文件和公开媒体 URL 会发送到 550W Open API 处理，凭据保存在本地配置中。面向全球用户时，按需提供对应语言的隐私政策和服务条款；英语页面省略语言路径段。\n\nFile v1.3.7:skill-card.md\n\n## Description:\n\nRemove video subtitles, remove watermarks from TikTok and supported short-video links, remove image watermarks or text, and query 550W task status and credits.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[sunshinehu](https://clawhub.ai/user/sunshinehu)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to route natural-language media-processing requests to the 550W Open API for subtitle removal, watermark removal, task management, and credit checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected media files or public media URLs are sent to the 550W Open API, and 550W credentials are stored or forwarded locally.\n\nMitigation: Install only when this data flow is acceptable, use only user-selected files or public URLs, and disclose the upload before the first media operation.\n\nRisk: The destructive task-deletion capability can be invoked by a direct MCP caller with a valid task ID and no extra confirmation token.\n\nMitigation: Use hosts that reliably require approval for destructive tools and require user confirmation immediately before task deletion.\n\n## Reference(s):\n\n- [550W Open API contract](references/api-contract.md)\n- [Agent compatibility](references/agent-compatibility.md)\n- [ClawHub skill page](https://clawhub.ai/sunshinehu/skills/550w-ai-subtitle-remover)\n- [550W domestic API management](https://qzm.550wai.cn/api-keys)\n- [550W global Eraser API](https://eraser.550wai.com/api/)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Text, API calls, Configuration, Shell commands]\n\n**Output Format:** [Markdown text with structured MCP or JSON-RPC tool calls when invoked by an agent host]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May return task IDs, status values, result URLs, credit balances, and failure details from the 550W Open API.]\n\n## Skill Version(s):\n\n1.3.7 (source: server release evidence, skill frontmatter, package.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.3.7:connector-meta.json\n\n{\n  \"name\": \"550W视频去字幕\",\n  \"name_zh\": \"550W视频去字幕\",\n  \"name_en\": \"550W AI Subtitle Remover\",\n  \"description\": \"通过自然语言去除视频字幕、视频或图片水印，并查询任务和积分。\",\n  \"description_zh\": \"通过自然语言去除视频字幕、视频或图片水印，并查询任务和积分。\",\n  \"description_en\": \"Remove video subtitles, TikTok and supported short-video watermarks, and image watermarks, and check tasks and credits.\",\n  \"source\": \"ai-subtitle-remover\",\n  \"type\": \"mcp\",\n  \"version\": \"1.3.7\",\n  \"auth_mode\": \"token\",\n  \"minWorkbuddyVersion\": \"4.24.0\",\n  \"examples_zh\": [\"去掉这个视频里的字幕\", \"帮我解析这个短视频分享链接并去水印\", \"去掉这张图片上的文字水印\", \"查询我的积分余额\"],\n  \"examples_en\": [\"Remove the subtitles from this video\", \"Get the watermark-free video from this TikTok share link\", \"Remove the text watermark from this image\", \"Check my credit balance\"]\n}\n\nFile v1.3.7:mcp.json\n\n{\n  \"mcpServers\": {\n    \"ai-subtitle-remover\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"dist/550w-mcp.cjs\"],\n      \"cwd\": \".\",\n      \"env\": {\n        \"SUBTITLE_REMOVER_USER_NO\": \"${SUBTITLE_REMOVER_USER_NO}\",\n        \"SUBTITLE_REMOVER_API_KEY\": \"${SUBTITLE_REMOVER_API_KEY}\"\n      },\n      \"timeout\": 30000\n    }\n  }\n}\n\nFile v1.3.7:package-lock.json\n\n{\n  \"name\": \"ai-subtitle-remover\",\n  \"version\": \"1.3.7\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"ai-subtitle-remover\",\n      \"version\": \"1.3.7\",\n      \"dependencies\": {\n        \"@modelcontextprotocol/sdk\": \"^1.30.0\",\n        \"axios\": \"^1.19.0\",\n        \"form-data\": \"^4.0.6\",\n        \"zod\": \"^4.6.5\"\n      },\n      \"bin\": {\n        \"550w-mcp\": \"dist/550w-mcp.cjs\",\n        \"550w-skill\": \"dist/550w-skill.cjs\"\n      },\n      \"devDependencies\": {\n        \"@types/node\": \"^20.14.0\",\n        \"esbuild\": \"^0.28.2\",\n        \"typescript\": \"^5.4.5\"\n      }\n    },\n    \"node_modules/@esbuild/aix-ppc64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz\",\n      \"integrity\": \"sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==\",\n      \"cpu\": [\n        \"ppc64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"aix\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-arm\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz\",\n      \"integrity\": \"sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/android-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"android\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/darwin-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/darwin-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/freebsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"freebsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/freebsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"freebsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-arm\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz\",\n      \"integrity\": \"sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==\",\n      \"cpu\": [\n        \"arm\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-ia32\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz\",\n      \"integrity\": \"sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==\",\n      \"cpu\": [\n        \"ia32\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-loong64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz\",\n      \"integrity\": \"sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==\",\n      \"cpu\": [\n        \"loong64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-mips64el\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz\",\n      \"integrity\": \"sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==\",\n      \"cpu\": [\n        \"mips64el\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-ppc64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz\",\n      \"integrity\": \"sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==\",\n      \"cpu\": [\n        \"ppc64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-riscv64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz\",\n      \"integrity\": \"sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==\",\n      \"cpu\": [\n        \"riscv64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-s390x\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz\",\n      \"integrity\": \"sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==\",\n      \"cpu\": [\n        \"s390x\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/linux-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"linux\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/netbsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"netbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/netbsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"netbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openbsd-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openbsd-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openbsd\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/openharmony-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"openharmony\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/sunos-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"sunos\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-arm64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz\",\n      \"integrity\": \"sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==\",\n      \"cpu\": [\n        \"arm64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-ia32\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz\",\n      \"integrity\": \"sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==\",\n      \"cpu\": [\n        \"ia32\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@esbuild/win32-x64\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz\",\n      \"integrity\": \"sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==\",\n      \"cpu\": [\n        \"x64\"\n      ],\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"win32\"\n      ],\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@hono/node-server\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz\",\n      \"integrity\": \"sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=20\"\n      },\n      \"peerDependencies\": {\n        \"hono\": \"^4\"\n      }\n    },\n    \"node_modules/@modelcontextprotocol/sdk\": {\n      \"version\": \"1.30.0\",\n      \"resolved\": \"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz\",\n      \"integrity\": \"sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@hono/node-server\": \"^1.19.9 || ^2.0.5\",\n        \"ajv\": \"^8.17.1\",\n        \"ajv-formats\": \"^3.0.1\",\n        \"content-type\": \"^1.0.5\",\n        \"cors\": \"^2.8.5\",\n        \"cross-spawn\": \"^7.0.5\",\n        \"eventsource\": \"^3.0.2\",\n        \"eventsource-parser\": \"^3.0.0\",\n        \"express\": \"^5.2.1\",\n        \"express-rate-limit\": \"^8.2.1\",\n        \"hono\": \"^4.11.4\",\n        \"jose\": \"^6.1.3\",\n        \"json-schema-typed\": \"^8.0.2\",\n        \"pkce-challenge\": \"^5.0.0\",\n        \"raw-body\": \"^3.0.0\",\n        \"zod\": \"^3.25 || ^4.0\",\n        \"zod-to-json-schema\": \"^3.25.1\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"peerDependencies\": {\n        \"@cfworker/json-schema\": \"^4.1.1\",\n        \"zod\": \"^3.25 || ^4.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"@cfworker/json-schema\": {\n          \"optional\": true\n        },\n        \"zod\": {\n          \"optional\": false\n        }\n      }\n    },\n    \"node_modules/@types/node\": {\n      \"version\": \"20.19.43\",\n      \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz\",\n      \"integrity\": \"sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==\",\n      \"dev\": true,\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"undici-types\": \"~6.21.0\"\n      }\n    },\n    \"node_modules/accepts\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz\",\n      \"integrity\": \"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-types\": \"^3.0.0\",\n        \"negotiator\": \"^1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/accepts/node_modules/mime-db\": {\n      \"version\": \"1.54.0\",\n      \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz\",\n      \"integrity\": \"sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/accepts/node_modules/mime-types\": {\n      \"version\": \"3.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz\",\n      \"integrity\": \"sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-db\": \"^1.54.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"6.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz\",\n      \"integrity\": \"sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"4\"\n      },\n      \"engines\": {\n        \"node\": \">= 6.0.0\"\n      }\n    },\n    \"node_modules/ajv\": {\n      \"version\": \"8.20.0\",\n      \"resolved\": \"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz\",\n      \"integrity\": \"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fast-deep-equal\": \"^3.1.3\",\n        \"fast-uri\": \"^3.0.1\",\n        \"json-schema-traverse\": \"^1.0.0\",\n        \"require-from-string\": \"^2.0.2\"\n      },\n      \"funding\": {\n        \"type\": \"github\",\n        \"url\": \"https://github.com/sponsors/epoberezkin\"\n      }\n    },\n    \"node_modules/ajv-formats\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz\",\n      \"integrity\": \"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ajv\": \"^8.0.0\"\n      },\n      \"peerDependencies\": {\n        \"ajv\": \"^8.0.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"ajv\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/asynckit\": {\n      \"version\": \"0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz\",\n      \"integrity\": \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/axios\": {\n      \"version\": \"1.19.0\",\n      \"resolved\": \"https://registry.npmjs.org/axios/-/axios-1.19.0.tgz\",\n      \"integrity\": \"sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"follow-redirects\": \"^1.16.0\",\n        \"form-data\": \"^4.0.6\",\n        \"https-proxy-agent\": \"^5.0.1\",\n        \"proxy-from-env\": \"^2.1.0\"\n      }\n    },\n    \"node_modules/body-parser\": {\n      \"version\": \"2.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz\",\n      \"integrity\": \"sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"bytes\": \"^3.1.2\",\n        \"content-type\": \"^2.0.0\",\n        \"debug\": \"^4.4.3\",\n        \"http-errors\": \"^2.0.1\",\n        \"iconv-lite\": \"^0.7.2\",\n        \"on-finished\": \"^2.4.1\",\n        \"qs\": \"^6.15.2\",\n        \"raw-body\": \"^3.0.2\",\n        \"type-is\": \"^2.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/body-parser/node_modules/content-type\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz\",\n      \"integrity\": \"sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/bytes\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz\",\n      \"integrity\": \"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/call-bind-apply-helpers\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz\",\n      \"integrity\": \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"function-bind\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/call-bound\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz\",\n      \"integrity\": \"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"get-intrinsic\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/combined-stream\": {\n      \"version\": \"1.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz\",\n      \"integrity\": \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"delayed-stream\": \"~1.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/content-disposition\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz\",\n      \"integrity\": \"sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/content-type\": {\n      \"version\": \"1.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz\",\n      \"integrity\": \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/cookie\": {\n      \"version\": \"0.7.2\",\n      \"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n      \"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/cookie-signature\": {\n      \"version\": \"1.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz\",\n      \"integrity\": \"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.6.0\"\n      }\n    },\n    \"node_modules/cors\": {\n      \"version\": \"2.8.6\",\n      \"resolved\": \"https://registry.npmjs.org/cors/-/cors-2.8.6.tgz\",\n      \"integrity\": \"sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"object-assign\": \"^4\",\n        \"vary\": \"^1\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.10\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/cross-spawn\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n      \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"path-key\": \"^3.1.0\",\n        \"shebang-command\": \"^2.0.0\",\n        \"which\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 8\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/delayed-stream\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\",\n      \"integrity\": \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/depd\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/depd/-/depd-2.0.0.tgz\",\n      \"integrity\": \"sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/dunder-proto\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz\",\n      \"integrity\": \"sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.1\",\n        \"es-errors\": \"^1.3.0\",\n        \"gopd\": \"^1.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/ee-first\": {\n      \"version\": \"1.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz\",\n      \"integrity\": \"sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/encodeurl\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz\",\n      \"integrity\": \"sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/es-define-property\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz\",\n      \"integrity\": \"sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-errors\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz\",\n      \"integrity\": \"sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-object-atoms\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz\",\n      \"integrity\": \"sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/es-set-tostringtag\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz\",\n      \"integrity\": \"sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"es-errors\": \"^1.3.0\",\n        \"get-intrinsic\": \"^1.2.6\",\n        \"has-tostringtag\": \"^1.0.2\",\n        \"hasown\": \"^2.0.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 0.4\"\n      }\n    },\n    \"node_modules/esbuild\": {\n      \"version\": \"0.28.2\",\n      \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz\",\n      \"integrity\": \"sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==\",\n      \"dev\": true,\n      \"hasInstallScript\": true,\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"esbuild\": \"bin/esbuild\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"@esbuild/aix-ppc64\": \"0.28.2\",\n        \"@esbuild/android-arm\": \"0.28.2\",\n        \"@esbuild/android-arm64\": \"0.28.2\",\n        \"@esbuild/android-x64\": \"0.28.2\",\n        \"@esbuild/darwin-arm64\": \"0.28.2\",\n        \"@esbuild/darwin-x64\": \"0.28.2\",\n        \"@esbuild/freebsd-arm64\": \"0.28.2\",\n        \"@esbuild/freebsd-x64\": \"0.28.2\",\n        \"@esbuild/linux-arm\": \"0.28.2\",\n        \"@esbuild/linux-arm64\": \"0.28.2\",\n        \"@esbuild/linux-ia32\": \"0.28.2\",\n        \"@esbuild/linux-loong64\": \"0.28.2\",\n        \"@esbuild/linux-mips64el\": \"0.28.2\",\n        \"@esbuild/linux-ppc64\": \"0.28.2\",\n        \"@esbuild/linux-riscv64\": \"0.28.2\",\n        \"@esbuild/linux-s390x\": \"0.28.2\",\n        \"@esbuild/linux-x64\": \"0.28.2\",\n        \"@esbuild/netbsd-arm64\": \"0.28.2\",\n        \"@esbuild/netbsd-x64\": \"0.28.2\",\n        \"@esbuild/openbsd-arm64\": \"0.28.2\",\n        \"@esbuild/openbsd-x64\": \"0.28.2\",\n        \"@esbuild/openharmony-arm64\": \"0.28.2\",\n        \"@esbuild/sunos-x64\": \"0.28.2\",\n        \"@esbuild/win32-arm64\": \"0.28.2\",\n        \"@esbuild/win32-ia32\": \"0.28.2\",\n        \"@esbuild/win32-x64\": \"0.28.2\"\n      }\n    },\n    \"node_modules/escape-html\": {\n      \"version\": \"1.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz\",\n      \"integrity\": \"sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/etag\": {\n      \"version\": \"1.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/etag/-/etag-1.8.1.tgz\",\n      \"integrity\": \"sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/eventsource\": {\n      \"version\": \"3.0.7\",\n      \"resolved\": \"https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz\",\n      \"integrity\": \"sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"eventsource-parser\": \"^3.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/eventsource-parser\": {\n      \"version\": \"3.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz\",\n      \"integrity\": \"sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=18.0.0\"\n      }\n    },\n    \"node_modules/express\": {\n      \"version\": \"5.2.1\",\n      \"resolved\": \"https://registry.npmjs.org/express/-/express-5.2.1.tgz\",\n      \"integrity\": \"sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"accepts\": \"^2.0.0\",\n        \"body-parser\": \"^2.2.1\",\n        \"content-disposition\": \"^1.0.0\",\n        \"content-type\": \"^1.0.5\",\n        \"cookie\": \"^0.7.1\",\n        \"cookie-signature\": \"^1.2.1\",\n        \"debug\": \"^4.4.0\",\n        \"depd\": \"^2.0.0\",\n        \"encodeurl\": \"^2.0.0\",\n        \"escape-html\": \"^1.0.3\",\n        \"etag\": \"^1.8.1\",\n        \"finalhandler\": \"^2.1.0\",\n        \"fresh\": \"^2.0.0\",\n        \"http-errors\": \"^2.0.0\",\n        \"merge-descriptors\": \"^2.0.0\",\n        \"mime-types\": \"^3.0.0\",\n        \"on-finished\": \"^2.4.1\",\n        \"once\": \"^1.4.0\",\n        \"parseurl\": \"^1.3.3\",\n        \"proxy-addr\": \"^2.0.7\",\n        \"qs\": \"^6.14.0\",\n        \"range-parser\": \"^1.2.1\",\n        \"router\": \"^2.2.0\",\n        \"send\": \"^1.1.0\",\n        \"serve-static\": \"^2.2.0\",\n        \"statuses\": \"^2.0.1\",\n        \"type-is\": \"^2.0.1\",\n        \"vary\": \"^1.1.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/express-rate-limit\": {\n      \"version\": \"8.7.0\",\n      \"resolved\": \"https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.0.tgz\",\n      \"integrity\": \"sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"^4.4.3\",\n        \"ip-address\": \"^10.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 16\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/express-rate-limit\"\n      },\n      \"peerDependencies\": {\n        \"express\": \">= 4.11\"\n      }\n    },\n    \"node_modules/express/node_modules/mime-db\": {\n      \"version\": \"1.54.0\",\n      \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz\",\n      \"integrity\": \"sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/express/node_modules/mime-types\": {\n      \"version\": \"3.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz\",\n      \"integrity\": \"sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"mime-db\": \"^1.54.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/fast-deep-equal\": {\n      \"version\": \"3.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz\",\n      \"integrity\": \"sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/fast-uri\": {\n      \"version\": \"3.1.8\",\n      \"resolved\": \"https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz\",\n      \"integrity\": \"sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==\",\n      \"funding\": [\n        {\n          \"type\": \"github\",\n          \"url\": \"https://github.com/sponsors/fastify\"\n        },\n        {\n          \"type\": \"opencollective\",\n          \"url\": \"https://opencollective.com/fastify\"\n        }\n      ],\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/finalhandler\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz\",\n      \"integrity\": \"sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"debug\": \"^4.4.0\",\n        \"encodeurl\": \"^2.0.0\",\n        \"escape-html\": \"^1.0.3\",\n        \"on-finished\": \"^2.4.1\",\n        \"parseurl\": \"^1.3.3\",\n        \"statuses\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 18.0.0\"\n      },\n      \"funding\": {\n        \"type\": \"opencollective\",\n        \"url\": \"https://opencollective.com/express\"\n      }\n    },\n    \"node_modules/follow-redirects\": {\n      \"version\": \"1.16.0\",\n      \"resolved\": \"https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz\",\n      \"integrity\": \"sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==\",\n      \"funding\": [\n        {\n          \"type\": \"individual\",\n          \"url\": \"https://github.com/sponsors/RubenVerborgh\"\n        }\n      ],\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=4.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"debug\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/form-data\": {\n      \"version\": \"4.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz\",\n      \"integrity\": \"sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"asynckit\": \"^0.4.0\",\n        \"combined-stream\": \"^1.0.8\",\n        \"es-set-tostringtag\": \"^2.1.0\",\n        \"hasown\": \"^2.0.4\",\n        \"mime-types\": \"^2.1.35\"\n      },\n      \"engines\": {\n        \"node\": \">= 6\"\n      }\n    },\n    \"node_modules/forwarded\": {\n      \"version\": \"0.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz\",\n      \"integrity\": \"sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.6\"\n      }\n    },\n    \"node_modules/fresh\": {\n      \"version\": \"2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz\",\n      \"integrity\": \"sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.8\"\n      }\n    },\n    \"node_modules/function-bind\": {\n      \"version\": \"1.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz\",\n      \"integrity\": \"sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==\",\n      \"license\": \"MIT\",\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/ljharb\"\n      }\n    },\n    \"node_modules/get-intrinsic\": {\n      \"version\": \"1.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz\",\n      \"integrity\": \"sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"call-bind-apply-helpers\": \"^1.0.2\",\n        \"es-define-property\": \"^1.0.1\",\n        \"es-errors\": \"^1.3.0\",\n        \"es-object-atoms\": \"^1.1.1\",\n        \"function\n\nArchive v1.3.6: 59 files, 546904 bytes\n\nFiles: connector-meta.json (981b), dist/550w-mcp.cjs (2361424b), dist/550w-skill.cjs (572210b), dist/actions/delete-task.d.ts (193b), dist/actions/delete-task.js (1202b), dist/actions/image-watermark-task-detail.d.ts (207b), dist/actions/image-watermark-task-detail.js (1197b), dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1242b), dist/actions/remove-image-watermark.d.ts (203b), dist/actions/remove-image-watermark.js (1399b), dist/actions/remove-video-watermark.d.ts (203b), dist/actions/remove-video-watermark.js (1325b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (2652b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (2188b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (1565b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1210b), dist/api-client.d.ts (582b), dist/api-client.js (3179b), dist/cli.d.ts (31b), dist/cli.js (3473b), dist/credential-manager.d.ts (399b), dist/credential-manager.js (5597b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (4375b), dist/error-handler.d.ts (363b), dist/error-handler.js (3568b), dist/i18n.d.ts (601b), dist/i18n.js (2870b), dist/index.d.ts (117b), dist/index.js (462b), dist/mcp-server.d.ts (31b), dist/mcp-server.js (9610b), dist/types.d.ts (5499b), dist/types.js (2802b), dist/validator.d.ts (574b), dist/validator.js (13160b), dist/video-probe.d.ts (400b), dist/video-probe.js (1912b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (5570b), icon.svg (262b), mcp.json (344b), package-lock.json (66354b), package.json (742b), references/agent-compatibility.md (3606b), references/api-contract.md (6784b), skill-card.md (2619b), skill.json (882b), SKILL.md (5733b), skills/ai-subtitle-remover/references/agent-compatibility.md (3606b), skills/ai-subtitle-remover/references/api-contract.md (6784b), skills/ai-subtitle-remover/SKILL.md (3657b), token-schema.json (1597b), _meta.json (143b)\n\nArchive v1.2.0: 44 files, 138917 bytes\n\nFiles: dist/550w-skill.cjs (551901b), dist/actions/image-watermark-task-detail.d.ts (207b), dist/actions/image-watermark-task-detail.js (779b), dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1119b), dist/actions/remove-image-watermark.d.ts (203b), dist/actions/remove-image-watermark.js (1066b), dist/actions/remove-video-watermark.d.ts (203b), dist/actions/remove-video-watermark.js (1054b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (1780b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (1432b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (1144b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1088b), dist/api-client.d.ts (543b), dist/api-client.js (2862b), dist/cli.d.ts (31b), dist/cli.js (3113b), dist/credential-manager.d.ts (305b), dist/credential-manager.js (4341b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (3694b), dist/error-handler.d.ts (309b), dist/error-handler.js (1736b), dist/index.d.ts (117b), dist/index.js (462b), dist/types.d.ts (4944b), dist/types.js (2246b), dist/validator.d.ts (556b), dist/validator.js (7886b), dist/video-probe.d.ts (400b), dist/video-probe.js (1912b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (3763b), package-lock.json (27520b), package.json (634b), references/api-contract.md (2089b), skill-card.md (2450b), skill.json (614b), SKILL.md (4583b), _meta.json (143b)\n\nArchive v1.0.2: 44 files, 138700 bytes\n\nFiles: dist/550w-skill.cjs (551901b), dist/actions/image-watermark-task-detail.d.ts (207b), dist/actions/image-watermark-task-detail.js (779b), dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1119b), dist/actions/remove-image-watermark.d.ts (203b), dist/actions/remove-image-watermark.js (1066b), dist/actions/remove-video-watermark.d.ts (203b), dist/actions/remove-video-watermark.js (1054b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (1780b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (1432b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (1144b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1088b), dist/api-client.d.ts (543b), dist/api-client.js (2862b), dist/cli.d.ts (31b), dist/cli.js (3113b), dist/credential-manager.d.ts (305b), dist/credential-manager.js (4341b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (3694b), dist/error-handler.d.ts (309b), dist/error-handler.js (1736b), dist/index.d.ts (117b), dist/index.js (462b), dist/types.d.ts (4944b), dist/types.js (2246b), dist/validator.d.ts (556b), dist/validator.js (7886b), dist/video-probe.d.ts (400b), dist/video-probe.js (1912b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (3763b), package-lock.json (27520b), package.json (634b), references/api-contract.md (2089b), skill-card.md (2279b), skill.json (614b), SKILL.md (4583b), _meta.json (143b)\n\nArchive v1.0.1: 33 files, 23900 bytes\n\nFiles: dist/actions/query-credits.d.ts (195b), dist/actions/query-credits.js (1119b), dist/actions/submit-task.d.ts (193b), dist/actions/submit-task.js (1630b), dist/actions/task-detail.d.ts (193b), dist/actions/task-detail.js (1476b), dist/actions/task-list.d.ts (191b), dist/actions/task-list.js (868b), dist/actions/upload-video.d.ts (194b), dist/actions/upload-video.js (1088b), dist/api-client.d.ts (523b), dist/api-client.js (2644b), dist/credential-manager.d.ts (305b), dist/credential-manager.js (4174b), dist/dispatcher.d.ts (134b), dist/dispatcher.js (1918b), dist/error-handler.d.ts (309b), dist/error-handler.js (1743b), dist/index.d.ts (117b), dist/index.js (462b), dist/types.d.ts (4254b), dist/types.js (2028b), dist/validator.d.ts (556b), dist/validator.js (7179b), dist/video-probe.d.ts (535b), dist/video-probe.js (588b), dist/workflow-engine.d.ts (196b), dist/workflow-engine.js (4042b), package.json (524b), skill-card.md (2565b), skill.json (480b), SKILL.md (4380b), _meta.json (143b)\n\nArchive v1.0.0: 44 files, 49727 bytes\n\nFiles: dist/actions/query-credits.d.ts (631b), dist/actions/query-credits.js (1986b), dist/actions/submit-task.d.ts (732b), dist/actions/submit-task.js (2612b), dist/actions/task-detail.d.ts (706b), dist/actions/task-detail.js (2404b), dist/actions/task-list.d.ts (449b), dist/actions/task-list.js (1237b), dist/actions/upload-video.d.ts (599b), dist/actions/upload-video.js (1816b), dist/api-client.d.ts (1174b), dist/api-client.js (4797b), dist/credential-manager.d.ts (1011b), dist/credential-manager.js (4916b), dist/dispatcher.d.ts (531b), dist/dispatcher.js (2869b), dist/error-handler.d.ts (1037b), dist/error-handler.js (2708b), dist/index.d.ts (152b), dist/index.js (681b), dist/types.d.ts (5929b), dist/types.js (2661b), dist/validator.d.ts (1017b), dist/validator.js (10411b), dist/workflow-engine.d.ts (930b), dist/workflow-engine.js (5476b), package.json (524b), skill.json (480b), SKILL.md (3061b), src/actions/query-credits.ts (1872b), src/actions/submit-task.ts (2466b), src/actions/task-detail.ts (2275b), src/actions/task-list.ts (1146b), src/actions/upload-video.ts (1684b), src/api-client.ts (3124b), src/credential-manager.ts (3194b), src/dispatcher.ts (2442b), src/error-handler.ts (2613b), src/index.ts (337b), src/types.ts (6477b), src/validator.ts (10807b), src/workflow-engine.ts (4995b), tsconfig.json (461b), _meta.json (143b)","readmeExcerpt":"Skill: 550W AI Subtitle & Watermark Remover Owner: sunshinehu Summary: Remove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits. Use for user-selected media or public share links. Tags: latest:2.0.0 Version history: v2.0.0 | 2026-09-23T04:46:26.510Z | user Split domestic and global distributions while pr","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"node {baseDir}/dist/550w-skill.cjs"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ai-subtitle-remover\ndescription: Remove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits. Use for user-selected media or public share links.\nmetadata:\n  openclaw:\n    primaryEnv: SUBTITLE_REMOVER_API_KEY\n    requires:\n      bins:\n        - node\n    envVars:\n      - name: SUBTITLE_REMOVER_API_KEY\n        required: false\n        description: API key for authenticated requests to the 550W Open API.\n      - name: SUBTITLE_REMOVER_USER_NO\n        required: false\n        description: User ID belonging to the same 550W account as the API key.\n      - name: FFPROBE_PATH\n        required: false\n        description: Optional ffprobe executable path for inspecting public direct video URLs.\n---\n\n# 550W AI subtitle and watermark removal\n\nUse the highest-level matching tool. The global edition defaults to English; its account setup uses Eraser, while media operations use the shared 550W Open API. Respond in the user's language when possible; tool messages fall back to English except for Chinese. Language never changes the service region.\n\n## Credentials and data\n\n- If credentials are missing, direct the user to the localized Eraser API page at `https://eraser.550wai.com/{locale}/api/`; use <https://eraser.550wai.com/api/> for English or unsupported locales. They need the User ID and API Key from the same account.\n- In WorkBuddy, ask the user to fill in both fields in the connector settings. Otherwise use `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`, or the `configureCredentials` action. Never repeat a complete API Key.\n- Before the first media operation, explain that the selected file or public link is sent to the 550W Open API. Use only a file the user explicitly selected or named. Privacy and terms: <https://eraser.550wai.com/privacy/> and <https://eraser.550wai.com/terms/>; localized pages are available.\n\n## Capabilities\n\n- Remove hardcoded subtitles from a local MP4/MOV video or a public direct video-file URL: `remove_video_subtitles` (CLI action `workflow`). The tool derives local-video metadata. `removeAudio` is only an optional parameter when explicitly requested.\n- Remove a short-video watermark: ask the user to copy the public video share link inside the platform app and provide that link, or share text containing one link. TikTok and other service-supported platforms are examples. Call `remove_video_watermark` (CLI action `removeVideoWatermark`) with the share link; do not download the video first. Use a stable `operationId` when available.\n- Remove watermarks or unwanted text from a user-selected local image: `remove_image_watermark` (CLI action `removeImageWatermark`). Process multiple images serially.\n- Check subtitle or image task status, subtitle task history, and credit balance: `get_subtitle_task`, `get_image_task`, `list_subtitle_tasks`, `query_credits`.\n- Delete an owned subtitle task: `delete_subtitle_ta"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7czsjs5ywdr4de3e947n93r586qqsa\",\n  \"slug\": \"550w-ai-subtitle-remover\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1790138786510\n}"},{"path":"references/agent-compatibility.md","content":"# Agent compatibility / Agent 兼容性\n\nRead this reference when installing the package outside WorkBuddy or diagnosing an MCP client.\n\n仅在 WorkBuddy 之外安装，或排查 MCP 客户端兼容性时读取。\n\n## Runtime contract / 运行契约\n\n- Runtime: Node.js 18 or newer / Node.js 18 或更高版本。\n- Transport: local MCP over stdio using newline-delimited JSON-RPC. The server writes protocol messages only to stdout / 使用 stdio 的本地 MCP，协议为按行分隔的 JSON-RPC；服务端仅向 stdout 写协议消息。\n- Entrypoint: `dist/550w-mcp.cjs`; set the package root as `cwd` or use an absolute entrypoint path / 入口是 `dist/550w-mcp.cjs`；将包根目录设为 `cwd`，或使用入口绝对路径。\n- Credentials: `SUBTITLE_REMOVER_USER_NO` and `SUBTITLE_REMOVER_API_KEY`. The package selects its service region; users do not need a region setting / 凭据使用上述两个环境变量；发行包已决定服务区域，用户无需设置地区。\n- Network access: allow HTTPS access to `www.550wai.cn`; local-file tools also need read access to the selected media / 需要允许访问 `www.550wai.cn`；本地文件工具还需获得所选媒体的读取权限。\n\n## Client families / 客户端类型\n\n- WorkBuddy: use the bundled `mcp.json`, `token-schema.json`, and connector metadata. Its token form maps credentials into the MCP process environment / 使用包内 WorkBuddy 配置，由凭据表单注入环境变量。\n- Claude Desktop, Cursor, Windsurf, and clients using the common `mcpServers` shape: launch `node` with the absolute `dist/550w-mcp.cjs` path and pass credentials through `env` / 使用常见 `mcpServers` 结构的客户端，以 `node` 启动绝对入口路径并通过 `env` 传入凭据。\n- Codex desktop, CLI, and IDE: configure a local stdio server with command, args, cwd, and forwarded environment variables / 使用本地 stdio 配置，提供 command、args、cwd 与环境变量。\n- VS Code and GitHub Copilot: use the `servers` configuration shape rather than `mcpServers`; prefer secure input variables for credentials / 使用 `servers` 结构，并优先使用安全输入变量保存凭据。\n- OpenClaw and other Agent Skills clients: install the `ai-subtitle-remover` package directory and discover its root `SKILL.md`; the bundled MCP server remains the source of callable tools / 安装 `ai-subtitle-remover` 目录并读取根目录的 `SKILL.md`，可调用工具仍由包内 MCP 服务提供。\n\n## Portability boundaries / 可移植性边界\n\n- Global MCP tools accept an optional `locale` for localized messages. The global package defaults to English; the domestic package responds in Chinese. Neither package asks for a region parameter / 全球版 MCP 工具可选传入 `locale`，默认英语；国内版使用中文。两版都不要求设置地区。\n- Tool schemas are JSON-Schema compatible and expose MCP safety annotations. Read-only tools are marked read-only; task deletion is marked destructive / 工具 schema 兼容 JSON Schema，并提供 MCP 安全标记；查询类工具为只读，删除任务标记为破坏性操作。\n- This package is a local stdio server. Browser-only or SaaS agents that accept only remote Streamable HTTP MCP cannot connect to the ZIP directly; deploy a separately secured HTTP MCP gateway instead / 本包是本地 stdio 服务。仅接受远程 Streamable HTTP MCP 的浏览器或 SaaS Agent 不能直接连接 ZIP，需要另行部署带鉴权的 HTTP MCP 网关。\n- Do not translate one client's configuration file directly into another without changing its top-level schema (`mcpServers` versus `servers` or TOML) / 不要在未调整顶层结构时直接复制不同客户端的配置。"},{"path":"references/api-contract.md","content":"# 550W Open API contract / 接口契约\n\nRead this reference only when validating inputs, explaining billing, or handling provider responses. The domestic credential-management page is `https://qzm.550wai.cn/api-keys`. The global documentation and credential page is `https://eraser.550wai.com/api/`; supported locale routes use `https://eraser.550wai.com/{locale}/api/`. These regional surfaces configure the same shared Skill capabilities.\n\n仅在校验输入、解释计费或处理服务响应时读取。国内凭据管理页是 `https://qzm.550wai.cn/api-keys`；全球文档与凭据页是 `https://eraser.550wai.com/api/`，支持的语言使用 `https://eraser.550wai.com/{locale}/api/`。这些地区入口配置的是同一个全球共享 Skill 能力。\n\n## Actions / 能力\n\n| Action | Endpoint | Scope and input / 范围与输入 |\n|---|---|---|\n| `uploadVideo` | `/open/uploadVideo` | MP4/MOV file / MP4、MOV 文件 |\n| `submitTask` | `/open/submitTask` | Direct video URL plus actual width, height, and duration; optional `subUserId`; the skill submits full-frame coordinates / 视频直链及真实宽高、时长；可选 `subUserId`；Skill 固定提交全屏坐标 |\n| `taskDetail` | `/open/taskDetail` | Subtitle-removal `taskId`; optional matching `subUserId` / 去字幕任务编号；可选且需匹配的 `subUserId` |\n| `taskList` | `/open/taskList` | `page`, `size`; optional `subUserId` scope / 分页参数；可选 `subUserId` 范围 |\n| `deleteTask` | `/open/deleteTask` | Subtitle task `taskId`; optional `subUserId`. Destructive and does not refund credits / 去字幕任务编号；可选 `subUserId`。删除不可撤销且不退积分 |\n| `queryCredits` | `/open/queryCredits` | No business parameters / 无业务参数 |\n| `removeImageWatermark` | `/open/removeImageWatermark` | One image file; `sync` defaults to `true` / 单张图片；`sync` 默认 `true` |\n| `imageWatermarkTaskDetail` | `/open/imageWatermarkTaskDetail` | Image task `taskId` / 图片任务编号 |\n| `removeVideoWatermark` | `/open/removeVideoWatermark` | TikTok or another supported short-video share URL copied in the platform app, or copied share text; optional `operationId` / 在平台 App 内复制的 TikTok 等短视频分享链接或分享文本；可选 `operationId` |\n\nAll remote calls authenticate with `userNo` and `apiKey`. Capabilities are shared globally; region and locale affect the credential/documentation URL and user-facing language, not tool availability.\n\n所有远程请求使用 `userNo` 与 `apiKey` 鉴权。能力全球共享；地区和语言只影响凭据/文档入口及用户文案，不限制工具可用性。\n\n## Input limits / 输入限制\n\n- Video / 视频：MP4 or MOV, at most 1 GB, 1–600 seconds; maximum side at most 1920 and minimum side at most 1080 / MP4 或 MOV，最大 1GB，时长 1–600 秒；最大边不超过 1920，最小边不超过 1080。\n- Image / 图片：JPG, PNG, BMP, WebP, AVIF, TIFF, or SVG; at most 50 MB / 最大 50MB。\n- URL：HTTP or HTTPS only, at most 2048 characters / 仅 HTTP 或 HTTPS，最长 2048 字符。\n- Video-link watermark removal accepts TikTok and other provider-supported public share links copied inside the platform app. Supply that link as `videoUrl`; no prior download is needed. Copied share text may be supplied when it contains one HTTP(S) URL. Actual platform support depends on the service response. `operationId` is 8–64 characters using letters, numbers, `.`, `_`, `:`, or `-`; reuse it only for the same URL / 在平台 App 内复制 TikTok 等短视频的公开视频分享链接，并将链接作为 `videoUrl` 输入，"},{"path":"skill-card.md","content":"## Description:\n\nRemove hardcoded video subtitles, watermarks from short-video share links, and image watermarks or unwanted text with the 550W Open API; check processing tasks and credits.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[sunshinehu](https://clawhub.ai/user/sunshinehu)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agent operators use this skill to remove subtitles or watermarks from selected videos, public share links, and images, and to check processing tasks and account credits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected media files or public links are sent to the 550W Open API for processing.\n\nMitigation: Use only media or links explicitly selected by the user and disclose the remote processing step before the first media operation.\n\nRisk: Credentials may be stored locally for authenticated API requests.\n\nMitigation: Use connector or environment secret storage when available and avoid repeating complete API keys in chat or logs.\n\nRisk: Deleting a subtitle task can clean up related remote media and does not refund credits.\n\nMitigation: Allow deletion only through a host workflow that asks for explicit confirmation immediately before the destructive action.\n\n## Reference(s):\n\n- [API contract](references/api-contract.md)\n- [Agent compatibility](references/agent-compatibility.md)\n- [550W Open API credential page](https://eraser.550wai.com/api/)\n- [ClawHub skill page](https://clawhub.ai/sunshinehu/skills/550w-ai-subtitle-remover)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, API calls, shell commands, configuration]\n\n**Output Format:** [Markdown and JSON-like tool responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May return task IDs, status messages, credit balances, result URLs, and actionable errors.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release evidence and package.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2181,"uniquenessScore":38,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T00:50:33.010Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:57:25.410Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}