account_status
ChatGPTGet the available generation credit balance and current subscription entitlements as JSON (data only — renders no UI).
Pollo AI helps users find supported models and voices, generate images, videos, speech, and music, edit existing media, upload generation inputs, and check generation progress from ChatGPT.
cloneAudioUrl, a public or host-authorized HTTPS URL of the reference recording (MP3, M4A or WAV, 10 seconds to 5 minutes, up to 20 MB) — if the user has a local recording, call upload_widget with mediaType: "audio" first and use the returned URL. voiceName is the label the user will see in their voice library. Cloning costs credits and runs in the background: it does NOT return a generation taskId, so do not call any status tool for it. Instead poll list_voices with source: "personal": the new voice has status disable while it is still processing (usually a few minutes), becomes enable once usable, or failed with a failMsg explaining why; a clone still processing after about an hour is marked failed. Only clone a voice the user has the right to use; do not clone a public figure or a third party from a recording the user does not own.{ type: "video-edit" } and pick one (e.g. brand runway, model runway-gen-4-aleph). input.video and input.prompt are required on every model; some also accept input.images as visual references, and several take input.resolution / input.aspectRatio / input.duration — check the model schema for those. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.{ type: "video-extend" } and pick one. For a video the user supplies, prefer a model that takes a source URL (e.g. brand pollo-ai, model pollo-v2-extender); openai/sora-2 can only continue a video previously generated on Pollo. Input differs by model — most take a source input.video URL and require `input.resolution` (540p/720p/1080p); openai/sora-2 instead requires input.generationId (a previous Pollo generation) plus input.prompt. input.prompt describes what happens next (required only on sora) and input.duration sets the added length. Check the model schema before composing — omitting a required resolution is the most common failure here. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.capability: - text2speech (default) — speak the text in a catalog voice. Default brand minimax, model speech-2-8-hd, which (like elevenlabs/eleven-v3) requires `input.voiceId`: call list_voices first and pass one of its voiceId values — never invent a voice id. Note bytedance/seed-audio-1-0 is the exception: on text2speech it takes reference recordings in input.voiceRefs and has no voiceId field at all, so passing one there is dropped. - ref2audio — clone the delivery from a short reference recording instead of a catalog voice: put the recording URL(s) in input.voiceRefs (up to 3; WAV/MP3/PCM/OGG, max 10 MB and 30 seconds each). voiceRefs is optional in the schema, but omitting it makes ref2audio pointless — it then just reads the text in the model's own default delivery. If the user has a local recording, call upload_widget with mediaType: "audio" first. Only brand bytedance, model seed-audio-1-0 offers it today. For a reusable voice the user can pick again later, prefer clone_voice + text2speech instead. Only use recordings of a voice the user has the right to use; do not imitate a public figure or a third party from a recording the user does not own. capability, brand and model are top-level tool arguments; generation parameters go inside input, where input.prompt (the script to speak) is required. Call list_models with { model, type: "<capability>" } when the user selects another model or you need its exact request schema, prompt length limit or option ranges — the limit differs per model. Before submitting, call account_status and estimate_generation_cost with type set to the same capability and the same brand, model and input; submit only when credit.availableCredits is at least discountCost — audio is billed per character, so a long script costs proportionally more. For a song or instrumental music rather than spoken narration, use generate_music instead. Each successful call submits one generation task and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.openai and model gpt-image-2-5 directly; it covers general image generation, text rendering, reference-image editing, and resolutions up to 4K. Call list_models with the selected model and capability type only when you need its fields or constraints; use type text2image or image2image. brand, model, and numOutputs are top-level tool arguments; generation parameters go inside input. For the default model, input.prompt is required, while input.images accepts up to 16 HTTPS image URLs and input.aspectRatio (default auto), input.resolution (default 1K, allowed 1K/2K/4K), and input.quality (default low) are optional. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each call submits one independent generation task. For several generations at once — different prompts, different inputs, or different models — call generate_image_batch once instead of calling this tool repeatedly: it submits up to 12 tasks together and returns a single card showing them side by side. numOutputs only creates multiple outputs of one identical input; it cannot vary the prompt or the model. If current entitlements are insufficient, explain only that the generation is unavailable.suno, model suno-v5-5 (suno-v5 and suno-v4-5plus are the alternatives; only suno-v5-5 accepts input.duration). Every call produces two songs from the same request and the result card shows both; there is no numOutputs. Two modes, chosen by which fields are present. Description mode: only input.prompt (required; max 3000 characters in this mode) describing the music, e.g. "warm lo-fi hip hop, rainy night, mellow piano". Lyrics mode: input.prompt holds the lyrics themselves (max 5000 characters) and you pass both input.style (genre / mood / vocal, max 1000) and input.title (max 80) — the two must be given together, giving only one is rejected. input.instrumental: true drops vocals; input.negativePrompt excludes styles; input.vocalGender is m or f (best effort). input.duration (10-360 seconds) works only on suno-v5-5 in lyrics mode. The 0-1 fine-tuning numbers input.styleWeight, input.weirdnessConstraint and input.audioWeight should be left out unless the user asks. For spoken narration use generate_audio instead. brand and model are top-level tool arguments; song parameters go inside input. Call list_models with { model, type: "text2music" } for the exact schema of another version. Before submitting, call account_status and estimate_generation_cost with type: "text2music" and the same brand, model and input; submit only when credit.availableCredits is at least discountCost — music is billed per song and the estimate already covers both songs. Each successful call submits one generation task and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.bytedance and model seedance-2-0 directly; it covers text-to-video, start/end-frame image-to-video, multimodal references, 4-15 second output, and resolutions up to 4K. Call list_models with the selected model and capability type when the user selects another model, provides reference media, or you need its fields or constraints; use type text2video, image2video, or ref2video. brand, model, and numOutputs are top-level tool arguments; generation parameters go inside input. For default text-to-video, input.prompt is required, while input.duration (default 5), input.resolution (default 480p), input.aspectRatio (default 16:9), and input.generateAudio (default false) are optional. For image-to-video, put the start-frame URL in input.image and an optional end-frame URL in input.imageTail; use the listed fields and constraints before constructing input.refs for reference-to-video. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each call submits one independent generation task. For several generations at once — different prompts, different inputs, or different models — call generate_video_batch once instead of calling this tool repeatedly: it submits up to 12 tasks together and returns a single card showing them side by side. numOutputs only creates multiple outputs of one identical input; it cannot vary the prompt or the model. Videos take a few minutes. If current entitlements are insufficient, explain only that the generation is unavailable./ad-video-creation; cloning or remaking a reference ad for the user's product → /ad-video-clone; placing a product or try-on image into a catalog style and animating it → /product-showcase-video; a multi-scene story video, short film or animated story → /long-video-creation; a brand commercial film (TVC) of 30 seconds or less → /tvc-video-creation; a game trailer, game PV or gameplay-style concept video → /game-concept-pv-producer; a vertical short drama or microdrama → /short-drama-creator; a story-driven product microdrama or shoppable short → /product-microdrama-video. If none clearly fits, call list_creation_commands. A skill command returns its SKILL.md plus files, the reference files it links to; read one with { command, file: "references/<name>.md" } when the skill tells you to. A router command returns which skill command to load next.taskId returned by any generate/edit tool, or a whole batch in one call with taskIds (results come back in tasks[], one entry per id). On MCP-Apps hosts you normally do NOT need to call this: the task-status UI polls it itself and updates in place.kind: "skill" commands carry a full creation workflow; kind: "router" commands (/story-video, /video-ad, /real-estate, /ugc-video) pick one of the skills listed in routesTo. Use when the user wants to browse creation workflows or their intent does not clearly match one command.voiceId values; never invent, guess or reuse a voice id from memory. Pass source: 'official' (default) for the platform voice library, optionally narrowed with language/gender/age/voiceStyle/accent, or source: 'personal' for voices this user cloned themselves. Personal voices carry a status: disable means the clone is still processing (not yet usable — do not treat it as switched off), enable means ready to use, failed means the clone did not succeed and failMsg says why (a clone still not ready after about an hour is marked failed). Only enable voices can be passed to generate_audio. The two sources paginate separately, so check both when the user does not say which they want. Use sampleAudio to let the user preview a voice before generating.{ type: "motion" } and pick one (e.g. brand runway, model runway-act-two). input.image (the character to animate) and input.video (the motion to imitate) are required on every model. Optional extras differ: runway/runway-act-two takes input.aspectRatio, the kling and wan models take input.mode (std/pro) and kling also takes input.prompt. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.account_status — call account_status instead. Get the available generation credit balance and current subscription entitlements as JSON (data only — renders no UI).clone_voice — call clone_voice instead. Create a new voice from a recording of someone's voice, so generate_audio can speak in it. Pass cloneAudioUrl, a public or host-authorized HTTPS URL of the reference recording (MP3, M4A or WAV, 10 seconds to 5 minutes, up to 20 MB) — if the user has a local recording, call upload_widget with mediaType: "audio" first and use the returned URL. voiceName is the label the user will see in their voice library. Cloning costs credits and runs in the background: it does NOT return a generation taskId, so do not call any status tool for it. Instead poll list_voices with source: "personal": the new voice has status disable while it is still processing (usually a few minutes), becomes enable once usable, or failed with a failMsg explaining why; a clone still processing after about an hour is marked failed. Only clone a voice the user has the right to use; do not clone a public figure or a third party from a recording the user does not own.edit_video — call edit_video instead. Change what is in an existing video from a text instruction — replace or restyle objects, alter the scene, change the look. Use it when the content should change but the clip stays the same length. Several models offer it and there is no platform default: call list_models with { type: "video-edit" } and pick one (e.g. brand runway, model runway-gen-4-aleph). input.video and input.prompt are required on every model; some also accept input.images as visual references, and several take input.resolution / input.aspectRatio / input.duration — check the model schema for those. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.estimate_generation_cost — call estimate_generation_cost instead. Estimate the generation credits required for the requested output. Returns credit units only and does not submit a generation task.extend_video — call extend_video instead. Make an existing video longer by continuing it. Use it when the user wants more of the same shot, not a different edit of it. No platform default: call list_models with { type: "video-extend" } and pick one. For a video the user supplies, prefer a model that takes a source URL (e.g. brand pollo-ai, model pollo-v2-extender); openai/sora-2 can only continue a video previously generated on Pollo. Input differs by model — most take a source input.video URL and require `input.resolution` (540p/720p/1080p); openai/sora-2 instead requires input.generationId (a previous Pollo generation) plus input.prompt. input.prompt describes what happens next (required only on sora) and input.duration sets the added length. Check the model schema before composing — omitting a required resolution is the most common failure here. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.generate_audio — call generate_audio instead. Turn text into spoken audio. Two capabilities, pick with capability: - text2speech (default) — speak the text in a catalog voice. Default brand minimax, model speech-2-8-hd, which (like elevenlabs/eleven-v3) requires `input.voiceId`: call list_voices first and pass one of its voiceId values — never invent a voice id. Note bytedance/seed-audio-1-0 is the exception: on text2speech it takes reference recordings in input.voiceRefs and has no voiceId field at all, so passing one there is dropped. - ref2audio — clone the delivery from a short reference recording instead of a catalog voice: put the recording URL(s) in input.voiceRefs (up to 3; WAV/MP3/PCM/OGG, max 10 MB and 30 seconds each). voiceRefs is optional in the schema, but omitting it makes ref2audio pointless — it then just reads the text in the model's own default delivery. If the user has a local recording, call upload_widget with mediaType: "audio" first. Only brand bytedance, model seed-audio-1-0 offers it today. For a reusable voice the user can pick again later, prefer clone_voice + text2speech instead. Only use recordings of a voice the user has the right to use; do not imitate a public figure or a third party from a recording the user does not own. capability, brand and model are top-level tool arguments; generation parameters go inside input, where input.prompt (the script to speak) is required. Call list_models with { model, type: "<capability>" } when the user selects another model or you need its exact request schema, prompt length limit or option ranges — the limit differs per model. Before submitting, call account_status and estimate_generation_cost with type set to the same capability and the same brand, model and input; submit only when credit.availableCredits is at least discountCost — audio is billed per character, so a long script costs proportionally more. For a song or instrumental music rather than spoken narration, use generate_music instead. Each successful call submits one generation task and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.generate_image — call generate_image instead. Generate an image. Each successful call submits a new generation task and consumes generation credits. Unless the user names or asks to compare models, use the default brand openai and model gpt-image-2-5 directly; it covers general image generation, text rendering, reference-image editing, and resolutions up to 4K. Call list_models with the selected model and capability type only when you need its fields or constraints; use type text2image or image2image. brand, model, and numOutputs are top-level tool arguments; generation parameters go inside input. For the default model, input.prompt is required, while input.images accepts up to 16 HTTPS image URLs and input.aspectRatio (default auto), input.resolution (default 1K, allowed 1K/2K/4K), and input.quality (default low) are optional. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each call submits one independent generation task. For several generations at once — different prompts, different inputs, or different models — call generate_image_batch once instead of calling this tool repeatedly: it submits up to 12 tasks together and returns a single card showing them side by side. numOutputs only creates multiple outputs of one identical input; it cannot vary the prompt or the model. If current entitlements are insufficient, explain only that the generation is unavailable.generate_image_batch — call generate_image_batch instead. Submit 1-12 independent image generations in one call and get a single card holding all of them, ordered by index. Each jobs[] item takes the same brand, model and input as generate_image and creates exactly one task — add another item for another generation, there is no per-item output count. Give every item a stable index (the scene or variant number): results keep it and the card orders by it. For model selection, defaults and per-model request schemas, follow generate_image — the rules are identical. Credits are preflighted for the whole batch: if the balance cannot cover the sum, nothing is submitted. Use generate_image for a single generation. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits the whole batch and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.generate_music — call generate_music instead. Compose an original song or instrumental track from text. Unless the user names another version, use brand suno, model suno-v5-5 (suno-v5 and suno-v4-5plus are the alternatives; only suno-v5-5 accepts input.duration). Every call produces two songs from the same request and the result card shows both; there is no numOutputs. Two modes, chosen by which fields are present. Description mode: only input.prompt (required; max 3000 characters in this mode) describing the music, e.g. "warm lo-fi hip hop, rainy night, mellow piano". Lyrics mode: input.prompt holds the lyrics themselves (max 5000 characters) and you pass both input.style (genre / mood / vocal, max 1000) and input.title (max 80) — the two must be given together, giving only one is rejected. input.instrumental: true drops vocals; input.negativePrompt excludes styles; input.vocalGender is m or f (best effort). input.duration (10-360 seconds) works only on suno-v5-5 in lyrics mode. The 0-1 fine-tuning numbers input.styleWeight, input.weirdnessConstraint and input.audioWeight should be left out unless the user asks. For spoken narration use generate_audio instead. brand and model are top-level tool arguments; song parameters go inside input. Call list_models with { model, type: "text2music" } for the exact schema of another version. Before submitting, call account_status and estimate_generation_cost with type: "text2music" and the same brand, model and input; submit only when credit.availableCredits is at least discountCost — music is billed per song and the estimate already covers both songs. Each successful call submits one generation task and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.generate_video — call generate_video instead. Generate a video. Each successful call submits a new generation task and consumes generation credits. Unless the user names or asks to compare models, use the default brand bytedance and model seedance-2-0 directly; it covers text-to-video, start/end-frame image-to-video, multimodal references, 4-15 second output, and resolutions up to 4K. Call list_models with the selected model and capability type when the user selects another model, provides reference media, or you need its fields or constraints; use type text2video, image2video, or ref2video. brand, model, and numOutputs are top-level tool arguments; generation parameters go inside input. For default text-to-video, input.prompt is required, while input.duration (default 5), input.resolution (default 480p), input.aspectRatio (default 16:9), and input.generateAudio (default false) are optional. For image-to-video, put the start-frame URL in input.image and an optional end-frame URL in input.imageTail; use the listed fields and constraints before constructing input.refs for reference-to-video. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each call submits one independent generation task. For several generations at once — different prompts, different inputs, or different models — call generate_video_batch once instead of calling this tool repeatedly: it submits up to 12 tasks together and returns a single card showing them side by side. numOutputs only creates multiple outputs of one identical input; it cannot vary the prompt or the model. Videos take a few minutes. If current entitlements are insufficient, explain only that the generation is unavailable.generate_video_batch — call generate_video_batch instead. Submit 1-12 independent video generations in one call and get a single card holding all of them, ordered by index. Each jobs[] item takes the same brand, model and input as generate_video and creates exactly one task — add another item for another generation, there is no per-item output count. Give every item a stable index (the scene or variant number): results keep it and the card orders by it. For model selection, defaults and per-model request schemas, follow generate_video — the rules are identical. Credits are preflighted for the whole batch: if the balance cannot cover the sum, nothing is submitted. Use generate_video for a single generation. Image inputs must be HTTPS URLs. For a ChatGPT attachment, call upload_attachment first and use its accessURL as the image input. Keep upload_widget as the interactive fallback. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits the whole batch and consumes generation credits. If current entitlements are insufficient, explain only that the generation is unavailable.get_creation_command — call get_creation_command instead. Load the matching Pollo creation workflow before planning, explaining or producing any multi-shot video — a game trailer or game PV, a product or brand ad, an ad remake, a brand film (TVC), a story video or short film, a short drama, or a product showcase video. Follow the returned markdown instead of planning from scratch with the generation tools, even if the user never named a command. Matches: an original product, brand, service or property ad, incl. UGC, try-on, unboxing, before-and-after, tutorial → /ad-video-creation; cloning or remaking a reference ad for the user's product → /ad-video-clone; placing a product or try-on image into a catalog style and animating it → /product-showcase-video; a multi-scene story video, short film or animated story → /long-video-creation; a brand commercial film (TVC) of 30 seconds or less → /tvc-video-creation; a game trailer, game PV or gameplay-style concept video → /game-concept-pv-producer; a vertical short drama or microdrama → /short-drama-creator; a story-driven product microdrama or shoppable short → /product-microdrama-video. If none clearly fits, call list_creation_commands. A skill command returns its SKILL.md plus files, the reference files it links to; read one with { command, file: "references/<name>.md" } when the skill tells you to. A router command returns which skill command to load next.get_generation_status — call get_generation_status instead. Check generation status (data only — renders no UI) with the taskId returned by any generate/edit tool, or a whole batch in one call with taskIds (results come back in tasks[], one entry per id). On MCP-Apps hosts you normally do NOT need to call this: the task-status UI polls it itself and updates in place.list_creation_commands — call list_creation_commands instead. List the supported Pollo creation commands and their presets. kind: "skill" commands carry a full creation workflow; kind: "router" commands (/story-video, /video-ad, /real-estate, /ugc-video) pick one of the skills listed in routesTo. Use when the user wants to browse creation workflows or their intent does not clearly match one command.list_models — call list_models instead. List Pollo models available for generation. Each row contains the brand, model, capability type, accepted fields, and constraints. Filter by capability type and/or model alias.list_voices — call list_voices instead. List the voices available for generate_audio. Speech generation requires a real voice id — always call this first and pass one of the returned voiceId values; never invent, guess or reuse a voice id from memory. Pass source: 'official' (default) for the platform voice library, optionally narrowed with language/gender/age/voiceStyle/accent, or source: 'personal' for voices this user cloned themselves. Personal voices carry a status: disable means the clone is still processing (not yet usable — do not treat it as switched off), enable means ready to use, failed means the clone did not succeed and failMsg says why (a clone still not ready after about an hour is marked failed). Only enable voices can be passed to generate_audio. The two sources paginate separately, so check both when the user does not say which they want. Use sampleAudio to let the user preview a voice before generating.motion_control — call motion_control instead. Animate a still character image so it copies the movement of a reference video (motion transfer / action imitation). No platform default: call list_models with { type: "motion" } and pick one (e.g. brand runway, model runway-act-two). input.image (the character to animate) and input.video (the motion to imitate) are required on every model. Optional extras differ: runway/runway-act-two takes input.aspectRatio, the kling and wan models take input.mode (std/pro) and kling also takes input.prompt. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.reframe_video — call reframe_video instead. Re-frame an existing video to a different aspect ratio, keeping the subject in frame — the canvas is re-cropped or extended rather than the video being letterboxed. Use it for repurposing a clip between landscape, portrait and square. Default (and the only model today): brand pollo-ai, model resizer. input.video is required and must be 10 seconds or shorter — longer clips are rejected up front, so trim the source to the segment worth re-framing before submitting. input.aspectRatio is the target shape — 16:9 (default), 9:16, 1:1, 4:3, 3:4, 21:9 or 9:21. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.remove_image_background — call remove_image_background instead. Cut the subject out of a still image, leaving a transparent or solid-colour background. Default (and the only model today): brand pollo-ai, model pollo-image-bg-remover. input.image is required. input.backgroundColor optionally fills the removed background with a solid colour, as a 6-digit hex string without the leading # (e.g. FFFFFF); omit it to get real transparency. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.remove_video_background — call remove_video_background instead. Cut the subject out of a video, leaving a transparent or keyable background. Default (and the only model today): brand pollo-ai, model pollo-video-bg-remover. input.video is required. input.outputFormat is mov (default — widely supported by editors) or webm (carries real alpha transparency). Pick webm when the user needs transparency downstream. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.remove_video_subtitles — call remove_video_subtitles instead. Erase subtitles that are burned into the video frames (hard subs) and reconstruct what was behind them. Use it when the text is part of the picture, not a separate subtitle track. Default (and the only model today): brand pollo-ai, model pollo-subtitle-remover. input.video is required. input.language is the burned-in subtitle language to erase — all (default, covers mixed Chinese/English), en, zh, ja, ko, ar; it is ignored when tier is advanced, which always processes every language. input.tier is standard (default) or advanced: advanced reconstructs the covered area far more aggressively and costs substantially more per 30 seconds, so always run estimate_generation_cost before submitting it. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.swap_face — call swap_face instead. Replace the face in an existing video with a face from a still image. Only swap faces the user has the right to use — do not swap in a public figure or a third party's face. Default: brand remaker, model remaker. input.video (whose face gets replaced) and input.faceImage (the new face) are required; input.faceEnhance is an optional boolean. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.task_status — call task_status instead. Validate and display the generation task owned by the current user. The initial result includes status, input, and prompt; unfinished tasks continue updating in the widget until every output succeeds or fails.translate_video — call translate_video instead. Translate the speech in an existing video into another language, re-syncing the speaker's lips to the new audio by default. Use it for localising a clip — not for adding subtitles to a video that is already in the target language. Default (and the only model today): brand pollo-ai, model videotranslate. input.video is required and must be an .mp4 or .mov URL no longer than 8 minutes. input.outputLanguage is required — the target language name (e.g. English, Japanese, Spanish); over 100 languages are supported and the set is not enumerated, so pass what the user asked for rather than a code. input.translateAudioOnly (default false) translates only the audio and leaves the lips untouched. input.enableCaption (default false) additionally produces an SRT file. Billing is per second of source video, so run estimate_generation_cost first. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.upload_attachment — call upload_attachment instead. Upload one image attached directly to the ChatGPT conversation and return a stable HTTPS accessURL for generation input. Accepts raster images up to 50 MiB.upload_image — call upload_image instead. Upload an image, video or audio input for a generation or edit (set type to the media type). Four modes: (1) pass browserUpload: true with filename + contentType to get { sign, uploadKey } for a browser-direct PUT into the upload inbox — this is what the uploader widget uses (bytes never pass through the MCP channel, so there is no message-size ceiling); (2) pass uploadKey (and nothing else) to confirm that direct upload: the server validates it and returns { accessURL }; (3) pass dataBase64 (a base64 data URL of the file) and the server uploads it for you, returning { accessURL } — no CORS to configure, but the bytes travel through the MCP message, so the gateway caps this at roughly 3.5 MB per file; (4) pass just filename to only get a presigned URL for the asset bucket: returns { sign, accessURL }, and you PUT the raw bytes to sign yourself (for programmatic/agent callers). Use accessURL as the media field in a generate or edit tool. The remote server cannot read your local disk. Note: /file/sign may be limited to certain accounts.upload_widget — call upload_widget instead. Open an interactive uploader UI so the user can upload local files and get public HTTPS URLs back. Pass mediaType for what the next tool needs: image (default) for generation image inputs, video for the video editing tools (upscale_video, edit_video, …), audio for a voice-cloning reference. Accepted formats and the per-file size cap follow the server guardrails for that media type and are shown in the card; they are not configurable. Pass maxFiles to cap how many files the user may upload (e.g. a model that takes a single reference image → maxFiles: 1); video and audio default to 1, images to 9. The user can drop a file from the list before confirming. When they finish and click Continue, the uploader posts the resulting URL(s) into the chat as a user message. Treat that message as file delivery, not as a request to generate: do not call any generation or editing tool from it alone. Tell the user what you received, and if they had already said what they want done, restate it in one line and wait for their go-ahead; if they have not, ask what they want before generating anything. Use this whenever the user wants to work from a local file that is not attached to the conversation — this remote server cannot read local files, so a plain HTTPS URL or this uploader is required. For an image attached to the conversation, call upload_attachment instead. After calling it, just wait for the user to confirm the upload; do not poll or call other tools.upscale_image — call upscale_image instead. Increase a still image's resolution and sharpness. Use it for a photo or generated image — for a video use upscale_video instead. Default (and the only model today): brand pollo-ai, model pollo-image-upscale. input.image is required and must be at least 300px on both sides — smaller sources are rejected up front (the upscaler leaves them untouched, so accepting them would return an unchanged image as a success). input.scale is the output magnification: 1 (default) keeps the original resolution and only enhances, 2 / 4 / 8 / 16 multiply both dimensions. Cost grows with the output pixel count, so estimate before submitting a large scale. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.upscale_video — call upscale_video instead. Increase an existing video's resolution and sharpness (up to 4K). Use it when the user wants a video bigger, sharper, cleaner or de-noised — not when they want its content changed. Default: brand pollo-ai, model pollo-video-upscale. Topaz is available as brand topaz, model topaz-video-upscale. input.video (source video URL) and input.scale (original, 2x, 4x, hd or 4K) are required. Topaz also accepts input.mode (standard, face, denoise, sharpen, anime). Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model resizer. input.video is required and must be 10 seconds or shorter — longer clips are rejected up front, so trim the source to the segment worth re-framing before submitting. input.aspectRatio is the target shape — 16:9 (default), 9:16, 1:1, 4:3, 3:4, 21:9 or 9:21. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model pollo-image-bg-remover. input.image is required. input.backgroundColor optionally fills the removed background with a solid colour, as a 6-digit hex string without the leading # (e.g. FFFFFF); omit it to get real transparency. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model pollo-video-bg-remover. input.video is required. input.outputFormat is mov (default — widely supported by editors) or webm (carries real alpha transparency). Pick webm when the user needs transparency downstream. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model pollo-subtitle-remover. input.video is required. input.language is the burned-in subtitle language to erase — all (default, covers mixed Chinese/English), en, zh, ja, ko, ar; it is ignored when tier is advanced, which always processes every language. input.tier is standard (default) or advanced: advanced reconstructs the covered area far more aggressively and costs substantially more per 30 seconds, so always run estimate_generation_cost before submitting it. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.remaker, model remaker. input.video (whose face gets replaced) and input.faceImage (the new face) are required; input.faceEnhance is an optional boolean. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model videotranslate. input.video is required and must be an .mp4 or .mov URL no longer than 8 minutes. input.outputLanguage is required — the target language name (e.g. English, Japanese, Spanish); over 100 languages are supported and the set is not enumerated, so pass what the user asked for rather than a code. input.translateAudioOnly (default false) translates only the audio and leaves the lips untouched. input.enableCaption (default false) additionally produces an SRT file. Billing is per second of source video, so run estimate_generation_cost first. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.type to the media type). Four modes: (1) pass browserUpload: true with filename + contentType to get { sign, uploadKey } for a browser-direct PUT into the upload inbox — this is what the uploader widget uses (bytes never pass through the MCP channel, so there is no message-size ceiling); (2) pass uploadKey (and nothing else) to confirm that direct upload: the server validates it and returns { accessURL }; (3) pass dataBase64 (a base64 data URL of the file) and the server uploads it for you, returning { accessURL } — no CORS to configure, but the bytes travel through the MCP message, so the gateway caps this at roughly 3.5 MB per file; (4) pass just filename to only get a presigned URL for the asset bucket: returns { sign, accessURL }, and you PUT the raw bytes to sign yourself (for programmatic/agent callers). Use accessURL as the media field in a generate or edit tool. The remote server cannot read your local disk. Note: /file/sign may be limited to certain accounts.mediaType for what the next tool needs: image (default) for generation image inputs, video for the video editing tools (upscale_video, edit_video, …), audio for a voice-cloning reference. Accepted formats and the per-file size cap follow the server guardrails for that media type and are shown in the card; they are not configurable. Pass maxFiles to cap how many files the user may upload (e.g. a model that takes a single reference image → maxFiles: 1); video and audio default to 1, images to 9. The user can drop a file from the list before confirming. When they finish and click Continue, the uploader posts the resulting URL(s) into the chat as a user message. Treat that message as file delivery, not as a request to generate: do not call any generation or editing tool from it alone. Tell the user what you received, and if they had already said what they want done, restate it in one line and wait for their go-ahead; if they have not, ask what they want before generating anything. Use this whenever the user wants to work from a local file that is not attached to the conversation — this remote server cannot read local files, so a plain HTTPS URL or this uploader is required. For an image attached to the conversation, call upload_attachment instead. After calling it, just wait for the user to confirm the upload; do not poll or call other tools.pollo-ai, model pollo-image-upscale. input.image is required and must be at least 300px on both sides — smaller sources are rejected up front (the upscaler leaves them untouched, so accepting them would return an unchanged image as a success). input.scale is the output magnification: 1 (default) keeps the original resolution and only enhances, 2 / 4 / 8 / 16 multiply both dimensions. Cost grows with the output pixel count, so estimate before submitting a large scale. Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.pollo-ai, model pollo-video-upscale. Topaz is available as brand topaz, model topaz-video-upscale. input.video (source video URL) and input.scale (original, 2x, 4x, hd or 4K) are required. Topaz also accepts input.mode (standard, face, denoise, sharpen, anime). Media inputs must be public or host-authorized HTTPS URLs. For an image attached to the conversation, call upload_attachment first and use its accessURL. For any other file that is not already an HTTPS URL (a local file, or a video or audio attachment), call upload_widget first with the matching mediaType and use the returned URL. After a successful submission, the returned result updates automatically; do not call any status tool. Each successful call submits one editing task, produces one output and consumes generation credits. If current entitlements are insufficient, explain only that the edit is unavailable.Click any prompt to copy it.
App Stats
58
Tools
3
Prompts
ChatGPT
Platforms
Category
In-chat ActionsWorks with
Data refreshed daily