fal.ai MCP by usefulapi

Run fal.ai models, poll the inference queue and read model schemas.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
99%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,384Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.08% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "falai": {
      "url": "https://falai.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://falai.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢falai_list_models(keywords, page, total)

List or search fal.ai models in the registry (paginated). fal.ai API: GET /models (query: keywords, page, total).

Input Schema

{
  "type": "object",
  "properties": {
    "keywords": {
      "description": "Optional search string to filter models by.",
      "type": "string"
    },
    "page": {
      "description": "1-based page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "total": {
      "description": "Page size (number of models per page).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢falai_get_model_schema(model_id)

Get the OpenAPI 3 schema for a model — its input/output fields (components.schemas). Use this to learn what inputs a model accepts before submitting. fal.ai API: GET /openapi/queue/openapi.json?endpoint_id={model_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    }
  },
  "required": [
    "model_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢falai_get_request_status(model_id, request_id, logs)

Get the status of a queued request (IN_QUEUE | IN_PROGRESS | COMPLETED). fal.ai queue: GET {queue}/{model_id}/requests/{request_id}/status (optional logs=1).

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "description": "The queue request id returned when the request was submitted."
    },
    "logs": {
      "description": "Include queue logs in the response (?logs=1).",
      "type": "boolean"
    }
  },
  "required": [
    "model_id",
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢falai_get_request_result(model_id, request_id)

Get the final output of a COMPLETED queued request. fal.ai queue: GET {queue}/{model_id}/requests/{request_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "description": "The queue request id returned when the request was submitted."
    }
  },
  "required": [
    "model_id",
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴falai_submit_request(model_id, input)

Submit an inference request to the queue and return immediately (async — does NOT wait for completion). Returns { request_id, response_url, status_url, cancel_url, queue_position }. Consumes fal credits when the model runs. fal.ai queue: POST {queue}/{model_id} with body = the model input.

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The model's input object — arbitrary params for that model, e.g. { \"prompt\": \"a cat\" }. Use falai_get_model_schema to learn the fields."
    }
  },
  "required": [
    "model_id",
    "input"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴falai_run_model(model_id, input, max_wait_seconds, poll_interval_seconds)

Convenience 'subscribe': submit a request, poll its status until COMPLETED, then return the result. Consumes fal credits. If it does not complete within the wait budget, returns a { status, request_id, status_url, note } object (NOT an error) so you can keep polling with falai_get_request_status / falai_get_request_result.

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The model's input object — arbitrary params for that model, e.g. { \"prompt\": \"a cat\" }. Use falai_get_model_schema to learn the fields."
    },
    "max_wait_seconds": {
      "description": "Max seconds to wait for completion (default 60, capped at 300).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "poll_interval_seconds": {
      "description": "Seconds between status polls (default 3, min 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "model_id",
    "input"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴falai_cancel_request(model_id, request_id)

Request cancellation of a queued (not-yet-started) request. Returns 202 { status: 'CANCELLATION_REQUESTED' }. fal.ai queue: PUT {queue}/{model_id}/requests/{request_id}/cancel.

Input Schema

{
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "minLength": 1,
      "description": "The fal.ai model id, used raw as a path segment, e.g. 'fal-ai/flux/schnell'."
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "description": "The queue request id returned when the request was submitted."
    }
  },
  "required": [
    "model_id",
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools