MakeViral

Find the newest viral AI video trend templates and make them from your photos or a prompt.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
88%
命名品質
99%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~6,831Token(工具定義)
~4.1 KB典型回應大小
顯著的注意力影響(128k 上下文的 5.34%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "makeviral": {
      "url": "https://www.makeviral.ai/mcp"
    }
  }
}

遠端端點

https://www.makeviral.ai/mcpstreamable-http

它能做什麼

工具清單

工具(14)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢search_templates(query, subject, output, season, limit)

Find MakeViral trend templates: viral AI video and photo trends (knight cat, hotel lobby walk, Halloween costumes, dance reels...) that turn the user's own photos of themselves, their partner, friends or pets into a short video or photo. Use it when the user wants a trend video, asks what they can make from a photo, or names a TikTok or Instagram trend. Results are sorted by popularity and show an example clip, the photos needed and the price in MakeViral credits. With no query it returns the most popular templates. Suggest a few that fit and say that each one costs credits from the user's MakeViral account, then use get_template when the user picks one.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Words for the trend or idea, e.g. 'knight cat', 'halloween couple', 'dance'"
    },
    "subject": {
      "type": "string",
      "enum": [
        "person",
        "pet",
        "couple",
        "group",
        "product"
      ],
      "description": "Who or what is in the photos (product = a brand ad from a product photo and a logo)"
    },
    "output": {
      "type": "string",
      "enum": [
        "photo",
        "video"
      ]
    },
    "season": {
      "type": "string",
      "description": "e.g. 'halloween'"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 8
    }
  },
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "templates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "alsoKnownAs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fromCredits": {
            "type": "number"
          },
          "outputs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subjects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pageUrl": {
            "type": "string"
          },
          "versions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "slug",
          "name"
        ]
      }
    },
    "account": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "number"
        }
      },
      "required": [
        "credits"
      ]
    }
  },
  "required": [
    "templates"
  ]
}
🟢get_template(slug)

Show one MakeViral template: what it makes, its versions (for example solo, with a friend, with a pet), the photos each version needs in order, quality options, optional 'make it yours' fields, the price in credits, the user's credit balance when signed in, and an example clip. Use it when the user names or picks one template. Call it before run_template so you pass the right version and photos, and tell the user the price in credits.

輸入結構描述

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Template slug from search_templates, e.g. 'knight-cat-ai-video'"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "template": {
      "type": "object"
    },
    "account": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "number"
        }
      },
      "required": [
        "credits"
      ]
    }
  },
  "required": [
    "template"
  ]
}
🔴run_template(template, version, quality, photos, photoUrls, ...)

Make a MakeViral trend video or photo from the user's photos. It spends the version's credits from the user's MakeViral account (a failed run gives them all back). A photo is usually ready in this call and the result has the link. A video takes a few minutes: then call get_run with wait true until it is ready, and give the user the link. Before calling: 1) pick the template and version with get_template, 2) tell the user the price in credits, 3) ask for exactly the photos that version needs, in its order, 4) ask the user to confirm the people in the photos are them or people who agreed, and that no one in them is a child. Photos: pass the files the user attached in this chat as `photos`, OR public image links as `photoUrls`, OR an `uploadId` from create_upload_link when the user cannot attach files here. Never use photos of a public figure or of someone who did not agree.

輸入結構描述

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "description": "Template slug, e.g. 'knight-cat-ai-video'"
    },
    "version": {
      "type": "string",
      "description": "Version id from get_template. Default 'main'."
    },
    "quality": {
      "type": "string",
      "description": "Quality option id from get_template. Default: the template's default option (listed first)."
    },
    "photos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 4,
      "description": "The user's photos attached in the chat, in the version's photo order"
    },
    "photoUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "description": "Public https links to the photos (JPEG, PNG or WebP), in the version's photo order"
    },
    "uploadId": {
      "type": "string",
      "description": "The id from create_upload_link, after the user added the photos there"
    },
    "fields": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "value"
        ],
        "additionalProperties": false
      },
      "description": "Optional 'make it yours' values: one { id, value } per field id that get_template lists"
    },
    "object": {
      "type": "object",
      "properties": {
        "pick": {
          "type": "string"
        },
        "text": {
          "type": "string",
          "maxLength": 60
        }
      },
      "additionalProperties": false,
      "description": "Knight sword swap only: the object one knight hands the other"
    },
    "photosConsent": {
      "type": "boolean",
      "description": "true only after the user confirmed that everyone in the photos is the user or agreed to it, and that no one is a child"
    },
    "requestId": {
      "type": "string",
      "description": "Optional id (8-64 letters, digits, - or _). The same id never charges twice. Without it, the same request within 10 minutes returns the first run; pass a new id to make it again with the same photos."
    }
  },
  "required": [
    "template",
    "photosConsent"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "run": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "processing",
            "completed",
            "failed"
          ]
        },
        "template": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "output": {
          "type": "string",
          "enum": [
            "photo",
            "video"
          ]
        },
        "resultUrl": {
          "type": "string"
        },
        "saveUrl": {
          "type": "string"
        },
        "previewUrl": {
          "type": "string"
        },
        "silentVideoUrl": {
          "type": "string"
        },
        "creditsCharged": {
          "type": "number"
        },
        "creditsRefunded": {
          "type": "number"
        },
        "error": {
          "type": "string"
        },
        "etaMinutes": {
          "type": "number"
        },
        "appUrl": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "status",
        "template",
        "name",
        "output"
      ]
    }
  },
  "required": [
    "run"
  ]
}
🟢get_run(runId, wait)

Check a MakeViral run started with run_template: its status, minutes left, and the finished video or photo link when it is ready. With wait true the call waits up to 40 seconds for the run to finish, so you can wait for the result in the same answer and then give the user the link.

輸入結構描述

{
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "description": "The run id from run_template, e.g. 'tr_ag...'"
    },
    "wait": {
      "type": "boolean",
      "description": "Wait up to 40 seconds for the run to finish before answering. Default false."
    }
  },
  "required": [
    "runId"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "run": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "processing",
            "completed",
            "failed"
          ]
        },
        "template": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "output": {
          "type": "string",
          "enum": [
            "photo",
            "video"
          ]
        },
        "resultUrl": {
          "type": "string"
        },
        "saveUrl": {
          "type": "string"
        },
        "previewUrl": {
          "type": "string"
        },
        "silentVideoUrl": {
          "type": "string"
        },
        "creditsCharged": {
          "type": "number"
        },
        "creditsRefunded": {
          "type": "number"
        },
        "error": {
          "type": "string"
        },
        "etaMinutes": {
          "type": "number"
        },
        "appUrl": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "status",
        "template",
        "name",
        "output"
      ]
    }
  },
  "required": [
    "run"
  ]
}
🟢list_runs(limit)

List the user's latest MakeViral template runs (newest first) with their status and result links.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "runs": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "runs"
  ]
}
🟢list_models(kind)

List the AI models of MakeViral Create (makeviral.ai/create): image models (Nano Banana, GPT Image, Seedream, Flux...) and video models (Seedance, Kling, Veo, Wan, Grok Imagine, MiniMax...) with what each takes and its lowest price in MakeViral credits. Use it when the user asks MakeViral for an image or a video from their own idea (not a trend template), wants a specific model such as Kling, Veo or Seedance, or asks which MakeViral model to use. Then use get_model for one model's full rules and prices, and create_image or create_video to make it.

輸入結構描述

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "image",
        "video"
      ],
      "description": "Only image models or only video models"
    }
  },
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "models": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "name": {
            "type": "string"
          },
          "maker": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "fromCredits": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "fromCredits"
        ]
      }
    },
    "account": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "number"
        }
      },
      "required": [
        "credits"
      ]
    }
  },
  "required": [
    "models"
  ]
}
🟢get_model(model, resolution, durationSec, count, referencePhotos, ...)

Show one MakeViral Create model: the shapes, sizes and lengths it makes, the photos, clips and sounds it takes, special inputs (end frame, multi-shot, elements, motion style), and the price in credits for every size and length. With resolution, durationSec and count it also gives the exact price of that choice, so you can tell the user before create_image or create_video.

輸入結構描述

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "enum": [
        "nano-banana-pro",
        "nano-banana-2-1",
        "nano-banana-2",
        "gpt-image-2-5",
        "seedream-5-pro",
        "flux-2-pro",
        "z-image",
        "seedance-2-5",
        "kling-3-pro",
        "kling-3-omni",
        "veo-3-1-fast",
        "wan-3",
        "minimax-h3",
        "seedance-2",
        "veo-3-1-quality",
        "veo-3-1-lite",
        "seedance-2-fast",
        "grok-imagine",
        "seedance-2-mini"
      ],
      "description": "Model id from list_models"
    },
    "resolution": {
      "type": "string",
      "description": "Optional, to price one choice: e.g. '2K' (image) or '720p' (video)"
    },
    "durationSec": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Optional, video length to price"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 4,
      "description": "Optional, how many to price"
    },
    "referencePhotos": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "description": "Optional, video reference photos (one model charges for more than 5)"
    },
    "clipSeconds": {
      "type": "number",
      "minimum": 0,
      "maximum": 120,
      "description": "Optional, seconds of a reference clip (they add to the price)"
    }
  },
  "required": [
    "model"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "model": {
      "type": "object"
    },
    "prices": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "quote": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "number"
        }
      }
    },
    "account": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "number"
        }
      },
      "required": [
        "credits"
      ]
    }
  },
  "required": [
    "model",
    "prices"
  ]
}
🔴create_image(model, prompt, photos, photoUrls, aspect, ...)

Make AI images from the user's prompt with a chosen MakeViral Create model, from text or from the user's photos (edit a photo, put a person in a new scene, combine photos). It spends credits from the user's MakeViral account (a failed image gives them back) and usually returns the finished image link in this call. Before calling: 1) pick the model (get_model gives its sizes and prices), 2) tell the user the price in credits, 3) when photos are used, ask the user to confirm the people in them are them or agreed, and that no one is a child. Photos: pass the files the user attached in this chat as `photos`, or public image links as `photoUrls`. Never use photos of a public figure or of someone who did not agree. Calling again with the same input within 10 minutes returns the first result; pass a new requestId to make more.

輸入結構描述

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "enum": [
        "nano-banana-pro",
        "nano-banana-2-1",
        "nano-banana-2",
        "gpt-image-2-5",
        "seedream-5-pro",
        "flux-2-pro",
        "z-image"
      ],
      "description": "Image model id (list_models). nano-banana-2 is a good default."
    },
    "prompt": {
      "type": "string",
      "description": "What the image shows, in the user's words, made clear and specific"
    },
    "photos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 10,
      "description": "The user's photos attached in the chat (references to edit or follow)"
    },
    "photoUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Public https links to photos (JPEG, PNG or WebP)"
    },
    "aspect": {
      "type": "string",
      "enum": [
        "9:16",
        "16:9",
        "1:1",
        "4:3",
        "3:4",
        "4:5",
        "3:2",
        "2:3",
        "21:9",
        "5:4"
      ],
      "description": "Shape. Default 9:16 (vertical, for TikTok and Reels)."
    },
    "resolution": {
      "type": "string",
      "enum": [
        "1K",
        "2K",
        "4K"
      ],
      "description": "Size. Default: the model's smallest (1K)."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 4,
      "description": "How many images (each one is charged). Default 1."
    },
    "transparentBackground": {
      "type": "boolean",
      "description": "GPT Image only, text only: a transparent background"
    },
    "photosConsent": {
      "type": "boolean",
      "description": "Needed with photos: true only after the user confirmed everyone in them is the user or agreed, and no one is a child"
    },
    "requestId": {
      "type": "string",
      "description": "Optional id (8-64 letters, digits, - or _). The same id never charges twice."
    }
  },
  "required": [
    "model",
    "prompt"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "creations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "completed",
              "failed"
            ]
          },
          "model": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "saveUrl": {
            "type": "string"
          },
          "previewUrl": {
            "type": "string"
          },
          "aspect": {
            "type": "string"
          },
          "resolution": {
            "type": "string"
          },
          "durationSec": {
            "type": "number"
          },
          "sound": {
            "type": "boolean"
          },
          "creditsCharged": {
            "type": "number"
          },
          "creditsRefunded": {
            "type": "number"
          },
          "error": {
            "type": "string"
          },
          "etaMinutes": {
            "type": "number"
          },
          "appUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "model",
          "modelName"
        ]
      }
    }
  },
  "required": [
    "creations"
  ]
}
🔴create_video(model, prompt, startFrame, startFrameUrl, endFrame, ...)

Make an AI video from the user's prompt with a chosen MakeViral Create model (Seedance, Kling, Veo, Wan, Grok Imagine, MiniMax...): from text, from a start frame photo (and an end frame on some models), or from references (photos, clips and sounds), with Kling multi-shot and elements. It spends credits from the user's MakeViral account (a failed video gives them back). A video takes a few minutes: this call returns at once, then call get_creation with wait true until it is ready and give the user the link. Before calling: 1) pick the model and check what it takes with get_model, 2) tell the user the price in credits, 3) with photos or clips, ask the user to confirm the people in them are them or agreed, and that no one is a child. Files: pass files the user attached in this chat (startFrame, endFrame, referencePhotos, referenceSounds), or public https links in the *Url fields. Clips must be links (MP4 or MOV). Never use photos of a public figure or of someone who did not agree. Calling again with the same input within 10 minutes returns the first video; pass a new requestId to make another.

輸入結構描述

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "enum": [
        "seedance-2-5",
        "kling-3-pro",
        "kling-3-omni",
        "veo-3-1-fast",
        "wan-3",
        "minimax-h3",
        "seedance-2",
        "veo-3-1-quality",
        "veo-3-1-lite",
        "seedance-2-fast",
        "grok-imagine",
        "seedance-2-mini"
      ],
      "description": "Video model id (list_models). seedance-2-5 is a good default."
    },
    "prompt": {
      "type": "string",
      "description": "What happens in the video. With references, name them as get_model says (e.g. [Image 1])."
    },
    "startFrame": {
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string",
          "description": "Temporary link to the file"
        },
        "file_id": {
          "type": "string"
        },
        "mime_type": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        }
      },
      "required": [
        "download_url",
        "file_id"
      ],
      "additionalProperties": false,
      "description": "The first frame: a photo the user attached in the chat"
    },
    "startFrameUrl": {
      "type": "string",
      "description": "The first frame as a public https photo link"
    },
    "endFrame": {
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string",
          "description": "Temporary link to the file"
        },
        "file_id": {
          "type": "string"
        },
        "mime_type": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        }
      },
      "required": [
        "download_url",
        "file_id"
      ],
      "additionalProperties": false,
      "description": "The last frame (models with an end frame), with a start frame"
    },
    "endFrameUrl": {
      "type": "string",
      "description": "The last frame as a public https photo link"
    },
    "referencePhotos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 9,
      "description": "Reference photos attached in the chat (people, products, a style). Never with frames."
    },
    "referencePhotoUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 9,
      "description": "Reference photos as public https links"
    },
    "referenceClips": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 3,
      "description": "Reference clips (MP4 or MOV) as files, where the chat can attach them"
    },
    "referenceClipUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 3,
      "description": "Reference clips as public https links to an MP4 or MOV file"
    },
    "referenceSounds": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 3,
      "description": "Reference sounds (MP3 or WAV) attached in the chat"
    },
    "referenceSoundUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 3,
      "description": "Reference sounds as public https links"
    },
    "clipMode": {
      "type": "string",
      "enum": [
        "edit",
        "reference"
      ],
      "description": "Kling Omni with a clip: 'edit' changes the clip itself (default), 'reference' makes a new video from it"
    },
    "keepClipSound": {
      "type": "boolean",
      "description": "With a clip: put the clip's own sound on the result"
    },
    "shots": {
      "type": "array",
      "minItems": 2,
      "maxItems": 6,
      "items": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string"
          },
          "durationSec": {
            "type": "integer",
            "minimum": 1,
            "maximum": 15
          }
        },
        "required": [
          "prompt",
          "durationSec"
        ],
        "additionalProperties": false
      },
      "description": "Kling multi-shot: each shot's prompt and length; they add up to the video length"
    },
    "autoShots": {
      "type": "boolean",
      "description": "Kling Omni: the model plans the shots itself"
    },
    "elements": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Lower case, e.g. 'mia'; write @mia in the prompt"
          },
          "description": {
            "type": "string",
            "description": "Who or what it is, in a few words"
          },
          "photoUrls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 4,
            "description": "2-4 public photo links of it"
          },
          "photoCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "description": "How many of elementPhotos belong to it, in order"
          }
        },
        "required": [
          "name",
          "description"
        ],
        "additionalProperties": false
      },
      "description": "Kling 3.0 elements: people or things from 2-4 photos each"
    },
    "elementPhotos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "download_url": {
            "type": "string",
            "description": "Temporary link to the file"
          },
          "file_id": {
            "type": "string"
          },
          "mime_type": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "required": [
          "download_url",
          "file_id"
        ],
        "additionalProperties": false
      },
      "maxItems": 12,
      "description": "The element photos attached in the chat, element by element in order"
    },
    "aspect": {
      "type": "string",
      "enum": [
        "9:16",
        "3:4",
        "1:1",
        "4:3",
        "16:9",
        "21:9",
        "2:3",
        "3:2"
      ],
      "description": "Shape. Default 9:16 (vertical). With a start frame most models follow the photo's shape."
    },
    "resolution": {
      "type": "string",
      "enum": [
        "480p",
        "720p",
        "1080p",
        "4k",
        "768p",
        "2k"
      ],
      "description": "Size. Default: the model's smallest."
    },
    "durationSec": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "description": "Length in seconds (get_model lists them). Default: the model's default."
    },
    "sound": {
      "type": "boolean",
      "description": "Sound on or off where the model has the choice. Default on."
    },
    "motion": {
      "type": "string",
      "enum": [
        "normal",
        "fun"
      ],
      "description": "Grok Imagine only"
    },
    "webSearch": {
      "type": "boolean",
      "description": "Seedance, text to video only: look things up online"
    },
    "seed": {
      "type": "integer",
      "minimum": 0,
      "description": "Wan only: repeat a result"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2,
      "description": "How many videos (each one is charged). Default 1."
    },
    "photosConsent": {
      "type": "boolean",
      "description": "Needed with photos or clips: true only after the user confirmed everyone in them is the user or agreed, and no one is a child"
    },
    "requestId": {
      "type": "string",
      "description": "Optional id (8-64 letters, digits, - or _). The same id never charges twice."
    }
  },
  "required": [
    "model"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "creations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "completed",
              "failed"
            ]
          },
          "model": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "saveUrl": {
            "type": "string"
          },
          "previewUrl": {
            "type": "string"
          },
          "aspect": {
            "type": "string"
          },
          "resolution": {
            "type": "string"
          },
          "durationSec": {
            "type": "number"
          },
          "sound": {
            "type": "boolean"
          },
          "creditsCharged": {
            "type": "number"
          },
          "creditsRefunded": {
            "type": "number"
          },
          "error": {
            "type": "string"
          },
          "etaMinutes": {
            "type": "number"
          },
          "appUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "model",
          "modelName"
        ]
      }
    }
  },
  "required": [
    "creations"
  ]
}
🟢get_creation(ids, id, wait)

Check images or videos started with create_image or create_video: status, minutes left, and the finished link when ready. With wait true the call waits up to 40 seconds for them to finish, so you can wait for the result in the same answer and then give the user the link.

輸入結構描述

{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 4,
      "description": "Ids from create_image or create_video, e.g. 'vid_...'"
    },
    "id": {
      "type": "string",
      "description": "One id (instead of ids)"
    },
    "wait": {
      "type": "boolean",
      "description": "Wait up to 40 seconds for them to finish. Default false."
    }
  },
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "creations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "completed",
              "failed"
            ]
          },
          "model": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "saveUrl": {
            "type": "string"
          },
          "previewUrl": {
            "type": "string"
          },
          "aspect": {
            "type": "string"
          },
          "resolution": {
            "type": "string"
          },
          "durationSec": {
            "type": "number"
          },
          "sound": {
            "type": "boolean"
          },
          "creditsCharged": {
            "type": "number"
          },
          "creditsRefunded": {
            "type": "number"
          },
          "error": {
            "type": "string"
          },
          "etaMinutes": {
            "type": "number"
          },
          "appUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "model",
          "modelName"
        ]
      }
    }
  },
  "required": [
    "creations"
  ]
}
🟢list_creations(limit, kind)

List the user's latest MakeViral Create images and videos (newest first) with their status and links. Template runs are in list_runs.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    },
    "kind": {
      "type": "string",
      "enum": [
        "image",
        "video"
      ]
    }
  },
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "creations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "completed",
              "failed"
            ]
          },
          "model": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "saveUrl": {
            "type": "string"
          },
          "previewUrl": {
            "type": "string"
          },
          "aspect": {
            "type": "string"
          },
          "resolution": {
            "type": "string"
          },
          "durationSec": {
            "type": "number"
          },
          "sound": {
            "type": "boolean"
          },
          "creditsCharged": {
            "type": "number"
          },
          "creditsRefunded": {
            "type": "number"
          },
          "error": {
            "type": "string"
          },
          "etaMinutes": {
            "type": "number"
          },
          "appUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "model",
          "modelName"
        ]
      }
    }
  },
  "required": [
    "creations"
  ]
}
🟢get_account

Show the signed-in MakeViral account: its first name and credit balance. Every run uses credits, so use it before a run when the price might be more than the balance.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "credits": {
      "type": "number"
    },
    "name": {
      "type": "string"
    },
    "infoUrl": {
      "type": "string"
    }
  },
  "required": [
    "credits"
  ]
}
🟡create_upload_link(template, version)

Make a one-hour link where the user adds the photos for a template on makeviral.ai (on any device). Use it when the user cannot attach photos in this chat. Give the user the link, wait until they say they are done, then call run_template with the returned uploadId.

輸入結構描述

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "description": "Template slug"
    },
    "version": {
      "type": "string",
      "description": "Version id. Default 'main'."
    }
  },
  "required": [
    "template"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "uploadId": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "slots": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "uploadId",
    "url"
  ]
}
🟡suggest_template(idea, link)

Send MakeViral a trend or idea that has no template yet, so the team can add it. Use it when search_templates finds nothing that fits what the user wants, and only after the user agrees. Include the TikTok or Instagram link of the trend when the user has one.

輸入結構描述

{
  "type": "object",
  "properties": {
    "idea": {
      "type": "string",
      "description": "The trend or idea in one or two sentences"
    },
    "link": {
      "type": "string",
      "description": "Optional https link to an example of the trend"
    }
  },
  "required": [
    "idea"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "received": {
      "type": "boolean"
    }
  },
  "required": [
    "received"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本14 個工具