fal.ai MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FAL_KEY | No | Private account API key; ignored as a fallback when named profiles are explicitly configured. | |
| FAL_ACCOUNTS | No | Private unique {name,api_key,token_file} account profiles. | |
| FAL_AUDIT_LOG | No | Optional best-effort append-only guard decision file, no payload/key. | |
| FAL_READ_ONLY | No | 1/true hides and directly refuses every non-read task. | |
| FAL_TOKEN_FILE | No | Absolute owner-private regular token-only file; overrides selected direct key. | |
| FAL_DEFAULT_ACCOUNT | No | Exact selected profile label; provider owner is not inferred. | |
| FAL_ALLOW_DESTRUCTIVE | No | 0/false refuses confirmed paid/mutating/file-write tasks. | |
| FAL_REQUEST_TIMEOUT_MS | No | Default 30000; 100–300000 permitted; no auto retry. | 30000 |
| FAL_MIN_REQUEST_INTERVAL_MS | No | Default 350; 0–10000 permitted; process-wide request spacing, not a provider/cross-process limiter. | 350 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_modelsA | Unified endpoint for discovering model endpoints. Supports three usage modes: 1. List Mode (no parameters): Paginated list of all available model endpoints with minimal metadata. 2. Find Mode ( 3. Search Mode (search parameters): Filter models by free-text query, category, or status. Expansion:
Use
Examples of
See fal.ai Model APIs for more details. Authentication: Optional. Providing an API key grants higher rate limits. Common Use Cases:
|
| get_pricingA | Returns unit pricing for requested endpoint IDs. Most models use output-based pricing (e.g., per image/video with proportional adjustments for resolution/length). Some models use GPU-based pricing depending on architecture. Values are expressed per model's billing unit in a given currency. Authentication: Required. Users must provide a valid API key. Custom pricing or discounts may be applied based on account status. Common Use Cases:
See fal.ai pricing for more details. |
| estimate_pricingA | Computes cost estimates using one of two methods: 1. Historical API Price (
2. Unit Price (
Authentication: Required. Users must provide a valid API key. Custom pricing or discounts may be applied based on account status. Common Use Cases:
See fal.ai pricing for more details. |
| get_usageA | Returns paginated usage records for your workspace with filters for endpoint, user, date range, and auth method. Each item includes the billed unit quantity, the pre-discount unit price and cost_subtotal, any percentage discount applied, and the final cost_total (cost_subtotal − cost_discount). Key Features:
Common Use Cases:
See fal.ai docs for more details. |
| get_analyticsA | Time-bucketed metrics per model endpoint, including request counts, success/error
rates, and latency percentiles. Metric Selection:
You must specify which metrics to include using the Available Metrics: The Volume
Error type breakdown
Queue / prepare latency
Request execution latency
Cold boot
Billing
Key Features:
Common Use Cases:
See Queue API docs for more details. |
| get_billing_eventsA | Returns paginated individual billing event records with filters for endpoint and date range. Each record includes the request ID, timestamp, endpoint, output units billed, and a cost breakdown in USD (cost_subtotal, cost_discount, cost_total; cost_estimate_nano_usd carries cost_total in nano USD). Key Features:
Common Use Cases:
See fal.ai docs for more details. |
| delete_request_payloadsA | Deletes the IO payloads and associated CDN output files for a specific request. Important:
What gets deleted:
What is NOT deleted:
Response:
Idempotency:
See fal.ai docs for more details about request payloads. |
| list_requests_by_endpointA | Lists requests for one or more endpoints (same Authentication: Requires API key (user or enterprise). Filters:
Sorting:
Expansions:
|
| search_requestsA | Search, filter, and browse your request history. Supports three modes: 1. Semantic Search ( 2. Filtered Browse (no 3. Semantic + Filters (search params AND filter params): Combine semantic search with hard filters. Filters narrow the candidate set before ranking by similarity. Filter Options:
Examples:
|
| list_workflowsA | List workflows for the authenticated user with optional search and filtering. Features:
Authentication: Required. Returns only workflows owned by the authenticated user. Common Use Cases:
|
| create_workflowA | Create a new workflow owned by the authenticated user. Authentication: Required. Common Use Cases:
Note: Workflow names must be unique within your namespace. Creating a workflow with a name you already use returns a 400 validation error. |
| get_workflowA | Get detailed information about a specific workflow, including its full contents/definition. Authentication: Required. Common Use Cases:
|
| list_assetsB | Browse and semantically search fal Assets across all media, uploads, favorites, collections, tags, and character references. |
| list_asset_collectionsB | List asset collections for the authenticated user's fal Assets library. |
| create_asset_collectionC | Create asset collection for the authenticated user's fal Assets library. |
| get_asset_collectionC | Get asset collection for the authenticated user's fal Assets library. |
| update_asset_collectionC | Update asset collection for the authenticated user's fal Assets library. |
| delete_asset_collectionC | Delete asset collection for the authenticated user's fal Assets library. |
| get_asset_collection_hierarchyA | Get the nested subtree rooted at an asset collection, plus its ancestor collections ordered from the top level down to its direct parent. |
| favorite_asset_collectionC | Favorite an asset collection for the authenticated user's fal Assets library. |
| unfavorite_asset_collectionC | Unfavorite an asset collection for the authenticated user's fal Assets library. |
| move_asset_collectionA | Move a manual asset collection under another collection, or to the top level. Only manual collections can be moved or act as folders; nesting is limited to 5 levels deep and cannot create a cycle. |
| list_asset_collection_assetsC | Browse assets in a collection for the authenticated user's fal Assets library. |
| add_asset_to_collectionA | Add an asset to a manual or character collection. Provide a request ID or vector ID; unresolved references are materialized before local collection state is added. For character collections, the asset is added by applying the character tag. |
| remove_asset_from_collectionB | Remove an asset from a manual or character collection by request ID or vector ID. |
| list_asset_charactersB | List asset characters for the authenticated user's fal Assets library. |
| create_asset_characterA | Create an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added. |
| update_asset_characterB | Update an asset character for the authenticated user's fal Assets library. Prefer vector IDs or request IDs in reference_images for existing fal-generated assets; use fal-hosted image URLs only for standalone images. Unresolved ID references are materialized before character state is added. |
| get_asset_characterC | Get asset character for the authenticated user's fal Assets library. |
| delete_asset_characterC | Delete asset character for the authenticated user's fal Assets library. |
| favorite_asset_characterB | Favorite an asset character for the authenticated user's fal Assets library. |
| unfavorite_asset_characterC | Unfavorite an asset character for the authenticated user's fal Assets library. |
| list_asset_tagsB | List asset tags for the authenticated user's fal Assets library. |
| create_asset_tagC | Create asset tag for the authenticated user's fal Assets library. |
| set_asset_tags_for_assetB | Set tags for an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added. |
| update_asset_tagC | Update asset tag for the authenticated user's fal Assets library. |
| delete_asset_tagC | Delete asset tag for the authenticated user's fal Assets library. |
| upload_assetC | Upload asset for the authenticated user's fal Assets library. |
| get_assetA | Get an asset document by vector ID from the authenticated user's fal Assets library. The vector may exist only in Turbopuffer; in that case the response returns the Turbopuffer document with empty local state. |
| get_asset_lineageA | Get the derivation lineage of an asset by asset ID: the inputs it was generated from, the generation requests along the way, and any referenced characters, traversed recursively up to |
| favorite_assetB | Favorite an asset. Provide a request ID or vector ID; unresolved references are materialized before favorite state is added. |
| unfavorite_assetC | Unfavorite an asset by request ID or vector ID. |
| list_asset_tags_for_assetA | List tags for an asset by vector ID. Vectors that have not been saved as assets return an empty tag list. |
| assign_asset_tagA | Assign a tag to an asset. Provide a request ID or vector ID; unresolved references are materialized before tag state is added. |
| unassign_asset_tagC | Unassign a tag from an asset by request ID or vector ID. |
| get_storage_file_aclA | Returns the Access Control List currently applied to a fal CDN file. The ACL consists of a default decision ( Authentication: Required. The API key must have the |
| set_storage_file_aclA | Replaces the Access Control List of a fal CDN file. The ACL consists of a default decision ( Rules referencing users that do not exist are dropped. The response reflects the ACL actually applied, so verify it contains the rules you sent. Authentication: Required. The API key must have the |
| sign_storage_file_urlA | Creates a signed URL that grants temporary access to a fal CDN file, regardless of its ACL. Useful for sharing access-restricted files. The signature is valid for Authentication: Required. The API key must have the |
| get_storage_settingsA | Returns the account-level storage lifecycle settings applied to newly uploaded fal CDN files:
Both fields are null when the account has never saved settings. Authentication: Required. The API key must have the |
| update_storage_settingsA | Replaces the account-level storage lifecycle settings applied to newly uploaded fal CDN files. Omitted or null fields are cleared (reset to the system default), so always send the full desired configuration. ACL rules referencing users that do not exist are dropped. The response reflects the settings actually saved, so verify it contains the rules you sent. These are the same settings that the per-request
Authentication: Required. The API key must have the |
| get_account_billingB | Returns billing information for the authenticated account. Use the Expandable Fields:
Common Use Cases:
|
| get_organization_teamsA | Returns the list of teams in your organization with their details.
Must be called with an admin API key on the organization's root team. Key Features:
See fal.ai docs for more details. |
| get_organization_usageA | Returns paginated usage records across all teams and product lines in your
organization, with each record attributed to a specific team via the
Covers all three fal product lines:
Must be called with an admin API key on the organization's root team. Key Features:
See fal.ai docs for more details. |
| get_model_infoC | Exact current catalog lookup with OpenAPI expansion. No generation or inferred model defaults. Schema may be unavailable; inspect actual native fields. |
| run_modelA | Confirmed paid model request after current native input-schema validation. Exact model_id/input required; image/video commands do not invent fields or choose a default. Queue submissions return receipt only; synchronous timeout may leave an unknown paid outcome. No retry or polling. |
| submit_jobA | Confirmed paid model request after current native input-schema validation. Exact model_id/input required; image/video commands do not invent fields or choose a default. Queue submissions return receipt only; synchronous timeout may leave an unknown paid outcome. No retry or polling. |
| generate_imageB | Confirmed paid model request after current native input-schema validation. Exact model_id/input required; image/video commands do not invent fields or choose a default. Queue submissions return receipt only; synchronous timeout may leave an unknown paid outcome. No retry or polling. |
| generate_videoA | Confirmed paid model request after current native input-schema validation. Exact model_id/input required; image/video commands do not invent fields or choose a default. Queue submissions return receipt only; synchronous timeout may leave an unknown paid outcome. No retry or polling. |
| get_job_statusB | One read using the SDK-compatible owner/app root, not the full model subpath. No auto-polling, paid re-submission or arbitrary status URL. |
| get_job_resultA | One result read using the receipt/model root. No wait loop, media download, re-submission or auto-upload. Signed credential URLs are redacted; ordinary output media URLs remain account data. |
| cancel_jobA | Confirmed native cancellation request. Cancellation receipt is not proof processing stopped or credits were refunded; current provider state controls eligibility. No retry. |
| upload_fileB | Confirmed selected absolute regular non-symlink local file, 1 byte–20 MiB. Uses pinned SDK upload-initiation protocol then a credential-free HTTPS fal.media PUT with redirects refused. No remote URL ingestion, base64 model output, multipart retries or automatic generation. |
| list_accountsB | Local labels/default/auth method only. No keys, token paths, real provider identities or network request. |
| get_operation_schemaC | Local current native method/path/query/header/body schema and exact provenance. No credential or provider request. |
| preview_generation_batchA | Read-only current schema validation and native unit-pricing lookup for all requested async jobs. Hash binds ordered exact inputs/lifecycle/store-IO/profile label/current schemas/unit quotes. Unit pricing is not final cost or a spending cap. No generation, file write or key ownership validation. |
| submit_generation_batchA | Confirmed one-to-ten async jobs. Refetch all current schemas/unit quotes and validate all before first paid submission; refuse changed hash. Submit sequentially, stop on first failure, report known request IDs/failed and unattempted indices. No polling, retries, rollback, continuation or budget guarantee. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 66 tools
run_model, submit_job, generate_image, and generate_video share byte-identical descriptions ('Confirmed paid model request after current native input-schema validation...'), so an agent cannot tell which to pick. There is also overlap among estimate_pricing/get_pricing and get_usage/get_billing_events/get_account_billing, though most asset, storage, and workflow tools are distinct.
Nearly every tool follows a clean verb_noun snake_case pattern (get_asset, create_asset_collection, delete_asset_tag, list_asset_characters, set_storage_file_acl). Even the generation and job tools (run_model, submit_job, cancel_job, preview_generation_batch) fit the same convention, with no camelCase or mixed styles.
66 tools far exceeds a well-scoped surface and crosses the extreme-mismatch threshold. The count is inflated by near-duplicate generation tools (run_model/submit_job/generate_image/generate_video) and a sprawling asset API, making the set unwieldy for an agent to navigate.
Coverage is broad and genuinely deep: full CRUD for asset collections, characters, and tags; billing, usage, analytics, storage ACL/lifecycle, jobs, requests, and organization endpoints. The main gap is workflows, which support list/create/get but no update or delete, leaving a lifecycle dead end.