Reference

Flypic MCP tool reference

The full surface area of /api/mcp. These tools are exposed to every MCP-compatible AI client connected with a valid Flypic API token.

Tools (33)

generate_image

Generate an image from a text prompt. Mirrors the studio Generate tab.

Inputs
prompt (required), model, aspectRatio, quality, referenceImages[], count
Returns
Image URL once rendered, or jobId + queue position when work is queued.
Usage
Runs on your own AI provider key. Flypic does not charge per generation.
edit_image

Edit an existing image using a natural-language instruction.

Inputs
imageUrl (required), prompt (required), model, quality, referenceImages[]
Returns
New image URL.
Usage
Same as generate_image.
generate_video

Generate a short video from a prompt and optional starting frame.

Inputs
prompt (required unless a videoUrl drives the model), model, duration ("3"–"10"), aspectRatio, startImage, referenceImages[], videoUrl (only models with video input), isPublic
Returns
Video URL (mp4) once the model finishes — typically 30–120s.
Usage
Runs on your own AI provider key; your provider bills you directly for the video.
motion_transfer

Higgsfield Genjutsu: keep a source video's motion and re-perform it with your character.

Inputs
videoUrl (required, 4–30s), characterImages[] (required, 1–8), prompt, resolution ("480p" | "720p" | "1080p"), isPublic
Returns
Video URL (mp4) — output length follows the source video.
Usage
Runs on your own Higgsfield key; Higgsfield bills per input second.
list_generations

Paginated history of your generations, newest first.

Inputs
limit (≤100), cursor, mediaType ("image" | "video")
Returns
Array of summaries + nextCursor.
search_generations

Keyword search over your past prompts. Same tokenizer the in-app autopilot uses.

Inputs
query (required), limit (≤40), mediaType
Returns
Ranked array of summaries.
get_generation

Fetch a single generation by id.

Inputs
id (required)
Returns
Full generation row (prompt, urls, model, dimensions).
get_credits

Your subscription plan and the features it unlocks. There is no credit balance — usage is unlimited on your own AI provider keys. (The tool name is kept for existing clients.)

Inputs
—
Returns
{ usage: "unlimited", note, plan, features[], planId, renewalDate }
get_usage

Generation counts for today / this week / this month, plus your current plan.

Inputs
—
Returns
{ usage: "unlimited", plan, generations: { total, today, week, month } }
list_models

List the AI models currently enabled in Flypic.

Inputs
type ("image" | "video" | "text")
Returns
Array of { modelId, name, description, type, provider, isDefault }.
list_workflows

Built-in template workflows plus your own visual workflows.

Inputs
—
Returns
{ templates[], visualWorkflows[] }
run_workflow

Run a workflow by id. Template workflows fire their webhook server-side; visual workflows return a studio URL since their graph nodes require an in-browser session.

Inputs
workflowId (required), formData
Returns
For templates: { status, response }. For visual: { studioUrl } to open in a browser.
autopilot_status

Check whether the user has a live signed-in Flypic studio tab attached to the autopilot remote-control channel, and what the headless fallback policy is.

Inputs
—
Returns
{ connected, fallbackMode, studioUrl, hint }
autopilot_plan

Plan an autopilot run from a natural-language request — returns the ordered UI commands + narration without executing anything. Useful for previews or for clients that want to drive the UI themselves.

Inputs
message (required), currentMode, currentPrompt, knownAliases[], attachedImages[], model
Returns
{ narration, commands[] }
autopilot_run

Plan a request and execute it. Drives the live studio tab when one is attached; otherwise transparently falls back to a non-visible headless run (Playwright browser or a server-side service replay) so the request still completes.

Inputs
message (required), currentMode, currentPrompt, knownAliases[], attachedImages[], generateTimeoutMs, stepTimeoutMs, model
Returns
{ mode, engine, narration, timeline[], error? }
Usage
Same as the underlying generate_* tool the plan ends up running.
poll_job

Poll a queued generation job to completion.

Inputs
jobId (required), timeoutMs (1s–120s)
Returns
{ status, imageUrl | text, error }
get_cost_estimate

Estimate roughly what your AI provider will bill you directly for a generation with a given model. Flypic itself charges nothing per generation. Also reports whether your plan can run the model.

Inputs
modelId (required), mediaType ("image" | "video"), durationSeconds (video only)
Returns
{ usage: "unlimited", estimatedProviderCostUsd, canProceed, blockReason?, model }
get_job

Fetch a single generation job by id (status, result, error).

Inputs
jobId (required)
Returns
Full job row.
list_jobs

List the user's recent generation jobs, newest first, optionally filtered by status.

Inputs
status ("queued" | "running" | "succeeded" | "failed" | "cancelled"), limit (≤100)
Returns
Array of job summaries.
cancel_job

Cancel a queued or running generation job. Already-finished jobs can't be cancelled.

Inputs
jobId (required)
Returns
{ status: "cancelled" }
retry_job

Re-run a finished (failed/cancelled) job by re-enqueueing its original parameters.

Inputs
jobId (required)
Returns
{ jobId } — the new job id.
Usage
Re-runs the original generation on your own AI provider key.
list_assets

List the user's saved library assets (characters, locations, props).

Inputs
type ("character" | "location" | "prop"), limit (≤200)
Returns
Array of asset rows.
create_asset

Save a new asset (character, location, or prop) to the library.

Inputs
name (required), type, description, tags[], images[] (≤12 URLs), color
Returns
The created asset row.
delete_asset

Delete an asset owned by the authenticated user.

Inputs
id (required)
Returns
{ ok: true }
list_projects

List the user's projects with their generation counts.

Inputs
limit (≤200)
Returns
Array of project rows.
create_project

Create a new project to organize generations.

Inputs
name (required), description, color
Returns
The created project row.
delete_project

Delete a project. Its generations are detached, not deleted.

Inputs
id (required)
Returns
{ ok: true }
list_presets

List the user's prompt-template presets, optionally including public presets.

Inputs
includePublic, limit (≤200)
Returns
Array of preset rows.
create_preset

Save a reusable prompt-template preset.

Inputs
title (required), prompt (required), description, negativePrompt, category, tags[], aspectRatio, recommendedModel, isPublic
Returns
The created preset row.
update_preset

Update fields of a preset owned by the authenticated user.

Inputs
id (required), plus any updatable preset field
Returns
The updated preset row.
delete_preset

Delete a preset owned by the authenticated user.

Inputs
id (required)
Returns
{ ok: true }
list_scheduled_workflows

List the user's scheduled workflow runs, optionally filtered by status.

Inputs
status ("pending" | "running" | "completed" | "failed" | "cancelled"), limit (≤200)
Returns
Array of scheduled workflow rows.
cancel_scheduled_workflow

Cancel a pending scheduled workflow run owned by the authenticated user.

Inputs
id (required)
Returns
{ status: "cancelled" }

Rate limits & quotas

Generation tools go through the exact same queue as the studio: per-minute caps and concurrency caps match your plan. Generations run on your own AI provider keys, so Flypic does not meter or charge for usage. There is no separate MCP rate limit.

Read-only tools (list_generations, get_credits, etc.) are unmetered.

Tokens

Tokens are fp_live_-prefixed and shown plaintext exactly once. Server-side we store only sha256(token). If you lose a token, revoke it and create a new one — recovery isn't possible.

Each token is scoped to a single user account; there's no per-token capability scoping yet — a token can do everything the owning user can do in the studio.

Revoking access

Go to /mcp and click Revoke on any token. Revocation is instant — the next request from any AI client using that token will get a 401.