{"id":"f5474645-1d49-49b7-93b5-b13dee7c73e6","entityType":"agent","slug":"clawhub-runapi-ai-runapi-midjourney","name":"midjourney","canonicalUrl":"https://www.xpersona.co/agent/clawhub-runapi-ai-runapi-midjourney","canonicalPath":"/agent/clawhub-runapi-ai-runapi-midjourney","generatedAt":"2026-10-11T20:56:27.507Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T16:50:43.991Z","emptyReason":null},"description":"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration. Skill: midjourney Owner: runapi-ai Summary: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration. Tags: latest:0.3.3 Version history: v0.3.3 | 2026-09-04T11:36:22.823Z | user Changed - Document terminal responses, 202 acceptance, and Tas","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s1771k6pjxksnjws51x2htfjvd876syh:runapi-midjourney","sourceUrl":"https://clawhub.ai/runapi-ai/runapi-midjourney","homepage":"https://clawhub.ai/runapi-ai/skills/runapi-midjourney","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/runapi-ai/runapi-midjourney","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/runapi-ai/skills/runapi-midjourney","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the Ru"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T16:50:43.991Z","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-11T16:50:43.991Z","emptyReason":null},"stars":null,"forks":null,"downloads":1024,"packageName":null,"latestVersion":"0.3.3","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T16:50:43.923Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T16:50:43.991Z","lastCrawledAt":"2026-10-11T16:50:43.923Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T16:50:43.924Z","lastVerifiedAt":null,"highlights":[{"version":"0.3.3","createdAt":"2026-09-04T11:36:22.823Z","changelog":"## Changed - Document terminal responses, 202 acceptance, and Task Result continuation for supported capabilities.","fileCount":3,"zipByteSize":4749},{"version":"0.3.2","createdAt":"2026-08-12T06:15:51.728Z","changelog":"## Changed - Generate the midjourney skill from the shared RunAPI recipe with contract-discovered request rules and task behavior, direct local media inputs, complete result verification, and bounded recovery.","fileCount":3,"zipByteSize":4663},{"version":"0.3.1","createdAt":"2026-08-10T14:08:19.597Z","changelog":"## Changed - Complete marketplace distribution for the RunAPI Midjourney skill.","fileCount":3,"zipByteSize":3597},{"version":"0.3.0","createdAt":"2026-07-22T22:56:24.983Z","changelog":"## Added - Add first-video extension guidance, source-task boundaries, and CLI examples.","fileCount":3,"zipByteSize":3579},{"version":"0.2.0","createdAt":"2026-07-20T11:42:22.247Z","changelog":"## Added - Document the synchronous prompt shortening workflow and CLI command in the Midjourney agent skill.","fileCount":3,"zipByteSize":3488},{"version":"0.1.0","createdAt":"2026-07-17T10:24:10.449Z","changelog":"## Added - Add guided image generation, editing, image-to-video, image-to-prompt, and seed lookup examples.","fileCount":3,"zipByteSize":3389}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1771k6pjxksnjws51x2htfjvd876syh:runapi-midjourney","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-runapi-ai-runapi-midjourney/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/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-11T20:56:27.506Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-midjourney/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":"high","updatedAt":"2026-10-11T16:50:43.991Z","emptyReason":null},"readme":"Skill: midjourney\n\nOwner: runapi-ai\n\nSummary: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\n\nTags: latest:0.3.3\n\nVersion history:\n\nv0.3.3 | 2026-09-04T11:36:22.823Z | user\n\n## Changed\n- Document terminal responses, 202 acceptance, and Task Result continuation for supported capabilities.\n\nv0.3.2 | 2026-08-12T06:15:51.728Z | user\n\n## Changed\n- Generate the midjourney skill from the shared RunAPI recipe with contract-discovered request rules and task behavior, direct local media inputs, complete result verification, and bounded recovery.\n\nv0.3.1 | 2026-08-10T14:08:19.597Z | user\n\n## Changed\n- Complete marketplace distribution for the RunAPI Midjourney skill.\n\nv0.3.0 | 2026-07-22T22:56:24.983Z | user\n\n## Added\n- Add first-video extension guidance, source-task boundaries, and CLI examples.\n\nv0.2.0 | 2026-07-20T11:42:22.247Z | user\n\n## Added\n- Document the synchronous prompt shortening workflow and CLI command in the Midjourney agent skill.\n\nv0.1.0 | 2026-07-17T10:24:10.449Z | user\n\n## Added\n- Add guided image generation, editing, image-to-video, image-to-prompt, and seed lookup examples.\n\nArchive index:\n\nArchive v0.3.3: 3 files, 4749 bytes\n\nFiles: skill-card.md (2964b), SKILL.md (7245b), _meta.json (136b)\n\nFile v0.3.3:SKILL.md\n\n---\nname: midjourney\ndescription: \"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\"\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; agents should prefer environment auth or saved CLI config. Browser login is interactive fallback only.\n---\n\n# Midjourney on RunAPI\n\n## Choose route\n\n- For a one-off artifact or result, use the registered `midjourney` service in the `runapi` CLI. If the installed command catalog does not list it, stop and report the missing service instead of inventing a command.\n- For an app, backend, worker, library, webhook pipeline, or production codebase, go directly to **Integrate with SDK**. Never shell out to the CLI as the production runtime.\n\n## Discover contract\n\nAuthenticate, then inspect the installed command catalog and the selected operation's current contract:\n\n```shell\nrunapi auth status > auth.json\njq -e '.authenticated == true' auth.json\nrunapi midjourney --help\nrunapi midjourney <operation> --help\ncurl --fail --location https://runapi.ai/docs/api/midjourney/<operation>.md --output contract.md\n```\n\nIf authentication is false, stop before submitting. Ask the user to provide a valid `RUNAPI_API_KEY`, or import a user-provided key from stdin with `runapi auth import-token --token -`; use interactive browser login only when the user explicitly requests it. Choose `<operation>` only from service help. Treat command help as authoritative for the installed operation, model, and top-level field roster. Treat its API Reference as authoritative for the complete request schema, nested fields, conditional rules, task behavior, and response variants. If the two surfaces disagree, stop and report the contract mismatch instead of guessing.\n\n## Build request\n\nCreate `request.json` as valid JSON using only fields accepted by the discovered operation contract. For the chosen model and values, evaluate every applicable conditional rule as a set: satisfy every required field, omit every forbidden field, and stop on unresolved contradictions.\n\nTraverse nested objects and arrays before execution. Close every relationship stated by the discovered contract, including uniqueness constraints and cross-references between nested values.\n\nFor a discovered local media input, including file-typed fields and top-level media URL fields, put an agent-readable local file path directly in `request.json`. The CLI consumes file fields as declared and uploads local paths in top-level media URL fields. Use `runapi files create` only when the user needs a reusable URL, provides Base64, or the discovered contract explicitly requires a separate upload.\n\nValidate the file before sending it:\n\n```shell\njq empty request.json\n```\n\n## Execute\n\nUse the branch matching the selected operation's discovered task behavior. Submit exactly once.\n\nFor an asynchronous operation:\n\n```shell\nrunapi midjourney <operation> --async --input-file request.json > task.json\ntask_id=\"$(jq -er '.id' task.json)\"\nrunapi wait \"$task_id\" --service midjourney --action <operation> > result.json\n```\n\nFor a synchronous operation:\n\n```shell\nrunapi midjourney <operation> --input-file request.json > result.out\n```\n\nDo not use `--async` or `runapi wait` for a synchronous operation. For an asynchronous operation, stop after validating `task.json` only when the user explicitly asks for background execution, polling, or webhook integration; report the task id without claiming the deliverable is complete.\n\n## Verify\n\nA success status is not the deliverable. Read and validate the complete response according to the discovered result contract. Preserve the complete non-media result in the exact requested format, including JSON, text, SRT, or VTT.\n\nFor every requested media deliverable listed anywhere in the response, download all of them rather than returning only the first URL. Before downloading, derive its expected MIME type or family from response metadata when present, then the selected output format, then an unambiguous result field such as `videos`, `images`, or `audios` in the API Reference. The Catalog-declared fallback families for this skill are `image/*` or `video/*`. Stop only when no single expected type or family can be established from those sources.\n\nFor every downloaded file, require both a non-empty file and the expected MIME type or family:\n\n```shell\ncurl --fail --location <deliverable-url> --output <downloaded-file>\nfor file in <downloaded-files>; do\n  expected_mime=<expected-MIME-or-family-pattern-for-this-file>\n  test -s \"$file\"\n  [[ \"$(file --brief --mime-type \"$file\")\" == $expected_mime ]]\ndone\n```\n\nDo not report completion when any requested deliverable is missing, empty, or has an unexpected MIME type. Record `Skill Conformance` separately from `Task Outcome` so a service failure does not hide whether this recipe was followed.\n\n## Recover or stop\n\n- Correct a request shape at most once, and only when the discovered contract or returned validation error identifies the correction.\n- Retry a transient transport failure at most once, and only when evidence confirms that no task was created, no billing occurred, and retrying is safe.\n- If waiting times out or loses transport after `task.json` exists, preserve the error and rerun `runapi wait` for that same task at most once. Never submit a replacement task.\n- On a terminal RunAPI or service failure, preserve the task/error evidence and stop. Keep the selected model and capability, and do not submit another paid request without user authorization.\n- If the contract is missing a fact required to build or verify the request, stop and report the contract gap. Do not turn a product defect into a permanent skill workaround.\n\n## Integrate with SDK\n\nUse this route only for application or production-code integration. Open the current RunAPI SDK reference below, select the package for the target language and `Midjourney`, and confirm its install command, client methods, request types, response types, and error classes before coding. Build the request from the same discovered product contract and apply the same deliverable verification and stop rules. Do not invoke `runapi` as a subprocess from production code.\n\n## References\n\n- Model overview, pricing, and rate limits: https://runapi.ai/models/midjourney.md\n- Provider overview: https://runapi.ai/providers/midjourney.md\n- Full model catalog: https://runapi.ai/models.md\n- SDK integration: https://github.com/runapi-ai/midjourney-sdk\n\n## Variants\n- `midjourney-edit-image`: https://runapi.ai/models/midjourney/edit-image.md\n- `midjourney-image-to-video`: https://runapi.ai/models/midjourney/image-to-video.md\n- `midjourney-v8.1`: https://runapi.ai/models/midjourney/v8.1.md\n\nFile v0.3.3:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.3.3\",\n  \"publishedAt\": 1788521782823\n}\n\nFile v0.3.3:skill-card.md\n\n## Description:\n\nGenerate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI, using the RunAPI CLI for one-off work and language SDKs for application integration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to perform Midjourney generation, editing, video, prompt, and seed tasks through RunAPI as either one-off CLI jobs or SDK-backed application integrations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and selected input media may be sent to RunAPI.\n\nMitigation: Use only approved inputs and avoid sending sensitive or proprietary media unless that data sharing is authorized.\n\nRisk: Generated RunAPI jobs may incur costs.\n\nMitigation: Submit each job once, retry only under the skill's stated safe-retry conditions, and get user authorization before replacing a paid request.\n\nRisk: API credentials could be exposed if handled directly in prompts, files, or logs.\n\nMitigation: Use RUNAPI_API_KEY or a trusted CLI auth flow, and avoid embedding credentials in request files or command output.\n\nRisk: A request can become invalid if the installed CLI contract and API reference differ or change.\n\nMitigation: Inspect the current CLI help and API reference before building requests, and stop on contract mismatches instead of guessing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-midjourney)\n- [RunAPI Midjourney model homepage](https://runapi.ai/models/midjourney)\n- [RunAPI Midjourney model documentation](https://runapi.ai/models/midjourney.md)\n- [RunAPI Midjourney provider overview](https://runapi.ai/providers/midjourney.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [RunAPI Midjourney SDK](https://github.com/runapi-ai/midjourney-sdk)\n- [Midjourney edit image variant](https://runapi.ai/models/midjourney/edit-image.md)\n- [Midjourney image to video variant](https://runapi.ai/models/midjourney/image-to-video.md)\n- [Midjourney v8.1 variant](https://runapi.ai/models/midjourney/v8.1.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands, JSON request files, SDK integration direction, and validation steps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce or verify image and video media deliverables through RunAPI responses.]\n\n## Skill Version(s):\n\n0.3.3 (source: server release metadata)\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\nArchive v0.3.2: 3 files, 4663 bytes\n\nFiles: skill-card.md (2676b), SKILL.md (7245b), _meta.json (136b)\n\nFile v0.3.2:SKILL.md\n\n---\nname: midjourney\ndescription: \"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\"\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; agents should prefer environment auth or saved CLI config. Browser login is interactive fallback only.\n---\n\n# Midjourney on RunAPI\n\n## Choose route\n\n- For a one-off artifact or result, use the registered `midjourney` service in the `runapi` CLI. If the installed command catalog does not list it, stop and report the missing service instead of inventing a command.\n- For an app, backend, worker, library, webhook pipeline, or production codebase, go directly to **Integrate with SDK**. Never shell out to the CLI as the production runtime.\n\n## Discover contract\n\nAuthenticate, then inspect the installed command catalog and the selected operation's current contract:\n\n```shell\nrunapi auth status > auth.json\njq -e '.authenticated == true' auth.json\nrunapi midjourney --help\nrunapi midjourney <operation> --help\ncurl --fail --location https://runapi.ai/docs/api/midjourney/<operation>.md --output contract.md\n```\n\nIf authentication is false, stop before submitting. Ask the user to provide a valid `RUNAPI_API_KEY`, or import a user-provided key from stdin with `runapi auth import-token --token -`; use interactive browser login only when the user explicitly requests it. Choose `<operation>` only from service help. Treat command help as authoritative for the installed operation, model, and top-level field roster. Treat its API Reference as authoritative for the complete request schema, nested fields, conditional rules, task behavior, and response variants. If the two surfaces disagree, stop and report the contract mismatch instead of guessing.\n\n## Build request\n\nCreate `request.json` as valid JSON using only fields accepted by the discovered operation contract. For the chosen model and values, evaluate every applicable conditional rule as a set: satisfy every required field, omit every forbidden field, and stop on unresolved contradictions.\n\nTraverse nested objects and arrays before execution. Close every relationship stated by the discovered contract, including uniqueness constraints and cross-references between nested values.\n\nFor a discovered local media input, including file-typed fields and top-level media URL fields, put an agent-readable local file path directly in `request.json`. The CLI consumes file fields as declared and uploads local paths in top-level media URL fields. Use `runapi files create` only when the user needs a reusable URL, provides Base64, or the discovered contract explicitly requires a separate upload.\n\nValidate the file before sending it:\n\n```shell\njq empty request.json\n```\n\n## Execute\n\nUse the branch matching the selected operation's discovered task behavior. Submit exactly once.\n\nFor an asynchronous operation:\n\n```shell\nrunapi midjourney <operation> --async --input-file request.json > task.json\ntask_id=\"$(jq -er '.id' task.json)\"\nrunapi wait \"$task_id\" --service midjourney --action <operation> > result.json\n```\n\nFor a synchronous operation:\n\n```shell\nrunapi midjourney <operation> --input-file request.json > result.out\n```\n\nDo not use `--async` or `runapi wait` for a synchronous operation. For an asynchronous operation, stop after validating `task.json` only when the user explicitly asks for background execution, polling, or webhook integration; report the task id without claiming the deliverable is complete.\n\n## Verify\n\nA success status is not the deliverable. Read and validate the complete response according to the discovered result contract. Preserve the complete non-media result in the exact requested format, including JSON, text, SRT, or VTT.\n\nFor every requested media deliverable listed anywhere in the response, download all of them rather than returning only the first URL. Before downloading, derive its expected MIME type or family from response metadata when present, then the selected output format, then an unambiguous result field such as `videos`, `images`, or `audios` in the API Reference. The Catalog-declared fallback families for this skill are `image/*` or `video/*`. Stop only when no single expected type or family can be established from those sources.\n\nFor every downloaded file, require both a non-empty file and the expected MIME type or family:\n\n```shell\ncurl --fail --location <deliverable-url> --output <downloaded-file>\nfor file in <downloaded-files>; do\n  expected_mime=<expected-MIME-or-family-pattern-for-this-file>\n  test -s \"$file\"\n  [[ \"$(file --brief --mime-type \"$file\")\" == $expected_mime ]]\ndone\n```\n\nDo not report completion when any requested deliverable is missing, empty, or has an unexpected MIME type. Record `Skill Conformance` separately from `Task Outcome` so a service failure does not hide whether this recipe was followed.\n\n## Recover or stop\n\n- Correct a request shape at most once, and only when the discovered contract or returned validation error identifies the correction.\n- Retry a transient transport failure at most once, and only when evidence confirms that no task was created, no billing occurred, and retrying is safe.\n- If waiting times out or loses transport after `task.json` exists, preserve the error and rerun `runapi wait` for that same task at most once. Never submit a replacement task.\n- On a terminal RunAPI or service failure, preserve the task/error evidence and stop. Keep the selected model and capability, and do not submit another paid request without user authorization.\n- If the contract is missing a fact required to build or verify the request, stop and report the contract gap. Do not turn a product defect into a permanent skill workaround.\n\n## Integrate with SDK\n\nUse this route only for application or production-code integration. Open the current RunAPI SDK reference below, select the package for the target language and `Midjourney`, and confirm its install command, client methods, request types, response types, and error classes before coding. Build the request from the same discovered product contract and apply the same deliverable verification and stop rules. Do not invoke `runapi` as a subprocess from production code.\n\n## References\n\n- Model overview, pricing, and rate limits: https://runapi.ai/models/midjourney.md\n- Provider overview: https://runapi.ai/providers/midjourney.md\n- Full model catalog: https://runapi.ai/models.md\n- SDK integration: https://github.com/runapi-ai/midjourney-sdk\n\n## Variants\n- `midjourney-edit-image`: https://runapi.ai/models/midjourney/edit-image.md\n- `midjourney-image-to-video`: https://runapi.ai/models/midjourney/image-to-video.md\n- `midjourney-v8.1`: https://runapi.ai/models/midjourney/v8.1.md\n\nFile v0.3.2:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.3.2\",\n  \"publishedAt\": 1786515351728\n}\n\nFile v0.3.2:skill-card.md\n\n## Description:\n\nGenerate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to run Midjourney generation, editing, prompt, seed, and image-to-video workflows through RunAPI while following the current CLI or SDK contract.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can submit paid RunAPI/Midjourney jobs and may upload local media when a selected operation requires it.\n\nMitigation: Confirm authentication, pricing, operation contract, and user intent before submission; upload only files needed for the requested workflow.\n\nRisk: A changed CLI or API contract can make a request invalid or produce unexpected response variants.\n\nMitigation: Discover the installed command help and current API reference before building requests, and stop on unresolved contract mismatches.\n\nRisk: Incomplete verification can miss missing, empty, or wrong-type image or video deliverables.\n\nMitigation: Validate the complete response, download every requested media result, and check each file is non-empty with the expected MIME type or family.\n\n## Reference(s):\n\n- [RunAPI Midjourney model overview](https://runapi.ai/models/midjourney)\n- [RunAPI Midjourney documentation](https://runapi.ai/models/midjourney.md)\n- [RunAPI Midjourney provider overview](https://runapi.ai/providers/midjourney.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [RunAPI Midjourney SDK](https://github.com/runapi-ai/midjourney-sdk)\n- [RunAPI publisher profile](https://clawhub.ai/user/runapi-ai)\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-midjourney)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance, Files]\n\n**Output Format:** [Markdown guidance with shell command blocks, JSON request and response handling, SDK code snippets, and downloaded media files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce image or video deliverables; non-media results should be preserved in the requested JSON, text, SRT, or VTT format.]\n\n## Skill Version(s):\n\n0.3.2 (source: release metadata)\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\nArchive v0.3.1: 3 files, 3597 bytes\n\nFiles: skill-card.md (2741b), SKILL.md (5345b), _meta.json (136b)\n\nFile v0.3.1:SKILL.md\n\n---\nname: midjourney\ndescription: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; prefer environment auth or saved CLI config.\n---\n\n# Midjourney On RunAPI\n\nUse the RunAPI CLI for one-off requests and manual verification. Use the target language SDK for applications, workers, libraries, and production integrations; never shell out to the CLI as an application runtime.\n\n## Critical: Integration Runtime\n\n- Integration work (app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production codebase) uses the **SDK integration path** for the target language.\n- One-off generation, editing, transformation, manual smoke tests, debugging, or user-requested CLI runs use the **CLI path** with the `runapi` binary. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill.\n- Never shell out to the `runapi` CLI as the production runtime integration layer.\n\n## SDK integration path\n\nWhen integrating Midjourney into an app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production workflow, check the current SDK package and official usage. Confirm install commands, client methods (`create`, `get`, `run`), request fields, response shape, and error classes before using CLI help or raw HTTP examples. Use a RunAPI SDK package:\n\n- JavaScript / TypeScript: `@runapi.ai/midjourney`\n- Python: `runapi-midjourney`\n- Ruby: `runapi-midjourney`\n- Go: `github.com/runapi-ai/midjourney-sdk/go`\n- Java: `ai.runapi:runapi-midjourney`\n- PHP: `runapi-ai/midjourney`\n\n## Variants\n\n- V8.1 text to image: generate an image grid from a text prompt.\n- Image editing: transform a source image with a prompt.\n- Image to video: animate a source image.\n- First-video extension: continue the first video from a completed image-to-video task in the current account.\n\n## CLI path\n\nThe `runapi` binary is the one-off and manual testing runtime dependency. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill. Run `runapi auth status` first. Prefer `RUNAPI_API_KEY` or import a token with `printf '%s' \"$RUNAPI_API_KEY\" | runapi auth import-token --token -`. Use browser login only when the user explicitly requests an interactive login.\n\nInspect current fields before creating a request:\n\n```shell\nrunapi midjourney --help\nrunapi midjourney text-to-image --help\nrunapi midjourney edit-image --help\nrunapi midjourney image-to-video --help\nrunapi midjourney extend-video --help\nrunapi midjourney image-to-prompt --help\nrunapi midjourney shorten-prompt --help\nrunapi midjourney get-seed --help\n```\n\n## Asynchronous Requests\n\n`text-to-image`, `edit-image`, `image-to-video`, and `extend-video` are asynchronous. Run them directly to create and poll, or add `--async` and wait separately.\n\n```shell\nrunapi midjourney text-to-image --input-file text-to-image.json\nrunapi midjourney edit-image --async --input-file edit-image.json\nrunapi wait <task-id> --service midjourney --action edit-image\nrunapi midjourney image-to-video --input-file image-to-video.json\nrunapi midjourney extend-video --input-file extend-video.json\n```\n\nUse `midjourney-v8.1` for text-to-image, `midjourney-edit-image` for edits, and `midjourney-image-to-video` for image-to-video. Image and video input URLs must be publicly fetchable.\n\n`extend-video` requires `source_task_id` from a completed direct `image-to-video` task owned by the current account. It extends only that task's first video. Do not pass a video ID, index, model, resolution, or another extension task.\n\n## Synchronous Helpers\n\n`image-to-prompt`, `shorten-prompt`, and `get-seed` return in one request. Do not add `--async` and do not call `runapi wait` for them.\n\n```shell\nrunapi midjourney image-to-prompt --input-file image-to-prompt.json\nrunapi midjourney shorten-prompt --input-file shorten-prompt.json\nrunapi midjourney get-seed --input-file get-seed.json\n```\n\n`get-seed` accepts only an `image_id` returned by a completed Midjourney text-to-image or edit-image task owned by the current account.\n\n## Result Handling\n\nCompleted image tasks return `images` and may return `image_id`, `actions`, and `progress`. Completed video tasks return `videos` and may return `video_id` and `progress`. Generated media URLs are temporary; download and store them in durable storage.\n\n## References\n\n- Model overview: https://runapi.ai/models/midjourney.md\n- V8.1 text-to-image: https://runapi.ai/models/midjourney/v8.1.md\n- Image editing: https://runapi.ai/models/midjourney/edit-image.md\n- Image to video: https://runapi.ai/models/midjourney/image-to-video.md\n- Provider page: https://runapi.ai/providers/midjourney.md\n- Full catalog: https://runapi.ai/models.md\n\nFile v0.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.3.1\",\n  \"publishedAt\": 1786370899597\n}\n\nFile v0.3.1:skill-card.md\n\n## Description:\n\nGenerate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to generate Midjourney images and videos, edit images, obtain prompt suggestions, shorten prompts, and retrieve seeds through RunAPI. It guides agents toward SDK-based application integrations and CLI-based one-off or manual verification workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: RunAPI and Midjourney process prompts, generated-media requests, and publicly fetchable image or video input URLs.\n\nMitigation: Use only content appropriate for the external service, and avoid private images, videos, or sensitive prompt content unless approved for that service.\n\nRisk: Production integrations that shell out to the CLI can be brittle and harder to operate.\n\nMitigation: Use the language SDK path for applications, backends, workers, libraries, and production workflows; reserve the CLI for one-off tasks and manual verification.\n\nRisk: Generated media URLs are temporary.\n\nMitigation: Download and store required generated images or videos in durable storage before the URLs expire.\n\n## Reference(s):\n\n- [RunAPI Midjourney homepage](https://runapi.ai/models/midjourney)\n- [RunAPI Midjourney model overview](https://runapi.ai/models/midjourney.md)\n- [Midjourney V8.1 text-to-image](https://runapi.ai/models/midjourney/v8.1.md)\n- [Midjourney image editing](https://runapi.ai/models/midjourney/edit-image.md)\n- [Midjourney image to video](https://runapi.ai/models/midjourney/image-to-video.md)\n- [RunAPI Midjourney provider page](https://runapi.ai/providers/midjourney.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, code, configuration]\n\n**Output Format:** [Markdown guidance with inline shell commands and SDK package identifiers]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May require the runapi binary, a RunAPI SDK, and RUNAPI_API_KEY or saved CLI authentication; generated media URLs are temporary.]\n\n## Skill Version(s):\n\n0.3.1 (source: release evidence)\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\nArchive v0.3.0: 3 files, 3579 bytes\n\nFiles: skill-card.md (2759b), SKILL.md (5345b), _meta.json (136b)\n\nFile v0.3.0:SKILL.md\n\n---\nname: midjourney\ndescription: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; prefer environment auth or saved CLI config.\n---\n\n# Midjourney On RunAPI\n\nUse the RunAPI CLI for one-off requests and manual verification. Use the target language SDK for applications, workers, libraries, and production integrations; never shell out to the CLI as an application runtime.\n\n## Critical: Integration Runtime\n\n- Integration work (app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production codebase) uses the **SDK integration path** for the target language.\n- One-off generation, editing, transformation, manual smoke tests, debugging, or user-requested CLI runs use the **CLI path** with the `runapi` binary. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill.\n- Never shell out to the `runapi` CLI as the production runtime integration layer.\n\n## SDK integration path\n\nWhen integrating Midjourney into an app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production workflow, check the current SDK package and official usage. Confirm install commands, client methods (`create`, `get`, `run`), request fields, response shape, and error classes before using CLI help or raw HTTP examples. Use a RunAPI SDK package:\n\n- JavaScript / TypeScript: `@runapi.ai/midjourney`\n- Python: `runapi-midjourney`\n- Ruby: `runapi-midjourney`\n- Go: `github.com/runapi-ai/midjourney-sdk/go`\n- Java: `ai.runapi:runapi-midjourney`\n- PHP: `runapi-ai/midjourney`\n\n## Variants\n\n- V8.1 text to image: generate an image grid from a text prompt.\n- Image editing: transform a source image with a prompt.\n- Image to video: animate a source image.\n- First-video extension: continue the first video from a completed image-to-video task in the current account.\n\n## CLI path\n\nThe `runapi` binary is the one-off and manual testing runtime dependency. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill. Run `runapi auth status` first. Prefer `RUNAPI_API_KEY` or import a token with `printf '%s' \"$RUNAPI_API_KEY\" | runapi auth import-token --token -`. Use browser login only when the user explicitly requests an interactive login.\n\nInspect current fields before creating a request:\n\n```shell\nrunapi midjourney --help\nrunapi midjourney text-to-image --help\nrunapi midjourney edit-image --help\nrunapi midjourney image-to-video --help\nrunapi midjourney extend-video --help\nrunapi midjourney image-to-prompt --help\nrunapi midjourney shorten-prompt --help\nrunapi midjourney get-seed --help\n```\n\n## Asynchronous Requests\n\n`text-to-image`, `edit-image`, `image-to-video`, and `extend-video` are asynchronous. Run them directly to create and poll, or add `--async` and wait separately.\n\n```shell\nrunapi midjourney text-to-image --input-file text-to-image.json\nrunapi midjourney edit-image --async --input-file edit-image.json\nrunapi wait <task-id> --service midjourney --action edit-image\nrunapi midjourney image-to-video --input-file image-to-video.json\nrunapi midjourney extend-video --input-file extend-video.json\n```\n\nUse `midjourney-v8.1` for text-to-image, `midjourney-edit-image` for edits, and `midjourney-image-to-video` for image-to-video. Image and video input URLs must be publicly fetchable.\n\n`extend-video` requires `source_task_id` from a completed direct `image-to-video` task owned by the current account. It extends only that task's first video. Do not pass a video ID, index, model, resolution, or another extension task.\n\n## Synchronous Helpers\n\n`image-to-prompt`, `shorten-prompt`, and `get-seed` return in one request. Do not add `--async` and do not call `runapi wait` for them.\n\n```shell\nrunapi midjourney image-to-prompt --input-file image-to-prompt.json\nrunapi midjourney shorten-prompt --input-file shorten-prompt.json\nrunapi midjourney get-seed --input-file get-seed.json\n```\n\n`get-seed` accepts only an `image_id` returned by a completed Midjourney text-to-image or edit-image task owned by the current account.\n\n## Result Handling\n\nCompleted image tasks return `images` and may return `image_id`, `actions`, and `progress`. Completed video tasks return `videos` and may return `video_id` and `progress`. Generated media URLs are temporary; download and store them in durable storage.\n\n## References\n\n- Model overview: https://runapi.ai/models/midjourney.md\n- V8.1 text-to-image: https://runapi.ai/models/midjourney/v8.1.md\n- Image editing: https://runapi.ai/models/midjourney/edit-image.md\n- Image to video: https://runapi.ai/models/midjourney/image-to-video.md\n- Provider page: https://runapi.ai/providers/midjourney.md\n- Full catalog: https://runapi.ai/models.md\n\nFile v0.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.3.0\",\n  \"publishedAt\": 1784760984983\n}\n\nFile v0.3.0:skill-card.md\n\n## Description: <br>\nGenerate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to integrate Midjourney through RunAPI for image generation, image editing, image-to-video, video extension, prompt derivation, prompt shortening, and seed lookup workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, API keys, and media URLs may be sent to RunAPI and downstream services during normal image and video generation. <br>\nMitigation: Confirm trust in RunAPI before installation, use environment authentication or saved CLI configuration, and avoid sending sensitive prompts or non-public media URLs unless authorized. <br>\nRisk: Generated media URLs are temporary, and some operations depend on account-owned task IDs or publicly fetchable input media. <br>\nMitigation: Download generated media to durable storage, verify task ownership before extension or seed lookup, and ensure input URLs are intentionally public. <br>\n\n\n## Reference(s): <br>\n- [RunAPI Midjourney model overview](https://runapi.ai/models/midjourney) <br>\n- [RunAPI Midjourney documentation](https://runapi.ai/models/midjourney.md) <br>\n- [Midjourney V8.1 text-to-image documentation](https://runapi.ai/models/midjourney/v8.1.md) <br>\n- [Midjourney image editing documentation](https://runapi.ai/models/midjourney/edit-image.md) <br>\n- [Midjourney image-to-video documentation](https://runapi.ai/models/midjourney/image-to-video.md) <br>\n- [RunAPI Midjourney provider page](https://runapi.ai/providers/midjourney.md) <br>\n- [RunAPI model catalog](https://runapi.ai/models.md) <br>\n- [RunAPI CLI skill guidance](https://github.com/runapi-ai/cli-skill) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Code, Configuration] <br>\n**Output Format:** [Markdown with inline shell commands, SDK package names, and integration guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce RunAPI CLI commands, SDK integration direction, request-field checks, and result-handling guidance.] <br>\n\n## Skill Version(s): <br>\n0.3.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v0.2.0: 3 files, 3488 bytes\n\nFiles: skill-card.md (2831b), SKILL.md (4872b), _meta.json (136b)\n\nFile v0.2.0:SKILL.md\n\n---\nname: midjourney\ndescription: Generate and edit images, create video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; prefer environment auth or saved CLI config.\n---\n\n# Midjourney On RunAPI\n\nUse the RunAPI CLI for one-off requests and manual verification. Use the target language SDK for applications, workers, libraries, and production integrations; never shell out to the CLI as an application runtime.\n\n## Critical: Integration Runtime\n\n- Integration work (app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production codebase) uses the **SDK integration path** for the target language.\n- One-off generation, editing, transformation, manual smoke tests, debugging, or user-requested CLI runs use the **CLI path** with the `runapi` binary. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill.\n- Never shell out to the `runapi` CLI as the production runtime integration layer.\n\n## SDK integration path\n\nWhen integrating Midjourney into an app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production workflow, check the current SDK package and official usage. Confirm install commands, client methods (`create`, `get`, `run`), request fields, response shape, and error classes before using CLI help or raw HTTP examples. Use a RunAPI SDK package:\n\n- JavaScript / TypeScript: `@runapi.ai/midjourney`\n- Python: `runapi-midjourney`\n- Ruby: `runapi-midjourney`\n- Go: `github.com/runapi-ai/midjourney-sdk/go`\n- Java: `ai.runapi:runapi-midjourney`\n- PHP: `runapi-ai/midjourney`\n\n## Variants\n\n- V8.1 text to image: generate an image grid from a text prompt.\n- Image editing: transform a source image with a prompt.\n- Image to video: animate a source image.\n\n## CLI path\n\nThe `runapi` binary is the one-off and manual testing runtime dependency. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill. Run `runapi auth status` first. Prefer `RUNAPI_API_KEY` or import a token with `printf '%s' \"$RUNAPI_API_KEY\" | runapi auth import-token --token -`. Use browser login only when the user explicitly requests an interactive login.\n\nInspect current fields before creating a request:\n\n```shell\nrunapi midjourney --help\nrunapi midjourney text-to-image --help\nrunapi midjourney edit-image --help\nrunapi midjourney image-to-video --help\nrunapi midjourney image-to-prompt --help\nrunapi midjourney shorten-prompt --help\nrunapi midjourney get-seed --help\n```\n\n## Asynchronous Requests\n\n`text-to-image`, `edit-image`, and `image-to-video` are asynchronous. Run them directly to create and poll, or add `--async` and wait separately.\n\n```shell\nrunapi midjourney text-to-image --input-file text-to-image.json\nrunapi midjourney edit-image --async --input-file edit-image.json\nrunapi wait <task-id> --service midjourney --action edit-image\nrunapi midjourney image-to-video --input-file image-to-video.json\n```\n\nUse `midjourney-v8.1` for text-to-image, `midjourney-edit-image` for edits, and `midjourney-image-to-video` for image-to-video. Image and video input URLs must be publicly fetchable.\n\n## Synchronous Helpers\n\n`image-to-prompt`, `shorten-prompt`, and `get-seed` return in one request. Do not add `--async` and do not call `runapi wait` for them.\n\n```shell\nrunapi midjourney image-to-prompt --input-file image-to-prompt.json\nrunapi midjourney shorten-prompt --input-file shorten-prompt.json\nrunapi midjourney get-seed --input-file get-seed.json\n```\n\n`get-seed` accepts only an `image_id` returned by a completed Midjourney text-to-image or edit-image task owned by the current account.\n\n## Result Handling\n\nCompleted image tasks return `images` and may return `image_id`, `actions`, and `progress`. Completed video tasks return `videos` and may return `video_id` and `progress`. Generated media URLs are temporary; download and store them in durable storage.\n\n## References\n\n- Model overview: https://runapi.ai/models/midjourney.md\n- V8.1 text-to-image: https://runapi.ai/models/midjourney/v8.1.md\n- Image editing: https://runapi.ai/models/midjourney/edit-image.md\n- Image to video: https://runapi.ai/models/midjourney/image-to-video.md\n- Provider page: https://runapi.ai/providers/midjourney.md\n- Full catalog: https://runapi.ai/models.md\n\nFile v0.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.2.0\",\n  \"publishedAt\": 1784547742247\n}\n\nFile v0.2.0:skill-card.md\n\n## Description: <br>\nGenerate and edit images, create video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and external users use this skill to guide Midjourney image, image-editing, image-to-video, prompt-shortening, image-to-prompt, and seed lookup workflows through RunAPI. It distinguishes one-off CLI usage from SDK integration for applications and production services. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, media URLs, and generated media are processed through external RunAPI and Midjourney services. <br>\nMitigation: Use the skill only when that external processing is acceptable, and avoid submitting sensitive private images or prompts unless they are intended for that provider. <br>\nRisk: The optional RUNAPI_API_KEY can authorize service usage if exposed. <br>\nMitigation: Keep the API key in environment or saved CLI authentication, do not commit it, and avoid pasting it into shared logs or prompts. <br>\nRisk: Generated image and video URLs may be temporary. <br>\nMitigation: Download and store completed media in durable storage when the output must be retained. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/runapi-ai/skills/runapi-midjourney) <br>\n- [RunAPI Midjourney Model Overview](https://runapi.ai/models/midjourney) <br>\n- [RunAPI Midjourney Documentation](https://runapi.ai/models/midjourney.md) <br>\n- [Midjourney V8.1 Text-to-Image](https://runapi.ai/models/midjourney/v8.1.md) <br>\n- [Midjourney Image Editing](https://runapi.ai/models/midjourney/edit-image.md) <br>\n- [Midjourney Image to Video](https://runapi.ai/models/midjourney/image-to-video.md) <br>\n- [RunAPI Midjourney Provider Page](https://runapi.ai/providers/midjourney.md) <br>\n- [RunAPI Model Catalog](https://runapi.ai/models.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Code, Shell commands, Configuration instructions] <br>\n**Output Format:** [Markdown with inline shell commands and SDK package guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include RunAPI CLI commands, SDK package names, request-shape checks, and result-handling guidance.] <br>\n\n## Skill Version(s): <br>\n0.2.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v0.1.0: 3 files, 3389 bytes\n\nFiles: skill-card.md (2682b), SKILL.md (4736b), _meta.json (136b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: midjourney\ndescription: Generate and edit images, create video from images, derive prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; prefer environment auth or saved CLI config.\n---\n\n# Midjourney On RunAPI\n\nUse the RunAPI CLI for one-off requests and manual verification. Use the target language SDK for applications, workers, libraries, and production integrations; never shell out to the CLI as an application runtime.\n\n## Critical: Integration Runtime\n\n- Integration work (app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production codebase) uses the **SDK integration path** for the target language.\n- One-off generation, editing, transformation, manual smoke tests, debugging, or user-requested CLI runs use the **CLI path** with the `runapi` binary. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill.\n- Never shell out to the `runapi` CLI as the production runtime integration layer.\n\n## SDK integration path\n\nWhen integrating Midjourney into an app, backend, worker, library, Rails service, Node service, Go service, webhook pipeline, or production workflow, check the current SDK package and official usage. Confirm install commands, client methods (`create`, `get`, `run`), request fields, response shape, and error classes before using CLI help or raw HTTP examples. Use a RunAPI SDK package:\n\n- JavaScript / TypeScript: `@runapi.ai/midjourney`\n- Python: `runapi-midjourney`\n- Ruby: `runapi-midjourney`\n- Go: `github.com/runapi-ai/midjourney-sdk/go`\n- Java: `ai.runapi:runapi-midjourney`\n- PHP: `runapi-ai/midjourney`\n\n## Variants\n\n- V8.1 text to image: generate an image grid from a text prompt.\n- Image editing: transform a source image with a prompt.\n- Image to video: animate a source image.\n\n## CLI path\n\nThe `runapi` binary is the one-off and manual testing runtime dependency. For full CLI-specific agent guidance, see https://github.com/runapi-ai/cli-skill. Run `runapi auth status` first. Prefer `RUNAPI_API_KEY` or import a token with `printf '%s' \"$RUNAPI_API_KEY\" | runapi auth import-token --token -`. Use browser login only when the user explicitly requests an interactive login.\n\nInspect current fields before creating a request:\n\n```shell\nrunapi midjourney --help\nrunapi midjourney text-to-image --help\nrunapi midjourney edit-image --help\nrunapi midjourney image-to-video --help\nrunapi midjourney image-to-prompt --help\nrunapi midjourney get-seed --help\n```\n\n## Asynchronous Requests\n\n`text-to-image`, `edit-image`, and `image-to-video` are asynchronous. Run them directly to create and poll, or add `--async` and wait separately.\n\n```shell\nrunapi midjourney text-to-image --input-file text-to-image.json\nrunapi midjourney edit-image --async --input-file edit-image.json\nrunapi wait <task-id> --service midjourney --action edit-image\nrunapi midjourney image-to-video --input-file image-to-video.json\n```\n\nUse `midjourney-v8.1` for text-to-image, `midjourney-edit-image` for edits, and `midjourney-image-to-video` for image-to-video. Image and video input URLs must be publicly fetchable.\n\n## Synchronous Helpers\n\n`image-to-prompt` and `get-seed` return in one request. Do not add `--async` and do not call `runapi wait` for them.\n\n```shell\nrunapi midjourney image-to-prompt --input-file image-to-prompt.json\nrunapi midjourney get-seed --input-file get-seed.json\n```\n\n`get-seed` accepts only an `image_id` returned by a completed Midjourney text-to-image or edit-image task owned by the current account.\n\n## Result Handling\n\nCompleted image tasks return `images` and may return `image_id`, `actions`, and `progress`. Completed video tasks return `videos` and may return `video_id` and `progress`. Generated media URLs are temporary; download and store them in durable storage.\n\n## References\n\n- Model overview: https://runapi.ai/models/midjourney.md\n- V8.1 text-to-image: https://runapi.ai/models/midjourney/v8.1.md\n- Image editing: https://runapi.ai/models/midjourney/edit-image.md\n- Image to video: https://runapi.ai/models/midjourney/image-to-video.md\n- Provider page: https://runapi.ai/providers/midjourney.md\n- Full catalog: https://runapi.ai/models.md\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1784283850449\n}\n\nFile v0.1.0:skill-card.md\n\n## Description: <br>\nGenerate and edit images, create image-to-video outputs, derive prompt suggestions, and look up seeds with Midjourney through RunAPI. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to choose RunAPI CLI or SDK paths for Midjourney image generation, editing, image-to-video, prompt extraction, and seed lookup workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, source media URLs, and generated task data are sent to an external RunAPI service. <br>\nMitigation: Confirm trust in RunAPI for the intended workflow and avoid sending private media through public URLs unless that sharing is intended. <br>\nRisk: CLI use may require a RunAPI API key or explicit account login. <br>\nMitigation: Use environment-based credentials or an explicit CLI login, and avoid exposing tokens in prompts, commands, logs, or shared files. <br>\nRisk: Image and video inputs may need publicly fetchable URLs, and generated media URLs may be temporary. <br>\nMitigation: Use only intended public input assets and download generated media to durable storage when results must be retained. <br>\n\n\n## Reference(s): <br>\n- [RunAPI Midjourney homepage](https://runapi.ai/models/midjourney) <br>\n- [RunAPI Midjourney model overview](https://runapi.ai/models/midjourney.md) <br>\n- [Midjourney V8.1 text-to-image](https://runapi.ai/models/midjourney/v8.1.md) <br>\n- [Midjourney image editing](https://runapi.ai/models/midjourney/edit-image.md) <br>\n- [Midjourney image-to-video](https://runapi.ai/models/midjourney/image-to-video.md) <br>\n- [RunAPI Midjourney provider page](https://runapi.ai/providers/midjourney.md) <br>\n- [RunAPI model catalog](https://runapi.ai/models.md) <br>\n- [RunAPI CLI skill guidance](https://github.com/runapi-ai/cli-skill) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Code, Configuration] <br>\n**Output Format:** [Markdown with inline shell commands and package names] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May require the runapi binary and optional RUNAPI_API_KEY for CLI-based tasks.] <br>\n\n## Skill Version(s): <br>\n0.1.0 (source: release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>","readmeExcerpt":"Skill: midjourney Owner: runapi-ai Summary: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration. Tags: latest:0.3.3 Version history: v0.3.3 | 2026-09-04T11:36:22.823Z | user Changed - Document terminal responses, 202 acceptance, and Tas","codeSnippets":[],"executableExamples":[{"language":"shell","snippet":"curl --fail --location https://runapi.ai/docs/api/midjourney/<operation>.md --output contract.md"},{"language":"shell","snippet":"runapi auth status > auth.json\njq -e '.authenticated == true' auth.json\nrunapi midjourney --help\nrunapi midjourney <operation> --help\ncurl --fail --location https://runapi.ai/docs/api/midjourney/<operation>.md --output contract.md"},{"language":"shell","snippet":"jq empty request.json"},{"language":"shell","snippet":"runapi midjourney <operation> --async --input-file request.json > task.json\ntask_id=\"$(jq -er '.id' task.json)\"\nrunapi wait \"$task_id\" --service midjourney --action <operation> > result.json"},{"language":"shell","snippet":"runapi midjourney <operation> --input-file request.json > result.out"},{"language":"shell","snippet":"curl --fail --location <deliverable-url> --output <downloaded-file>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: midjourney\ndescription: \"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration.\"\ndocumentation: https://runapi.ai/models/midjourney.md\nprovider_page: https://runapi.ai/providers/midjourney.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/midjourney\n    requires:\n      bins:\n      - runapi\n    install:\n    - kind: brew\n      formula: runapi-ai/tap/runapi\n      bins:\n      - runapi\n    envVars:\n    - name: RUNAPI_API_KEY\n      required: false\n      description: Optional RunAPI API key; agents should prefer environment auth or saved CLI config. Browser login is interactive fallback only.\n---\n\n# Midjourney on RunAPI\n\n## Choose route\n\n- For a one-off artifact or result, use the registered `midjourney` service in the `runapi` CLI. If the installed command catalog does not list it, stop and report the missing service instead of inventing a command.\n- For an app, backend, worker, library, webhook pipeline, or production codebase, go directly to **Integrate with SDK**. Never shell out to the CLI as the production runtime.\n\n## Discover contract\n\nAuthenticate, then inspect the installed command catalog and the selected operation's current contract:\n\n```shell\nrunapi auth status > auth.json\njq -e '.authenticated == true' auth.json\nrunapi midjourney --help\nrunapi midjourney <operation> --help\ncurl --fail --location https://runapi.ai/docs/api/midjourney/<operation>.md --output contract.md\n```\n\nIf authentication is false, stop before submitting. Ask the user to provide a valid `RUNAPI_API_KEY`, or import a user-provided key from stdin with `runapi auth import-token --token -`; use interactive browser login only when the user explicitly requests it. Choose `<operation>` only from service help. Treat command help as authoritative for the installed operation, model, and top-level field roster. Treat its API Reference as authoritative for the complete request schema, nested fields, conditional rules, task behavior, and response variants. If the two surfaces disagree, stop and report the contract mismatch instead of guessing.\n\n## Build request\n\nCreate `request.json` as valid JSON using only fields accepted by the discovered operation contract. For the chosen model and values, evaluate every applicable conditional rule as a set: satisfy every required field, omit every forbidden field, and stop on unresolved contradictions.\n\nTraverse nested objects and arrays before execution. Close every relationship stated by the discovered contract, including uniqueness constraints and cross-references between nested values.\n\nFor a discovered local media input, including file-typed fields and top-level media URL fields, put an agent-readable local file path directly in `request.json`. The CLI consumes file fields as declared and uploads local"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-midjourney\",\n  \"version\": \"0.3.3\",\n  \"publishedAt\": 1788521782823\n}"},{"path":"skill-card.md","content":"## Description:\n\nGenerate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI, using the RunAPI CLI for one-off work and language SDKs for application integration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to perform Midjourney generation, editing, video, prompt, and seed tasks through RunAPI as either one-off CLI jobs or SDK-backed application integrations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and selected input media may be sent to RunAPI.\n\nMitigation: Use only approved inputs and avoid sending sensitive or proprietary media unless that data sharing is authorized.\n\nRisk: Generated RunAPI jobs may incur costs.\n\nMitigation: Submit each job once, retry only under the skill's stated safe-retry conditions, and get user authorization before replacing a paid request.\n\nRisk: API credentials could be exposed if handled directly in prompts, files, or logs.\n\nMitigation: Use RUNAPI_API_KEY or a trusted CLI auth flow, and avoid embedding credentials in request files or command output.\n\nRisk: A request can become invalid if the installed CLI contract and API reference differ or change.\n\nMitigation: Inspect the current CLI help and API reference before building requests, and stop on contract mismatches instead of guessing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-midjourney)\n- [RunAPI Midjourney model homepage](https://runapi.ai/models/midjourney)\n- [RunAPI Midjourney model documentation](https://runapi.ai/models/midjourney.md)\n- [RunAPI Midjourney provider overview](https://runapi.ai/providers/midjourney.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [RunAPI Midjourney SDK](https://github.com/runapi-ai/midjourney-sdk)\n- [Midjourney edit image variant](https://runapi.ai/models/midjourney/edit-image.md)\n- [Midjourney image to video variant](https://runapi.ai/models/midjourney/image-to-video.md)\n- [Midjourney v8.1 variant](https://runapi.ai/models/midjourney/v8.1.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands, JSON request files, SDK integration direction, and validation steps]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce or verify image and video media deliverables through RunAPI responses.]\n\n## Skill Version(s):\n\n0.3.3 (source: server release metadata)\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":"Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration. Skill: midjourney Owner: runapi-ai Summary: Generate and edit images, create or extend video from images, derive or shorten prompt suggestions, and look up seeds with Midjourney through RunAPI. Use the RunAPI CLI for one-off work and the language SDKs for application integration. Tags: latest:0.3.3 Version history: v0.3.3 | 2026-09-04T11:36:22.823Z | user Changed - Document terminal responses, 202 acceptance, and Tas","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1237,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T16:50:43.991Z","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-11T16:50:43.991Z","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-11T20:56:27.507Z","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"}]}}}