Servidor MCP

mcp

com.pixfaro/mcp
Diseño y creatividad Medios y contenido Público y accesible MCP 2026-07-28

Qué hace este MCP

Generates and edits images, renders templated social cards, and manages reusable image assets.

check_job
Check an async generation job by its j_… id. Slow models (mode "async" in list_models) return a job instead of an image — poll this until it succeeds or fails.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'j_… id returned by generate_image / edit_image'}}}
edit_image
Edit a previously generated image by its img_… id with a natural-language instruction.
Esquema de entrada
{'type': 'object', 'required': ['image', 'instruction'], 'properties': {'image': {'type': 'string', 'description': 'img_… id of a previous generation'}, 'model': {'type': 'string', 'default': 'nano-banana-2'}, 'overlay': {'oneOf': [{'type': 'string', 'const': 'default', 'description': 'Apply your saved brand kit (set with PUT /v1/brand-kit)'}, {'type': 'object', 'properties': {'font': {'enum': ['space-grotesk', 'inter', 'jetbrains-mono'], 'type': 'string', 'description': 'text only; default space-grotesk'}, 'size': {'enum': ['s', 'm', 'l'], 'type': 'string', 'description': 'text cap-height or logo width; default m'}, 'text': {'type': 'string', 'description': 'Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)'}, 'color': {'type': 'string', 'description': 'text only; "auto" (default) or #RRGGBB'}, 'margin': {'description': '"safe" (default) or a non-negative px number'}, 'weight': {'enum': [400, 500, 700], 'type': 'number', 'description': 'text only; default 700'}, 'logo_id': {'type': 'string', 'description': 'A logo uploaded via POST /v1/logos (mutually exclusive with text)'}, 'opacity': {'type': 'number', 'description': '0.2–1.0, default 0.9'}, 'position': {'enum': ['top-left', 'top-right', 'bottom-left', 'bottom-right'], 'type': 'string', 'description': 'default bottom-right'}, 'logo_style': {'enum': ['sticker', 'shadow', 'outline', 'none'], 'type': 'string', 'description': 'Logo treatment (logo_id only). RECOMMENDED default "sticker": crisp die-cut border + drop shadow, legible on any photo. "shadow": drop shadow only (use when the logo already contrasts the scene). "outline": border only, flat cut-out. "none": bare logo, its own alpha only (use only for a pre-processed logo on a controlled background).'}}, 'description': 'Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.'}]}, 'resolution': {'enum': ['1K', '2K', '4K'], 'type': 'string', 'description': "Output tier; defaults to the source image's"}, 'instruction': {'type': 'string', 'description': 'What to change'}, 'aspect_ratio': {'type': 'string', 'description': "Omit to keep the source image's shape. If set, it is per-model — see list_models."}}}
generate_image
Generate an image from a text prompt. Returns a hosted URL plus cost and balance. Slow models (mode "async" in list_models) return a j_… job id instead — poll it with check_job.
Esquema de entrada
{'type': 'object', 'required': ['prompt'], 'properties': {'model': {'type': 'string', 'default': 'nano-banana-2', 'description': 'Model id from list_models'}, 'prompt': {'type': 'string', 'description': 'What to draw'}, 'overlay': {'oneOf': [{'type': 'string', 'const': 'default', 'description': 'Apply your saved brand kit (set with PUT /v1/brand-kit)'}, {'type': 'object', 'properties': {'font': {'enum': ['space-grotesk', 'inter', 'jetbrains-mono'], 'type': 'string', 'description': 'text only; default space-grotesk'}, 'size': {'enum': ['s', 'm', 'l'], 'type': 'string', 'description': 'text cap-height or logo width; default m'}, 'text': {'type': 'string', 'description': 'Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)'}, 'color': {'type': 'string', 'description': 'text only; "auto" (default) or #RRGGBB'}, 'margin': {'description': '"safe" (default) or a non-negative px number'}, 'weight': {'enum': [400, 500, 700], 'type': 'number', 'description': 'text only; default 700'}, 'logo_id': {'type': 'string', 'description': 'A logo uploaded via POST /v1/logos (mutually exclusive with text)'}, 'opacity': {'type': 'number', 'description': '0.2–1.0, default 0.9'}, 'position': {'enum': ['top-left', 'top-right', 'bottom-left', 'bottom-right'], 'type': 'string', 'description': 'default bottom-right'}, 'logo_style': {'enum': ['sticker', 'shadow', 'outline', 'none'], 'type': 'string', 'description': 'Logo treatment (logo_id only). RECOMMENDED default "sticker": crisp die-cut border + drop shadow, legible on any photo. "shadow": drop shadow only (use when the logo already contrasts the scene). "outline": border only, flat cut-out. "none": bare logo, its own alpha only (use only for a pre-processed logo on a controlled background).'}}, 'description': 'Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.'}]}, 'resolution': {'enum': ['1K', '2K', '4K'], 'type': 'string', 'description': 'Output tier (default 1K); supported tiers and prices per model are in list_models'}, 'aspect_ratio': {'type': 'string', 'description': 'e.g. "16:9" (default 1:1). Ratios are per-model — list_models names the ones verified for each. Gemini models take a fixed set (no 4:1 or wider); the budget fal models compute any bounded W:H, so use one of those for banner shapes — up to 4:1 / 1:4, beyond which the derived strip gets too thin to send. Every fal model is 1K-only, so that is the practical bound.'}}}
get_balance
Show the current prepaid balance in USD.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
list_models
List available image models with pricing and latency.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
list_templates
List card templates with their slots, style axes and exact price.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}}
render_template
Render a typeset card from a template — a finished, on-brand social image (quote card, post card) in about two seconds. Cheaper and more legible than generating type with a model. Get the templates and their slots from list_templates.
Esquema de entrada
{'type': 'object', 'required': ['template', 'slots'], 'properties': {'size': {'enum': ['16:9', '1:1', '4:5', 'og'], 'type': 'string', 'description': 'default 16:9'}, 'scale': {'enum': [1, 2, 3], 'type': 'number', 'description': 'device pixel ratio; 2 default, 3 costs $0.01 more'}, 'slots': {'type': 'object', 'description': 'The template\'s slot values, e.g. { "quote": "…", "handle": "@you" }. Image slots take an asset id from upload_asset, or "default" for your brand kit.'}, 'style': {'oneOf': [{'enum': ['auto', 'brand'], 'type': 'string'}, {'type': 'object', 'properties': {'font': {'type': 'string'}, 'layout': {'type': 'string'}, 'shadow': {'type': 'boolean', 'description': 'crisp offset shadow behind the type'}, 'palette': {'type': 'string'}}}], 'description': 'Leave unset for the template default, "auto" for a random combination that avoids your last one, "brand" for your saved colours, or an object of style axes.'}, 'overlay': {'oneOf': [{'type': 'string', 'const': 'default', 'description': 'Apply your saved brand kit (set with PUT /v1/brand-kit)'}, {'type': 'object', 'properties': {'font': {'enum': ['space-grotesk', 'inter', 'jetbrains-mono'], 'type': 'string', 'description': 'text only; default space-grotesk'}, 'size': {'enum': ['s', 'm', 'l'], 'type': 'string', 'description': 'text cap-height or logo width; default m'}, 'text': {'type': 'string', 'description': 'Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)'}, 'color': {'type': 'string', 'description': 'text only; "auto" (default) or #RRGGBB'}, 'margin': {'description': '"safe" (default) or a non-negative px number'}, 'weight': {'enum': [400, 500, 700], 'type': 'number', 'description': 'text only; default 700'}, 'logo_id': {'type': 'string', 'description': 'A logo uploaded via POST /v1/logos (mutually exclusive with text)'}, 'opacity': {'type': 'number', 'description': '0.2–1.0, default 0.9'}, 'position': {'enum': ['top-left', 'top-right', 'bottom-left', 'bottom-right'], 'type': 'string', 'description': 'default bottom-right'}, 'logo_style': {'enum': ['sticker', 'shadow', 'outline', 'none'], 'type': 'string', 'description': 'Logo treatment (logo_id only). RECOMMENDED default "sticker": crisp die-cut border + drop shadow, legible on any photo. "shadow": drop shadow only (use when the logo already contrasts the scene). "outline": border only, flat cut-out. "none": bare logo, its own alpha only (use only for a pre-processed logo on a controlled background).'}}, 'description': 'Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.'}]}, 'template': {'type': 'string', 'description': 'Template id from list_templates, e.g. "quote-card"'}}}
upload_asset
Upload an image (PNG or JPEG, ≤5 MB) as a reusable asset — an avatar for a card, for example. Returns an ast_… id to pass into a template slot.
Esquema de entrada
{'type': 'object', 'required': ['data', 'kind'], 'properties': {'data': {'type': 'string', 'description': 'data URI or bare base64, e.g. "data:image/png;base64,…"'}, 'kind': {'enum': ['avatar', 'logo', 'photo', 'image'], 'type': 'string', 'description': 'what the image is for; "avatar" for a card byline'}}}
Añadido
check_job
17 de September de 2026 a las 12:36
Añadido
get_balance
17 de September de 2026 a las 12:36
Añadido
list_templates
17 de September de 2026 a las 12:36
Añadido
list_models
17 de September de 2026 a las 12:36
Añadido
upload_asset
17 de September de 2026 a las 12:36
Añadido
render_template
17 de September de 2026 a las 12:36
Añadido
edit_image
17 de September de 2026 a las 12:36
Añadido
generate_image
17 de September de 2026 a las 12:36