Skip to main content
    SeamUI LogoSeamUI
    ProductPricingFAQ
    ModelsGuides
    Sign inStart free trial
    Host qualification pending

    Finite MCP recipes

    These instructions use public MCP tools. They do not execute a workflow. Manual Host and provider qualification is pending. Release: 3.0.0+mcp.2026-10-05.1.

    Check current availability and input schemas in the capability catalog. Project creation is implemented and owner-gated pending its prerequisites and qualification. These recipes use an existing Project. Planned capabilities are unavailable.

    • Generate a finite batch of images or videos
    • Build a finite sequence of connected video segments
    • Regenerate or vary an existing image or video

    Confirmation and recovery

    The assistant acts without a SeamUI confirmation, under the permission granted when the Connection was created and revocable at any time from the account page. Before a request of 4 images or videos or more, it gives you the count and waits for your yes: SeamUI refuses to start them until the assistant has asked. Past 500 images per Workspace in one hour, SeamUI stops and the assistant needs your yes again for each further 500. Your assistant app decides which tool calls it asks you to approve. Keep action identifiers private; never paste keys or tokens into logs or support messages.

    Follow returned polling guidance, with at most five reads or 60 seconds per wait. Stop on terminal, unresolved, unknown, unavailable or expired evidence. No automatic resend. Unknown delivery is neither success nor failure. A later authorized status check has a new finite wait budget and starts no work.

    Generate a finite batch of images or videos

    Run many independent images or videos as ordinary direct calls, one idempotent action per item, then check each result.

    Each step runs directly, without a SeamUI confirmation, once you have confirmed a large request.

    1. Count the whole batch first: imageCount images per images.generate call, or one per prompt with onePromptOneImage, times imagesPerRequestedImage when the catalog route lists it, and one per videos.generate call. At 4 images or videos or more, give the User the count, say it bills their own provider account, and wait for an explicit yes before the first call. Send that count as requestTotal on every call. SeamUI refuses from 4 and starts nothing until the agent resends with the costConfirmation code its refusal gives; send that code with every call of the batch. Past 500 images per Workspace in one rolling hour, SeamUI refuses again: ask the User, then resend the same call with its hourlyLimitConfirmation code. Each confirmation allows 500 more.
    2. catalog.models: Choose one current route per item, with supported settings and limits.
    3. projects.list: Choose an actual returned Project ID in the connected Workspace.
    4. images.generate: For each image item, call images.generate with that projectId, its own prompt and settings, and its own new idempotencyKey. Build the list yourself, for example one call per row of a table the User gave you. Prompts that share the same model, settings and references can go in one call with onePromptOneImage: one image per prompt. Keep every key and returned actionId.
    5. videos.generate: For each video item, call videos.generate with its exact input and its own new idempotencyKey. Independent videos may run in parallel. Keep every key and returned actionId.
    6. actions.result: After response loss, recover one item through actions.result with its capability and original idempotencyKey. Never resend an item whose delivery is unknown.
    7. assets.status: Read the returned actual assetIds in groups of up to 100. Follow returned polling guidance: wait at least 2 seconds, back off through 4, 8, 16 and 30 seconds, and stop after five reads or 60 seconds, whichever comes first. Report created, failed, pending and unknown items separately, with the url of each created item.

    Build a finite sequence of connected video segments

    Create each segment from an actual frame and optionally merge them under one revocable Connection delegation.

    Each step runs directly, without a SeamUI confirmation, once you have confirmed a large request.

    1. catalog.models: Choose current video routes, supported source slots, settings and limits, and a finite segment count from 1 to 8. This is one composed final video, not a batch of independent final videos. At 4 segments or more, give the User the count, say each segment bills their own provider account, and wait for an explicit yes before the first segment. Send the segment count as requestTotal on every segment call, with the costConfirmation code SeamUI gives.
    2. projects.list: Choose an actual returned Project ID in the connected Workspace.
    3. videos.generate: Generate the first segment with that projectId, input.model, input.provider, input.prompt, input.filledSlotKeys, input.settings, exact named stored attachments and a new idempotencyKey. Keep the key and returned actionId. After response loss, recover through actions.result with the key and videos.generate capability. To use a local or online file as an input, first store it with references.upload or references.import and bind the returned source as kind=stored.
    4. assets.status: Read the returned actual assetIds. Follow returned polling guidance: wait at least 2 seconds, back off through 4, 8, 16 and 30 seconds, and stop after five reads or 60 seconds, whichever comes first. Proceed only when one verified created video supplies its actual Asset ID. Stop on failed, unresolved, unknown or unavailable evidence. No automatic resend.
    5. videos.extract-frame: If another segment remains, call {assetId: the actual created video ID, position: last, idempotencyKey: a new key}. Retain this extraction's key and actionId.
    6. assets.status: Read the extraction's actual Asset ID within the same five-read or 60-second budget and polling backoff. Continue only with its verified created image Asset ID. Stop on terminal failure or any unknown or unavailable evidence.
    7. videos.generate: For the next segment, bind that actual image ID in a supported slot using kind=stored and source={type:asset,id:the returned image ID}. Give each new operation a new idempotencyKey, and keep that key across transport retries. Repeat only to the finite segment count and retain created video IDs in order.
    8. videos.edit: Optionally call {op:merge,assetIds:the 2 to 8 actual created video IDs in order,audio:the chosen boolean,name:the optional exact name,idempotencyKey:a new key}. The merge does not count toward the confirmation. A one-segment sequence needs no merge.
    9. assets.status: Verify the merge's returned Asset ID within the same bounded wait, or keep the verified segment if no merge was requested. Unknown delivery stops the sequence. If the budget ends, report current state and retain identifiers for a later authorized status check; do not repeat the action automatically.
    10. assets.content: Give the User the final video's url and posterUrl from assets.status: they are its public permanent media URLs. Only when the Host needs the bytes themselves, request the poster and metadata, then an inline original when accepted by the size bound; otherwise request consecutive authenticated chunks with nextOffset, objectVersion and objectEtag, verifying each SHA-256 and the total length.

    Regenerate or vary an existing image or video

    Read the prompt, settings and references that produced an Asset, then run the same generation again with the User's changes.

    Each step runs directly, without a SeamUI confirmation, once you have confirmed a large request.

    1. assets.list: Find the Asset the User means, newest first, filtered by type or Project.
    2. assets.generation.read: Read its generation. On status not_generated, read the generation of its sourceAssetIds instead. On expired, say the prompt is no longer kept. Show the prompt and references when the User only asked what made it.
    3. images.generate: When reuse.tool is images.generate, call it with reuse.arguments, the User's changes to the prompt, settings or references, an actual projectId when it is null, and a new idempotencyKey. leftOut counts references that are no longer stored.
    4. videos.generate: When reuse.tool is videos.generate, do the same with its input and named stored attachments. Without reuse, pick a current route from catalog.models and bind the reusable references yourself.
    5. assets.status: Read the returned assetIds with the usual polling guidance and give the User the url of each created Asset. Never resend uncertain work.
    About SeamUI MCPSetup, eligibility and Connection revocation

    Product

    • The workspace
    • Pricing
    • FAQ
    • Image & video models
    • MCP for assistants
    • Prompt inspirations
    • Free AI image generator
    • Free AI video generator
    • Kie.ai
    • Pixazo.ai
    • Alternatives & comparisons
    • Partners
    • Affiliate program

    Use cases

    • For agencies
    • For Shopify sellers
    • For Etsy sellers
    • For Amazon sellers
    • For course creators
    • For Instagram creators
    • For LinkedIn creators
    • For real estate
    • For TikTok creators

    Guides

    • ChatGPT guides
    • Gemini guides
    • Grok guides
    • AI video guides
    • AI workflow guides
    • All guides

    Popular questions

    • How do I batch generate images with ChatGPT?
    • How many images can ChatGPT generate per day?
    • How do I use reference images in ChatGPT?
    • Can I use ChatGPT images commercially?
    • Can ChatGPT generate images from a spreadsheet?

    SeamUI © 2026 SeamUI. Pay once, create forever.

    Sign inPrivacyTermsContactSitemap
    SeamUI