MCP App Store
by KeenEthics

Overview

Pixara connects ChatGPT to your Pixara account so you can generate and edit images, video, voiceover and music from the conversation. Describe what you want and ChatGPT chooses from the models available on Pixara, using Pixara's model recommendations. Finished images, video and audio open in an inline media viewer. What you can do: - Generate images from a prompt or a reference image, such as product shots and ad creative. - Generate video from a prompt or an image. - Create voiceovers and music, and lip-sync a video to an audio track. - Edit media: upscale, remove backgrounds, reframe to new aspect ratios, add subtitles and sound effects, and trim or merge clips. - Assemble clips, narration and music into a single edited video. - Browse and reuse your past generations and uploads, and run your saved Pixara workflows. Images usually finish in seconds; video can take a few minutes. Requires a Pixara account; sign in when you connect.

Tools

add_sound_effects

ChatGPT
Add synced sound effects (foley, ambience) to a video generated from its visuals. Find the model via list_models({ capability: "sound-effects" }) and pass its params (video URL; optional text prompt for the sound character). Returns a job id to poll.

ai_app

ChatGPT
Run a Pixara AI App - the long-tail drawer of one-shot image edits: professional headshot, text/watermark removal, creative image filters, image avatars from a face photo. Find one via list_models({ capability: "ai-apps" }) and pass its params (usually an input image URL). Prefer a NAMED tool when one exists for the intent. Returns a job id to poll.

assemble_video

ChatGPT
Assemble finished media into ONE final video on a multi-track timeline: cut clips in order, overlay text titles and logo images, lay narration over the cut, duck a music bed under it - a single render, a single deliverable. Call get_assembly_guide FIRST for the timeline grammar, composition rules, and recipes (narrated video, slideshow, social cut); describe_model("pixara/assemble-video") has the full JSON schema. Model is "pixara/assemble-video"; params = { output: { aspect, resolution? }, timeline: { tracks: [...] } }. Asset references are platform asset KEYS from your earlier generations (each job result lists its assets’ keys), never URLs; call get_media_metadata(key) for exact source durations before sizing clips - listed durations are rounded. A rejected timeline names the exact clip path and numbers - fix that and retry. Generate the ingredient assets first, then assemble; never deliver loose clips when a finished piece was asked for. Returns a job id to poll.

avatar

ChatGPT
Animate a talking avatar from an image and audio. Pass an avatar model id (find them via list_models({ capability: "ai-avatar" })) and params (imageUrl and audioUrl). Only animate a face the user owns or has permission to use; decline requests to make a real person appear to say something they did not, or to deceive. Returns a job id to poll.

change_camera_angle

ChatGPT
Re-render an IMAGE from a different camera angle (low angle, side view, from behind). Find the model via list_models({ capability: "camera-angle" }) and pass its params (image URL + the desired angle in the prompt). Returns a job id to poll.

clone_voice

ChatGPT
Generate speech in a cloned voice from a reference sample. Pass a clone-capable voiceover model (find them via list_models({ capability: "voice-clone" })), the text to speak, and the URL of a voice sample to clone (use upload_asset to ingest a local sample first). Only clone a voice the user owns or has the speaker’s permission to use; decline requests to imitate a real person without their consent or to make anyone appear to say something deceptive. Returns a job id to poll.

describe_model

ChatGPT
Get the full input schema, asset-input fields, and pricing for a single Pixara model. Call this before generating to learn the required parameters.

diagnose_run

ChatGPT
Diagnose a workflow run in one call: verdict (succeeded / failed / in_progress / partially_completed), the failed node with its error, the last successful node, per-step states, and a suggested action. This is also the poll - call it repeatedly until the verdict is terminal, then surface suggestedAction. Pass stepId to focus on a single node.

dubbing

ChatGPT
Dub or translate the spoken audio in a video into another language while keeping the visuals (lip-synced where the model supports it). Find a model via list_models({ capability: "video-translate" }) and pass its params (a video URL and target language). Returns a job id to poll.

estimate_cost

ChatGPT
Estimate the credit cost of a generation before running it. Pass the same params you would pass to a generate or edit tool, including the model id. Returns the estimated credits, or indicates the cost can only be known once the job runs.

finalize_upload

ChatGPT
Complete a local-file upload started with request_upload, after the PUT to the presigned uploadUrl succeeded. Registers the file and returns the asset: a fresh URL (input to generation/edit tools) plus its asset key (for assemble_video).

generate_batch

ChatGPT
Queue several independent generations in one call (up to 12) - a shot list of clips, a set of image variants, the lines of a voiceover. Each job takes the same { model, params } you would give generate_image / generate_video / generate_voiceover / generate_music, and jobs may mix models and media types. Every job is queued and billed on its own, so one failing does not stop the others. Returns the jobId per index; then call wait_for_jobs with all the ids to wait for the whole batch at once. Prefer this over N separate generate_* calls whenever the jobs do not depend on each other.

generate_image

ChatGPT
Generate an image. Pass a model id (from list_models with service "image-generation") and its params (use describe_model for the schema; prompt is usually required). Returns a job id to poll.

generate_music

ChatGPT
Generate music. Pass a model id (service "music-generation") and params (prompt required). Returns a job id to poll.

generate_video

ChatGPT
Generate a video. Pass a model id (service "generative-video") and its params (prompt usually required; some models need an input image URL). Returns a job id to poll.

generate_voiceover

ChatGPT
Generate speech/voiceover. Pass a model id (service "voiceover-generation") and params (text required; voiceId or a reference audio URL depending on the model). Returns a job id to poll.

get_assembly_guide

ChatGPT
The video-assembly playbook for assemble_video: the pixara-timeline grammar, composition rules, and the recipe patterns (narrated video, slideshow, social cut). Call this BEFORE authoring your first timeline in a session - it is static reference, free, and makes the difference between a torn spec and a clean render.

get_asset

ChatGPT
Show one of the user’s assets again: renders it inline (image, video or audio) and returns a fresh URL. Use it when the user asks to see an asset. For a silent lookup of a reference the user just picked or uploaded (fresh URL, key and a preview, no widget) use resolve_asset instead. Takes a numeric id, "asset-<id>" for generations, or "upload-<id>" for files the user uploaded.

get_credits

ChatGPT
Check the user’s current Pixara credit balance. Use this to confirm there are enough credits before starting a generation.

get_job

ChatGPT
Check a Pixara job once. Returns its status, and if finished, the resulting asset(s) rendered inline.

get_media_metadata

ChatGPT
Exact media metadata for one of the user’s assets: precise fractional duration in seconds, dimensions, fps, and mime type, probed from the file itself. Pass the asset KEY (e.g. "videos/<uuid>.mp4") or a reference ("asset-123", "upload-45", or a bare number) - both appear in results. Asset listings round durations to whole seconds - ALWAYS use this before assemble_video so trims and clip lengths fit the real source.

get_node_result

ChatGPT
Read a completed workflow step’s output, in the exact shape pinnedContext accepts - use it to fetch finished work before a rerun-from, or to hand the user a specific step’s result. Asset outputs carry platform asset keys, and media outputs render inline.

get_skill

ChatGPT
The full text of one Pixara recipe by name (from list_skills): its rules, the questions worth asking, the phases, the verified models with their limits, the prompt shapes and the assembly steps. Read it once per piece and follow it; it is static reference and costs nothing.

get_workflow_definition

ChatGPT
Fetch a workflow’s agent-facing definition: a textual digest of its steps and wiring plus the input descriptor ({ nodeId, label, type } per input node). ALWAYS call this before run_workflow - it shows the real input labels to ask the user about. Surface the workflow’s purpose and inputs, then offer to run it.

lip_sync

ChatGPT
Lip-sync a video to an audio track. Pass a lip-sync model id (find them via list_models({ capability: "lip-sync" })) and params (video and audio URLs). Only use footage and voices the user owns or has permission to use; decline requests to make a real person appear to say something they did not, or to deceive. Returns a job id to poll.

list_caption_styles

ChatGPT
List the caption styles of a caption model (find them via list_models({ capability: "subtitles" })), rendered as cards with a looping preview of each style and a "Use" button that drops the style and its model into the user’s chat box. Returns each style’s preset with its name, categories and price per minute; the preset goes in the model’s preset field on the subtitles tool. Call this when the user wants to see or choose a caption look. Filter with category (basic, highlighted, animated) or search by name.

list_generations

ChatGPT
Browse the user’s existing Pixara assets (their past generations and uploads), most recent first, rendered as an inline library widget: a paged thumbnail grid where a click previews a tile and a hover shows a "Use" button that drops the asset’s reference (asset-<id> or upload-<id>) into the user’s chat box. A follow-up message shaped like "Use this image as the input for my next generation … Reference image: asset-123 … Prompt: …" came from that button: resolve the reference with resolve_asset (or the URL already in context) and pass the URL to the tool. Each asset has a durable assetId and a fresh URL, usable as inputs to other tools. Optionally filter by category ("images", "videos", or "audio"). Returns a cursor for the next page. To re-open a known assetId later whose URL has expired, use get_asset.

list_models

ChatGPT
List the Pixara models available for a service, with their pricing and capabilities. Optionally filter to a single capability (e.g. "lip-sync", "voice-clone", "upscale-image", "video-edit"). Deprecated models are excluded. To pick the best model for a described goal, prefer recommend_model; use this to browse or narrow the full catalog.

list_runs

ChatGPT
The user's recent workflow runs, newest first: run id, status, progress, when it ran, and the owning workflow. Optionally filter by a workflow's projectId (from list_workflows). Run ids feed diagnose_run and get_node_result - use this to find a past run instead of asking the user for an id.

list_skills

ChatGPT
The Pixara recipes: one per made-to-brief piece (presenter video, product reel, avatar video, faceless explainer, animated story, cinematic trailer, product photoshoot, Amazon listing, ad creative, social graphics, thumbnail, character sheet), each with when it applies and what it is not for. Call this before starting any multi-step piece, then get_skill for the one that fits. Static and free.

list_voices

ChatGPT
List the preset voices for a voiceover model that needs a voiceId (describe_model shows whether a model takes one), rendered as cards with a sample player and a "Use" button that drops the voice and its model into the user’s chat box. Returns each voiceId with its name/gender/language so you can pass a voiceId to generate_voiceover. Optionally filter by language, gender, or a name search. Models that clone from a sample (list_models({ capability: "voice-clone" })) have no preset voices - use clone_voice for those.

list_workflows

ChatGPT
List the user’s saved Pixara workflows - multi-step machines they built on the canvas. Each entry carries the projectId used by get_workflow_definition and run_workflow. Use when the user wants to find, list, or pick one of their workflows.

media_utility

ChatGPT
Mechanical media operations: trim a video, merge videos, merge audio onto video, merge audio tracks, extract a video frame. Find a model via list_models({ capability: "media-utility" }) - each operation is its own model, and some operations have more than one - then describe_model for its exact params and constraints. Returns a job id to poll.

motion_control

ChatGPT
Transfer motion from a driving video onto an image/character. Pass a motion-control model id (find them via list_models({ capability: "motion-control" })) and params (image and video). Only animate a person the user owns or has permission to use; decline requests to put a real person in footage they did not take part in, or to deceive. Returns a job id to poll.

recommend_model

ChatGPT
Recommend the best Pixara models for a described goal. Pass a natural-language goal (e.g. "lip-sync a talking-head video to an audio track", or "photorealistic product photo with legible text") plus optional service or capability filters. Returns a short ranked shortlist matched on each model's tags, capabilities, and description, with pricing. Then call describe_model on your pick for its exact params.

reframe

ChatGPT
Change the aspect ratio of an image or a video with content-aware outpainting (e.g. 16:9 to 9:16). Find a model via list_models({ capability: "reframe" }) - image and video models are distinct; check the model constraints for source-length caps - and pass its params. Returns a job id to poll.

remove_background

ChatGPT
Remove the background from an image or a video (subject/product cutout; video models support green-screen output). Find a model via list_models({ capability: "background-removal" }) - image and video models are distinct - and pass its params (an image or video URL). Returns a job id to poll.

request_upload

ChatGPT
Start uploading a LOCAL file from the user’s machine into their Pixara assets. Returns a presigned uploadUrl - HTTP PUT the raw file bytes to it yourself (e.g. curl -T file, or PowerShell Invoke-RestMethod -Method Put -InFile), with the same Content-Type you declared - plus the storage key. After the PUT succeeds, call finalize_upload with that key. Only image, video, or audio files. For a file already on the web, use upload_asset with its URL instead.

resolve_asset

ChatGPT
Silently look up an asset the user referenced as "asset-<id>" or "upload-<id>" (the library widget and the uploader write these into the chat): returns a fresh URL, the key, its size and a small preview so you can see it. Renders nothing. Use this instead of get_asset after the user presses Use or uploads a file; call get_asset only when the user asks to see the asset again.

run_workflow

ChatGPT
Run one of the user’s workflows server-side; every step bills like a normal generation. Qualify intent BEFORE running: call get_workflow_definition first, then ask the user for each required input BY ITS REAL LABEL - never re-ask anything they already said. inputs is a flat object keyed by input node id or display label (case-insensitive); an unknown key returns an error listing the workflow’s known inputs and the run does not start. Asset inputs take platform asset KEYS (from job results or upload_asset), never URLs. Omit targetNodeIds to run the whole workflow. To rerun from partway - reusing finished work instead of re-paying for it - pass pinnedContext (node id → that node’s output, from get_node_result), optionally with targetNodeIds to limit what runs. Returns a run id immediately; poll with diagnose_run until the verdict is terminal.

subtitles

ChatGPT
Burn styled, auto-transcribed captions into a video. Find a caption model via list_models({ capability: "subtitles" }) and pass its params (video URL; the style goes in preset). Caption styles with their previews come from list_caption_styles, because some models take a style id their schema cannot list; describe_model shows which models also accept authored caption text for a piece with no speech. If one model refuses a video or its job fails, another can be used. Returns a job id to poll.

upload_asset

ChatGPT
Ingest an external media URL into the user’s Pixara assets and return a Pixara asset URL (input to generation/edit tools) plus its asset key (for assemble_video). Images are compressed to <= 2MP / <= 10MB. URL ingestion ONLY - for a LOCAL file on the user’s machine, use request_upload + finalize_upload instead (upload the bytes yourself via the presigned URL).

upload_widget

ChatGPT
Open the Pixara upload widget for a LOCAL image, video, or audio file on the user’s device. Set maxFiles to 1 for a single file (the widget continues on its own once it lands) and minFiles when a recipe needs several (Continue stays off until that many are in). Call this immediately when the user has local media to use as input and the client can render Apps UI - do NOT ask them to attach the file in chat; remote MCP tools cannot read chat attachments. The user picks files in the widget, the browser uploads them directly, and the confirmed assets are reported back for the next tool call. Agents with a shell should use request_upload + finalize_upload instead.

upscale

ChatGPT
Upscale an image or video to higher resolution. Pass an upscale model id (find them via list_models({ capability: "upscale-image" }) or "upscale-video") and params (imageUrl or videoUrl). Returns a job id to poll.

vectorize

ChatGPT
Convert a raster image (logo, icon, flat artwork) into a vector SVG. Find the model via list_models({ capability: "vectorize" }) and pass its params (image URL). Returns a job id to poll.

wait_for_job

ChatGPT
Wait for a Pixara job to finish (polls for up to ~45 seconds), then return the resulting asset(s) rendered inline. If it is not done yet, returns the current status - call wait_for_job again to keep waiting.

wait_for_jobs

ChatGPT
Wait for several Pixara jobs at once (polls all of them for up to ~45 seconds) and return every finished asset rendered inline in one gallery. Pass all the jobIds from generate_batch (or from separate generate_* calls). Finished jobs come back with their assets, failed jobs with their error; if some are still running when time runs out the result names them - call wait_for_jobs again with just those ids to keep waiting. Use this instead of one wait_for_job per id.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps