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 |
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": 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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