Server definition
- Hash
- sha256:3f0e83006962f36b8fb4074c8edf183292f6071e5ed56e71b4dd089af405d2c5
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "Generate and edit images with any major model. Pick one with list_models; nano-banana-2 is the general default.",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"job_id": {
"description": "j_… id returned by generate_image / edit_image",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"outputSchema": null
},
{
"description": "Edit a previously generated image by its img_… id with a natural-language instruction.",
"inputSchema": {
"properties": {
"aspect_ratio": {
"description": "Omit to keep the source image's shape. If set, it is per-model — see list_models.",
"type": "string"
},
"image": {
"description": "img_… id of a previous generation",
"type": "string"
},
"instruction": {
"description": "What to change",
"type": "string"
},
"model": {
"default": "nano-banana-2",
"type": "string"
},
"overlay": {
"oneOf": [
{
"const": "default",
"description": "Apply your saved brand kit (set with PUT /v1/brand-kit)",
"type": "string"
},
{
"description": "Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.",
"properties": {
"color": {
"description": "text only; \"auto\" (default) or #RRGGBB",
"type": "string"
},
"font": {
"description": "text only; default space-grotesk",
"enum": [
"space-grotesk",
"inter",
"jetbrains-mono"
],
"type": "string"
},
"logo_id": {
"description": "A logo uploaded via POST /v1/logos (mutually exclusive with text)",
"type": "string"
},
"logo_style": {
"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).",
"enum": [
"sticker",
"shadow",
"outline",
"none"
],
"type": "string"
},
"margin": {
"description": "\"safe\" (default) or a non-negative px number"
},
"opacity": {
"description": "0.2–1.0, default 0.9",
"type": "number"
},
"position": {
"description": "default bottom-right",
"enum": [
"top-left",
"top-right",
"bottom-left",
"bottom-right"
],
"type": "string"
},
"size": {
"description": "text cap-height or logo width; default m",
"enum": [
"s",
"m",
"l"
],
"type": "string"
},
"text": {
"description": "Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)",
"type": "string"
},
"weight": {
"description": "text only; default 700",
"enum": [
400,
500,
700
],
"type": "number"
}
},
"type": "object"
}
]
},
"resolution": {
"description": "Output tier; defaults to the source image's",
"enum": [
"1K",
"2K",
"4K"
],
"type": "string"
}
},
"required": [
"image",
"instruction"
],
"type": "object"
},
"name": "edit_image",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"aspect_ratio": {
"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.",
"type": "string"
},
"model": {
"default": "nano-banana-2",
"description": "Model id from list_models",
"type": "string"
},
"overlay": {
"oneOf": [
{
"const": "default",
"description": "Apply your saved brand kit (set with PUT /v1/brand-kit)",
"type": "string"
},
{
"description": "Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.",
"properties": {
"color": {
"description": "text only; \"auto\" (default) or #RRGGBB",
"type": "string"
},
"font": {
"description": "text only; default space-grotesk",
"enum": [
"space-grotesk",
"inter",
"jetbrains-mono"
],
"type": "string"
},
"logo_id": {
"description": "A logo uploaded via POST /v1/logos (mutually exclusive with text)",
"type": "string"
},
"logo_style": {
"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).",
"enum": [
"sticker",
"shadow",
"outline",
"none"
],
"type": "string"
},
"margin": {
"description": "\"safe\" (default) or a non-negative px number"
},
"opacity": {
"description": "0.2–1.0, default 0.9",
"type": "number"
},
"position": {
"description": "default bottom-right",
"enum": [
"top-left",
"top-right",
"bottom-left",
"bottom-right"
],
"type": "string"
},
"size": {
"description": "text cap-height or logo width; default m",
"enum": [
"s",
"m",
"l"
],
"type": "string"
},
"text": {
"description": "Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)",
"type": "string"
},
"weight": {
"description": "text only; default 700",
"enum": [
400,
500,
700
],
"type": "number"
}
},
"type": "object"
}
]
},
"prompt": {
"description": "What to draw",
"type": "string"
},
"resolution": {
"description": "Output tier (default 1K); supported tiers and prices per model are in list_models",
"enum": [
"1K",
"2K",
"4K"
],
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "generate_image",
"outputSchema": null
},
{
"description": "Show the current prepaid balance in USD.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_balance",
"outputSchema": null
},
{
"description": "List available image models with pricing and latency.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_models",
"outputSchema": null
},
{
"description": "List card templates with their slots, style axes and exact price.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_templates",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"overlay": {
"oneOf": [
{
"const": "default",
"description": "Apply your saved brand kit (set with PUT /v1/brand-kit)",
"type": "string"
},
{
"description": "Optional brand overlay composited into a corner after generation. Provide EITHER text OR logo_id (an uploaded brand logo), not both.",
"properties": {
"color": {
"description": "text only; \"auto\" (default) or #RRGGBB",
"type": "string"
},
"font": {
"description": "text only; default space-grotesk",
"enum": [
"space-grotesk",
"inter",
"jetbrains-mono"
],
"type": "string"
},
"logo_id": {
"description": "A logo uploaded via POST /v1/logos (mutually exclusive with text)",
"type": "string"
},
"logo_style": {
"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).",
"enum": [
"sticker",
"shadow",
"outline",
"none"
],
"type": "string"
},
"margin": {
"description": "\"safe\" (default) or a non-negative px number"
},
"opacity": {
"description": "0.2–1.0, default 0.9",
"type": "number"
},
"position": {
"description": "default bottom-right",
"enum": [
"top-left",
"top-right",
"bottom-left",
"bottom-right"
],
"type": "string"
},
"size": {
"description": "text cap-height or logo width; default m",
"enum": [
"s",
"m",
"l"
],
"type": "string"
},
"text": {
"description": "Handle to render, ≤64 chars, single line (mutually exclusive with logo_id)",
"type": "string"
},
"weight": {
"description": "text only; default 700",
"enum": [
400,
500,
700
],
"type": "number"
}
},
"type": "object"
}
]
},
"scale": {
"description": "device pixel ratio; 2 default, 3 costs $0.01 more",
"enum": [
1,
2,
3
],
"type": "number"
},
"size": {
"description": "default 16:9",
"enum": [
"16:9",
"1:1",
"4:5",
"og"
],
"type": "string"
},
"slots": {
"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.",
"type": "object"
},
"style": {
"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.",
"oneOf": [
{
"enum": [
"auto",
"brand"
],
"type": "string"
},
{
"properties": {
"font": {
"type": "string"
},
"layout": {
"type": "string"
},
"palette": {
"type": "string"
},
"shadow": {
"description": "crisp offset shadow behind the type",
"type": "boolean"
}
},
"type": "object"
}
]
},
"template": {
"description": "Template id from list_templates, e.g. \"quote-card\"",
"type": "string"
}
},
"required": [
"template",
"slots"
],
"type": "object"
},
"name": "render_template",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"data": {
"description": "data URI or bare base64, e.g. \"data:image/png;base64,…\"",
"type": "string"
},
"kind": {
"description": "what the image is for; \"avatar\" for a card byline",
"enum": [
"avatar",
"logo",
"photo",
"image"
],
"type": "string"
}
},
"required": [
"data",
"kind"
],
"type": "object"
},
"name": "upload_asset",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3f0e83006962f36b8fb4074c8edf183292f6071e5ed56e71b4dd089af405d2c5 | sha256sum