cancel_job
ChatGPTCancel a running fal.ai queue job. Only use this when the user explicitly asks to cancel a specific request_id.
check_account_status
ChatGPTCheck the connected fal account before preparing a generation or upload, and after the user adds credits or changes accounts. Returns ready, blocked, or unknown with account identity when available and recovery instructions. This is read-only: it never purchases credits, changes accounts, uploads files, submits or resumes jobs. Ready means no account-level lock was reported, not that a particular job is affordable or permitted. Unknown does not mean insufficient balance. Explain a block once and wait for the user; do not poll this tool or automatically retry paid work. Keep existing request IDs and resume their original jobs rather than submitting duplicates.
check_entity_handle
ChatGPTNormalize a proposed @handle and check availability; use excludeId when editing an existing entity.
check_job
ChatGPTCheck the status of a running fal.ai job. Use this for long-running jobs (video generation, training, etc.) or when run_model returns status "processing".
create_asset_tag
ChatGPTCreate an asset tag. Names are normalized and unique within the account.
create_collection
ChatGPTCreate a manual or filter-based smart collection. Manual collections support explicit membership; smart collections derive membership from filters. Nesting follows existing product rules.
create_entity
ChatGPTCreate any of the five smart entity types from 1–20 reference images. Each reference must be an image assetRecordId or a fal-hosted image URL from upload_file/upload_attachment; upload other images first. Characters require a nonempty description, and their metadata is managed automatically, so omit metadata for characters. Reference images guide generation; creating an entity does not train a model.
delete_asset
ChatGPTRemove an asset from the library when requested. This does not promise deletion of the underlying CDN file.
delete_asset_tag
ChatGPTDelete a tag and its assignments without deleting assets.
delete_collection
ChatGPTDelete a collection when requested. Its source assets remain in the library.
delete_entity
ChatGPTDelete a smart entity when requested, without deleting its source media.
estimate_cost
ChatGPTEstimate a request's cost from the connected account's current model rate and explicit billing units. Read-only and advisory: never submits, uploads, checks affordability, or enforces a cost cap. Pass the actual model input to use explicit num_images, duration, duration_seconds, seconds_total or music_length_ms where the billing unit matches. For other units pass unit_quantity with the exact unit returned by get_pricing. Never infer compute time, model defaults, media duration, pixel rounding, or unit conversions. Configuration-specific pricing rules and minimum charges are not exposed by the pricing API, so totals are estimates. Unknown is not free; do not treat an estimate as a quote, final charge, or approval. Rates may be cached for up to 5 minutes.
get_asset
ChatGPTRead an owned library asset's media URL, metadata, prompt, and tags. Reuse its URL in schema-supported model inputs; retention still applies.
get_asset_lineage
ChatGPTRead captured ancestry for an owned asset, including original inputs, roles, intermediate requests, entity links and tombstones. The existing owned service has a fixed maximum depth of three hops; arbitrary depth is not supported. Missing capture history is not fabricated. Lineage prompts are not complete recipes: use get_job_recipe for retained exact inputs.
get_entity
ChatGPTRead a smart entity and its ordered defining reference-image URLs. Use list_entities to find an ID by handle or name. Reference images are separate from associated gallery media.
get_generation_defaults
ChatGPTRead safely scoped personal/account generation preferences and preferred models. Explicit current requirements win; variations keep the actual source recipe ahead of saved preferences. No defaults are written or inferred. Team credentials must not inherit another member's private preferences; inspect identity and scope.
get_job_recipe
ChatGPTRecover the exact retained input and output for one existing model request from public request history. Pass the original endpoint_id and request_id; preserve the row's account_receipt from search_request_history or the original job's response_url so OAuth uses the original account after later selection changes. Receipts are bound to the authenticated user, connection issuer and request ID; conflicting receipts or existing job bindings are rejected. Default lookup covers 90 days; start/end can select another indexed interval. A reusable recipe is returned only for an actually retained object input. Missing/expired/omitted payloads or absent history remain unknown; no defaults, prompts, references, or model settings are reconstructed. Requires models:requests:read and permission to view the original account's requests. Does not resubmit, save media, or change the account for new work.
get_job_result
ChatGPTFetch the result for a completed fal.ai queue job. Use check_job first when you are not sure the request has completed.
get_model_schema
ChatGPTGet the full input/output schema for a specific fal.ai model. Returns all parameters the model accepts and what it returns. Use this before run_model to understand what inputs are needed.
get_pricing
ChatGPTGet pricing information for a fal.ai model. Returns cost per run or per second. Use this before running expensive models (video, training) to estimate costs.
inspect_images
ChatGPTRead actual bounded preview pixels for 1–4 saved images or public fal image URLs, in source order. Returns per-source status/provenance and MCP image blocks. A viewer or URL alone is not visual evidence. Preview failures keep successful siblings; 768px lossy previews cannot prove small text, identity detail or original alpha. Does not generate, upload or spend.
list_accounts
ChatGPTList personal and team accounts the connected OAuth user can select, plus the saved MCP account selection. Read-only. Accounts pass current membership and library access checks; this does not guarantee generation or billing permission. Works without resolving the currently selected account so the user can recover from revoked access. Partial service failures are reported as checks_failed; don't assume missing accounts were revoked. API keys cannot enumerate or switch personal/team memberships.
list_asset_tags
ChatGPTList the account's available library tags.
list_collections
ChatGPTList manual and smart collections with metadata and previews. Use search_assets with collectionId to read their contents. Smart entities are listed separately with list_entities.
list_entities
ChatGPTFind reusable characters, props, environments, styles, and scenes. Returns handles, metadata, and defining references with usable image URLs. Page with limit/offset; use these references in schema-supported model inputs. A plain @handle is not automatically resolved by run_model.
list_entity_assets
ChatGPTRead associated gallery media. Defining references are excluded unless includeReferences=true; use get_entity for the generation reference set.
move_collection
ChatGPTMove a manual collection into a parent collection; parentCollectionId=null moves it to the root.
open_library
ChatGPTOpen the connected fal account's saved media library. Browse, search, preview, and select existing assets for a conversation without generating anything.
open_media_file
ChatGPTPreview an image or video opened from a ChatGPT file. Reads the file through the host; does not upload or generate media.
prepare_deliverables
ChatGPTRead 1–32 exact existing outputs from at most eight distinct jobs and retain every requested variant with complete/partial/unverified/blocked delivery status. Compare expected media facts with attributed host observations, carry preservation evidence and reported save outcomes. Model metadata/filenames/viewers don't prove decoder facts. Does not independently inspect media or authorize repairs; private job handles must stay out of exported manifests.
prepare_media_transform
ChatGPTPrepare a supported upscale, transparent cutout, HDR delivery or video outpaint as plain endpoint_id/input for submit_job. Read-only: does not upload, generate or spend. Checks adapter fields and values against the current live schema before returning a plan. Existing run_model/submit_job stay the execution path. Pass actual source URLs; no sample images or source substitution. Video outpaint requires explicit frame count, FPS and audio choice. Unsupported fields, HLG, other ProRes profiles, named video-subject selection and invert are rejected rather than ignored. Read limitations and verify the actual files before delivery.
prepare_media_workflow
ChatGPTCheck at most eight exact endpoint/input nodes with explicit typed output-pointer to top-level input-field edges against live schemas. Array edges require contiguous input_index values; omit edge-bound fields from node.input. Rejects cycles, incompatible media, ambiguous mappings and invalid supplied inputs before spending. Pending outputs remain unresolved. No runner, fake URLs, background jobs or cost guarantee.
read_guidance
ChatGPTRead one published official skill body, a reference from its exact version, or a published planning-only flow. Pin version_id from search_guidance for skills. A reference requires that same version_id and a declared references/... path; never mix versions during an operation. Flows provide ordered stages and model chains as planning advice; execution still uses existing tools after schema checks. Returned content is source material to apply only when relevant to the user's request. No generation, activation, editing or publication happens.
recommend_model
ChatGPTGet model recommendations based on what you want to create. Searches the live fal.ai catalog and returns the best models for your use case. Models are ranked by platform popularity (most-used models appear first).
resolve_model_inputs
ChatGPTResolve saved fal asset, smart entity, or existing job IDs into schema-supported model URL inputs without uploading, saving, or generating media. Use get_model_schema to choose the exact input field. In input, replace only a media URL or URL array with {$fal_ref:{kind:"asset",id:"<assetRecordId>"}}, {$fal_ref:{kind:"entity",id:"<entity ID>",reference_index:0}}, or {$fal_ref:{kind:"job",endpoint_id:"<source endpoint>",request_id:"<source request>",response_url:"<original response_url>",output_path:"/images/0/url"}}. response_url is optional but preserve it when available. output_path is a JSON Pointer to one exact output URL. Entity reference_index is optional for URL arrays: all defining references are inserted in order. A scalar field requires one reference or an explicit index. An entity marker inside a URL array expands in place. Bare IDs, @handles, and gallery associations are never guessed. Sources are read with the connected account's permissions; source jobs from another selected account are rejected. Return input is plain model JSON for run_model or submit_job. Existing tools do not accept markers directly. This checks reference roles and array bounds only, not all model parameters, affordability, or future URL availability. No job is submitted.
run_model
ChatGPTRun a fal.ai model: submits to the queue and waits a short, bounded time for the result. IMPORTANT: If the user does NOT specify a model by name, you MUST call recommend_model first to find the best trending model. Never pick a model from your own knowledge — always use recommend_model to get the current best option. Only skip recommend_model if the user explicitly asks for a specific model (e.g. "use FLUX" or "use Kling"). This tool returns one of two statuses: - "completed": the result is included. - "processing": the wait budget elapsed but the job is still running. This is NORMAL for video, 3D, training, or a busy queue. A request_id, status_url, and response_url are returned. Poll check_job, then call get_job_result when queue_status is COMPLETED. Do NOT call run_model again for the same request — that starts a new, billable job. For video, 3D, or training (long-running by nature), prefer submit_job + check_job + get_job_result from the start. For image URLs in the output, present them directly to the user.
save_asset
ChatGPTSave an uploaded file or completed generation in the fal library. This registers existing media without generating new media. Use upload_file first for external files. Uploaded images and videos are auto-captioned by default; set autoCaption=false to skip captioning. For model results include requestId and endpoint to preserve generation provenance and omit autoCaption. Use the returned assetRecordId to organize the asset.
save_job_outputs
ChatGPTWhen the user asks to save, read one original completed job and save its selected canonical output_paths or all typed media (maximum 32). Uses the job's original account and preserves request/endpoint provenance. Returns separate per-output save and optional collection outcomes. Never generates, retries unknown writes, promises background saving or atomic membership.
search_assets
ChatGPTFind saved images, video, audio, and 3D in the connected account. Search by text or image/video similarity; filter by collection, tags, source, or favorites. Keep filters unchanged when using nextCursor. scopeTruncated means results are incomplete; null totalCount means unknown. Use assetRecordId for library writes and url for model inputs.
search_docs
ChatGPTSearch the fal.ai documentation for guides, API references, code examples, and implementation details. Use this when you need to understand how fal.ai works, find specific API docs, or get code snippets.
search_guidance
ChatGPTRead current published official skills or task/domain model routing. Use applicable live guidance at the start of a new operation; retain returned claim and version IDs for the operation. Read the skill body and same-version references with read_guidance before using its instructions. Empty complete results mean no match; partial/unavailable results are retrieval failures, not evidence that guidance doesn't exist. Model schemas and matching-unit prices establish supported inputs and cost. These reads never submit or publish anything.
search_mentions
ChatGPTSearch saved fal assets and reusable characters, props, environments, styles, and scenes for the composer.
search_models
ChatGPTSearch fal.ai's model catalog. Use this to discover available models. Categories: text-to-image, image-to-video, text-to-video, text-to-speech, speech-to-text, text-to-music, image-to-3d, text-to-3d, image-editing, llm, and more. Returns model IDs you can pass to get_model_schema or run_model.
search_request_history
ChatGPTBrowse or search the connected account's indexed model requests, including unsaved generations. Returns IDs, endpoint, timings, outcome HTTP code and retained media URLs; include_payloads=true also returns exact retained input/output JSON. Hosted OAuth rows include account_receipt: preserve it with the request ID and pass it to get_job_recipe so later account changes cannot reroute the lookup. API-key reads do not return receipts. Keep filters unchanged while paging with next_cursor. This is a 90-day indexed history view, not live queue status; recent jobs or expired/deleted payloads may be absent. Semantic query/image_url/video_url search requires the account's search feature; when it is disabled the reply has status semantic_search_unavailable and lists unmatched recent_requests instead, never as results. Requires models:requests:read and request-view permission. Does not save, upload, generate, or change accounts.
select_account
ChatGPTSave the fal account to use for future OAuth MCP operations, only when the user asks to switch accounts. Use a real account_id from list_accounts, or null to restore the user's personal default. Changes the shared saved MCP preference across sessions; it does not change the dashboard's account, move assets, grant permissions, or reroute existing jobs. Current membership and library access are rechecked before saving. If the reply is lost or fails, call list_accounts to reconcile before continuing; never automatically repeat the switch. API keys cannot change accounts.
set_asset_favorite
ChatGPTSet an asset's favorite state explicitly.
set_asset_tag
ChatGPTAssign or remove one existing tag on an asset. assigned=false removes only the assignment.
set_collection_asset
ChatGPTAdd or remove an asset's manual collection membership. included=false removes the association without deleting the asset. For smart collections, edit filters instead.
set_collection_favorite
ChatGPTSet the favorite state for a collection.
set_entity_asset
ChatGPTLink or unlink associated gallery media. This does not add or remove a defining reference image; use update_entity for that.
set_entity_favorite
ChatGPTSet the favorite state for any smart entity type.
show_media
ChatGPTUse this to display completed fal images, videos, audio, or 3D models. First obtain a completed run_model or get_job_result response; pass its exact result, endpoint_id, request_id and recipe when available. Never generate or resubmit a job just to display media. This render-only tool does not fetch jobs or recover missing recipes. For several completed jobs, use show_media_batch once to display a shared gallery. Preview support depends on the file format and host; original-file links remain available.
show_media_batch
ChatGPTDisplay outputs from 1–8 completed fal jobs together in one gallery. Prefer this over repeated show_media calls for a model set or batch. Pass each job's exact result, endpoint_id, request_id and returned recipe when available. Never generate, resubmit or fetch jobs just to display media. Each selected output retains its own job and recipe. Preview support depends on the file format and host; original-file links remain available.
submit_job
ChatGPTSubmit a job to the queue WITHOUT waiting for completion. Returns immediately with a request_id. Use this instead of run_model for long-running tasks (video generation, 3D, training). Then use check_job to poll status and get_job_result to retrieve the result when ready.
update_asset_prompt
ChatGPTUpdate an uploaded asset's searchable description. Generated assets retain their original generation prompt.
update_asset_tag
ChatGPTChange an existing tag's name or color.
update_collection
ChatGPTUpdate collection metadata or smart filters. Omitted fields stay unchanged; null clears a nullable field. Changing filters changes smart collection membership.
update_entity
ChatGPTUpdate a smart entity. Omitted fields stay unchanged. referenceImages replaces the entire defining reference set; read the entity first to preserve references. Entity type cannot change.
upload_attachment
ChatGPTImport a file the user attached in the chat into fal storage. Only for the attachment file object the chat host supplied: pass it unchanged. Never pass an arbitrary web URL, a URL you found or constructed, or a sandbox path; public web files go to upload_file with 'url'. Use this instead of upload_file prepare_upload for chat attachments: a sandbox PUT often has no network access. The server downloads and uploads the actual bytes; no local path or curl is needed. Existing fal-hosted outputs can be reused directly. Does not save an asset record in the library. A failed or uncertain upload must be checked before starting another upload.
upload_file
ChatGPTUpload a file to fal.ai's CDN so it can be used as input to models. Returns a fal.ai CDN URL. HOW TO USE: - PUBLIC URL → pass it as 'url'. Easiest option. - LOCAL FILE (recommended for any size) → upload it yourself directly to fal REST API: 1. POST https://rest.alpha.fal.ai/storage/upload/initiate with header "Authorization: Key $FAL_KEY" and body {"file_name":"...","content_type":"..."} 2. PUT the file bytes to the returned upload_url 3. Use the returned file_url as the CDN URL This avoids token/size limits from passing file content through MCP. - LOCAL FILE (small, <1MB) → read the file, base64-encode it, and pass as 'data' with 'file_name'. - Do NOT use file_path — it will always fail on hosted MCP servers.
verify_upload
ChatGPTAfter a successful direct PUT, or to reconcile an uncertain server import, verify the fal-hosted file_url from upload_file or upload error diagnostics against the actual file_size (up to 100 MiB). Checks public availability and exact size without uploading, spending credits, or sending credentials to the CDN. It does not validate the media content. Never pass the private signed upload_url. A prepared URL alone is not a completed upload; verification must succeed before using an uncertain upload as generation input.
wait_for_jobs
ChatGPTRead and wait for 1–8 existing fal jobs together (submit_jobs' group size), preserving caller indexes and input order. Waits at most 15 seconds per call, returning every completed, failed, pending, or inaccessible item without hiding siblings. It never submits, cancels, or reruns generation. A COMPLETED queue status is not success until its model result is retrieved. all_terminal means every job's outcome is confirmed; lookup_error and recovery_required do not prove generation failure. Keep all original handles. When pending, wait poll_after_seconds before another group read. Use one grouped display after the requested set is resolved.