Pixio-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PIXIO_API_KEY | Yes | Bearer token (pxio_live_...). Required. | |
| PIXIO_BASE_URL | No | Override if the API moves off beta. | https://beta.pixio.myapps.ai/api/v1 |
| PIXIO_LOG_LEVEL | No | Log level (e.g., DEBUG, INFO, WARNING, ERROR). Logs go to stderr as JSON lines. | INFO |
| PIXIO_DOWNLOAD_DIR | No | Where download_output drops the goods. | ~/pixio-outputs |
| PIXIO_SESSION_BUDGET | No | Cumulative credit ceiling per server process. | 300 |
| PIXIO_DEFAULT_TIMEOUT_S | No | Default wait for generate(wait=true) / wait_for_generation. | 180 |
| PIXIO_MAX_CREDITS_PER_JOB | No | Per-job credit cap. | 60 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_modelsA | Browse the Pixio model catalog (550+ models) with optional filters. Step 1 of the three-call contract for running any generation:
Args: type: Exact model type to match, e.g. "text-to-image", "image-to-image", "image-to-video", "text-to-video", "video-to-video", "text-to-audio". query: Case-insensitive substring matched against each model's id, name, and description (e.g. "flux", "background removal"). limit: Maximum number of models to return; clamped to 1..200 (default 50). offset: Number of matching models to skip, for pagination (negative values are treated as 0). Returns: {"models": [{"id", "name", "type", "credits", "company", "description"}, ...], "total_matching": , "returned": <len of "models">, "offset": }. "credits" is the catalog-listed cost per generation; descriptions are truncated to 200 characters. The catalog is cached for ~10 minutes. |
| get_model_paramsA | Fetch the exact input schema for one Pixio model. Step 2 of the three-call contract: list_models -> get_model_params ->
generate. Build the Critical gotchas when building params for generate():
Args: model_id: Catalog model id from list_models, e.g. "pixio/flux-1/schnell". Returns: The gateway /params response verbatim: {"model": {...}, "params": [{"name", "type", "label", "required", "defaultValue", "placeholder"?, "options"?: [{"value", "label"}]}, ...]}. An unknown model id yields a NOT_FOUND error dict. |
| estimate_costA | Estimate the credit cost of a generation BEFORE spending anything. Call this after get_model_params and before generate (the three-call contract is list_models -> get_model_params -> generate; this tool is the recommended pre-flight between steps 2 and 3). Costs come from the gateway estimate endpoint when available ("source": "estimate"), else from the catalog-listed per-generation cost ("source": "catalog"), else the cost is reported as unknown. Args: model_id: Catalog model id, e.g. "pixio/flux-1/schnell". params: The exact params object you intend to pass to generate(), built from the get_model_params response. Returns: {"model_id": str, "estimated_credits": int | null, "source": "estimate" | "catalog" | "unknown"}, plus a "warning" string only when the cost could not be determined ("estimated_credits" is null and "source" is "unknown"). |
| upload_mediaA | Upload a local file or mirror a remote URL to Pixio, returning a permanent public media URL. Use this before Args:
source: An http(s) URL (mirrored server-side into Pixio storage) or a
local file path ( Returns:
|
| generateA | Run a media generation job on Pixio, with spend guardrails. This is the final step of the 3-call discovery contract:
URLs-only contract: every media input inside Spend guardrails: the job cost is estimated up front and refused with
BUDGET_EXCEEDED if it exceeds the per-job cap or would exceed the
session budget — no credits are spent on a refusal. Pass Waiting: with Output URLs may be signed and expire after roughly an hour — call
Args:
model_id: Pixio model id, e.g. "pixio/flux-1/schnell".
params: Generation inputs built from Returns:
On success: {"generation_id", "status", "output_urls", "outputs",
"model_id", "credits_spent", "remaining_balance", "elapsed_s",
"error"}. With |
| get_generationA | Fetch the current status and outputs of one generation (no polling). A single Statuses: "processing" -> "succeeded" | "failed". Args:
generation_id: Id returned by Returns:
{"generation_id", "status", "output_urls", "outputs", "model_id",
"credits_spent", "remaining_balance", "elapsed_s", "error"} —
|
| wait_for_generationA | Block until a generation reaches a terminal status, or time out. Resumes waiting on any in-flight job — most usefully after On timeout the TIMEOUT_PENDING error again carries the
Args:
generation_id: Id returned by Returns: On success the job-result shape: {"generation_id", "status", "output_urls", "outputs", "model_id", "credits_spent", "remaining_balance", "elapsed_s", "error"}. On failure: {"error": {"code", "message", "details"}} with code GENERATION_FAILED (details include the provider reason), TIMEOUT_PENDING (details include generation_id and a resume hint), NOT_FOUND, AUTH, or UPSTREAM_ERROR. |
| download_outputA | Download every output file of a succeeded generation to a local directory. Call this after Args:
generation_id: The id returned by Returns:
|
| get_creditsA | Report the Pixio account's current credit balance. Use to check affordability before a job or to audit spend after one. Every terminal generate / wait_for_generation result already includes "remaining_balance", so this tool is mainly for standalone balance checks and recent-spend review. Args: include_ledger_tail: When true, also return the most recent credit ledger entries (spend and top-up history). ledger_limit: Maximum ledger entries to include (default 10; only used when include_ledger_tail is true; negative values are treated as 0). Returns: {"total": , "recurring": {"current", "quota", "lastTopOffAt"}, "permanent": }, plus "ledger_tail": [{"id", "reason", "deltaRecurring", "deltaPermanent", "sourceId", "createdAt"}, ...] when include_ledger_tail is true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RealDealCPA-VR/Pixio-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server