Server definition
- Hash
- sha256:1a3882055db897d2c79a103257dfeae2b0ff7165ba208258fe69cff46b66fd33
- What it is
- What a remote MCP server returned when asked what it offers: 14 tools
The blob, as servednamed by its sha256
{
"instructions": "Use DesignForYou tools for template discovery, generated visual assets, and DesignForYou account credit questions. For logo/design requests, call recommend_template or browse_templates first unless the user has already chosen a template_id, then call generate after the user selects a template. To make a reusable private template from a structured brief, call create_template; then use its returned template_id with get_text_fields and generate. The generate tool accepts model='minimax-h3-image-balanced' or model='minimax-h3-image-quality' (also 'h3 balanced'/'h3 quality') for MiniMax H3 stills; pass context_ids when the still should use prior designs as ordered visual references. To turn a story premise into a full interactive comic (5 pages of art, ambient motion, voice-over, readable at a public link), call create_comic, then poll comic_status until ready and share the reader_url. If the client wants to direct the comic with its own model, call comic_design_brief, author the PanelScript Story JSON client-side, then call comic_submit_design; for specific edits, call comic_revision_brief and comic_submit_revision so only affected art, motion, or voice nodes regenerate. When the user asks how many credits they have left, their credit balance, remaining credits, or usage in a DesignForYou context, call get_credits and report that result rather than answering from general ChatGPT billing knowledge.",
"tools": [
{
"description": "Browse the DesignForYou template catalog. Optionally filter by category (e.g. 'instagram', 'app-store', 'logo', 'living-panels'). Returns template IDs, names, and previews.",
"inputSchema": {
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by category (e.g. 'instagram', 'app-store', 'logo')",
"title": "Category"
},
"subcategory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional subcategory filter (e.g. 'lettermark', 'wordmark', 'app_icon')",
"title": "Subcategory"
}
},
"required": [],
"type": "object"
},
"name": "browse_templates",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Return the no-server-LLM Living Panels authoring brief: PanelScript instructions, schema, unit templates, and success criteria. Use this when the MCP client will do the creative direction with its own model, then call comic_submit_design with the authored Story JSON.",
"inputSchema": {
"properties": {
"premise": {
"description": "Premise the client will use to author the Living Panels PanelScript JSON itself.",
"minLength": 10,
"title": "Premise",
"type": "string"
}
},
"required": [
"premise"
],
"type": "object"
},
"name": "comic_design_brief",
"outputSchema": null
},
{
"description": "Return the current Story JSON, stale-write hash, allowed patch paths, and dirty-node contract for a client-authored Living Panels revision. Use this when the client will decide the edit with its own model, then call comic_submit_revision.",
"inputSchema": {
"properties": {
"comic_id": {
"description": "Comic id to revise.",
"minLength": 1,
"title": "Comic Id",
"type": "string"
}
},
"required": [
"comic_id"
],
"type": "object"
},
"name": "comic_revision_brief",
"outputSchema": null
},
{
"description": "Check asset-production progress for a comic created with create_comic: panels, motion clips, and voice lines done vs total, plus ready=true when the whole comic is live at its reader_url. Free to call.",
"inputSchema": {
"properties": {
"comic_id": {
"description": "Comic id returned by create_comic",
"minLength": 1,
"title": "Comic Id",
"type": "string"
}
},
"required": [
"comic_id"
],
"type": "object"
},
"name": "comic_status",
"outputSchema": null
},
{
"description": "Accept a client-authored Living Panels Story JSON and start artifact production without using a server story LLM. The client does direction; DesignForYou validates, saves, generates character sheets, panel/unit art, motion clips, voice-over, and assembles the public reader.",
"inputSchema": {
"properties": {
"client_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Model or agent that authored the story, for provenance.",
"title": "Client Model"
},
"client_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Host app or client name, for provenance.",
"title": "Client Name"
},
"premise": {
"description": "Original premise the client used while authoring the submitted PanelScript story.",
"minLength": 10,
"title": "Premise",
"type": "string"
},
"start_production": {
"default": true,
"description": "Start artifact generation immediately after validation.",
"title": "Start Production",
"type": "boolean"
},
"story": {
"additionalProperties": true,
"description": "Client-authored Living Panels Story JSON. The server validates it, clears any producer-owned asset fields, then produces art, motion, and voices.",
"title": "Story",
"type": "object"
}
},
"required": [
"premise",
"story"
],
"type": "object"
},
"name": "comic_submit_design",
"outputSchema": null
},
{
"description": "Apply a client-authored Living Panels revision without using a server revision LLM. Targeted changes regenerate only inferred dirty producer nodes such as panel:<id>, motion:<id>, or tts:<bubble_id>.",
"inputSchema": {
"properties": {
"base_story_hash": {
"description": "Hash from comic_revision_brief. Prevents applying a patch over a stale story.",
"minLength": 8,
"title": "Base Story Hash",
"type": "string"
},
"changes": {
"description": "Targeted changes. Prefer this over full story replacement for small edits.",
"items": {
"properties": {
"path": {
"description": "Allowed Story JSON path from comic_revision_brief, e.g. pages[0].panels[1].cells[0].art.",
"title": "Path",
"type": "string"
},
"value": {
"description": "Replacement value for the target path.",
"title": "Value"
}
},
"required": [
"path",
"value"
],
"title": "ClientComicChangeInput",
"type": "object"
},
"title": "Changes",
"type": "array"
},
"client_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Model or agent that authored the revision, for provenance.",
"title": "Client Model"
},
"client_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Host app or client name, for provenance.",
"title": "Client Name"
},
"comic_id": {
"description": "Comic id to revise.",
"minLength": 1,
"title": "Comic Id",
"type": "string"
},
"dirty_nodes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Optional extra producer nodes, e.g. panel:p2u1, motion:p2u1, tts:p2u1a-b0.",
"title": "Dirty Nodes"
},
"start_production": {
"default": true,
"description": "Regenerate inferred dirty assets after saving.",
"title": "Start Production",
"type": "boolean"
},
"story": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"description": "Optional full replacement Story JSON. Targeted changes are cheaper/faster when possible.",
"title": "Story"
},
"summary": {
"default": "",
"description": "Client-authored one-line revision summary.",
"title": "Summary",
"type": "string"
}
},
"required": [
"comic_id",
"base_story_hash"
],
"type": "object"
},
"name": "comic_submit_revision",
"outputSchema": null
},
{
"description": "Write and produce a Living Panels interactive comic from a one-paragraph premise. One call writes a complete 5-page comic (panels, dialogue, motion plan, voice casting) and starts generating every asset in the background: character sheet, ~13 panels of art with character consistency, ambient image-to-video motion for the liveliest panels, and per-line voice-over. Returns immediately with the story summary and a public reader_url where the comic can be read, watched live, and heard. Production takes several minutes — poll comic_status until ready, then share the reader_url.",
"inputSchema": {
"properties": {
"premise": {
"description": "The story premise, one paragraph is plenty: who, where, the hook, the tone. Example: 'A neo-noir time-loop short: a night-shift radio host takes a call from her own voice, one day ahead.'",
"minLength": 10,
"title": "Premise",
"type": "string"
}
},
"required": [
"premise"
],
"type": "object"
},
"name": "create_comic",
"outputSchema": null
},
{
"description": "Create a private reusable DesignForYou template from a structured brief. The returned template_id works immediately with get_text_fields and generate. This stores a user-owned template in the canonical catalog collection; it does not publish it to the anonymous gallery.",
"inputSchema": {
"properties": {
"aspect_ratio": {
"description": "One of 16:9, 1:1, 4:5, or 9:16.",
"title": "Aspect Ratio",
"type": "string"
},
"base_prompt": {
"description": "Visual subject, style, and data-rendering requirements; plain layout text only.",
"maxLength": 6000,
"minLength": 40,
"title": "Base Prompt",
"type": "string"
},
"best_for": {
"description": "Optional concise use-case labels.",
"items": {
"type": "string"
},
"maxItems": 8,
"title": "Best For",
"type": "array"
},
"category": {
"description": "Supported category: Infographics, Instagram Posts, Instagram Stories, App Store Previews, Logos, Visual Novel, Cinematic Stills, Comic Panels, Living Panels Comics, Character References, Architecture Diagrams, or Developer Tools.",
"maxLength": 60,
"minLength": 3,
"title": "Category",
"type": "string"
},
"height": {
"description": "Canvas height in pixels, matching aspect_ratio.",
"maximum": 4096,
"minimum": 320,
"title": "Height",
"type": "integer"
},
"layout_rules": {
"description": "Stable layout hierarchy and chart/diagram rules; plain text only.",
"maxLength": 3000,
"minLength": 20,
"title": "Layout Rules",
"type": "string"
},
"name": {
"description": "Reusable template name; repeated identical names are idempotent.",
"maxLength": 100,
"minLength": 3,
"title": "Name",
"type": "string"
},
"subcategory": {
"anyOf": [
{
"maxLength": 60,
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional narrower catalog label.",
"title": "Subcategory"
},
"text_fields": {
"description": "Editable copy fields returned by get_text_fields.",
"items": {
"properties": {
"default_value": {
"description": "Default editable copy",
"maxLength": 240,
"minLength": 1,
"title": "Default Value",
"type": "string"
},
"key": {
"description": "Stable snake_case field key, e.g. headline",
"maxLength": 40,
"minLength": 1,
"title": "Key",
"type": "string"
},
"label": {
"description": "Human-readable field label",
"maxLength": 60,
"minLength": 2,
"title": "Label",
"type": "string"
},
"max_length": {
"default": 120,
"description": "Maximum copy length for this field",
"maximum": 240,
"minimum": 1,
"title": "Max Length",
"type": "integer"
}
},
"required": [
"key",
"label",
"default_value"
],
"title": "EditableTextFieldInput",
"type": "object"
},
"maxItems": 12,
"minItems": 1,
"title": "Text Fields",
"type": "array"
},
"width": {
"description": "Canvas width in pixels, matching aspect_ratio.",
"maximum": 4096,
"minimum": 320,
"title": "Width",
"type": "integer"
}
},
"required": [
"name",
"category",
"aspect_ratio",
"width",
"height",
"base_prompt",
"layout_rules",
"text_fields"
],
"type": "object"
},
"name": "create_template",
"outputSchema": null
},
{
"description": "Generate one or more finished images from a template (get a template_id from recommend_template or browse_templates) plus a description. Use this after the user has selected or explicitly supplied a template_id; otherwise call `recommend_template` first so the visual gallery can collect the selection. Works for all categories (Instagram, logo, app-store, Visual Novel backgrounds/sprites, CG illustrations). Pass variants for multi-image output (expressions, time-of-day, etc.). Pass session_id to refine a prior result. Pass context_ids to ground a new image on prior designs (character consistency for VN CG scenes). Set model to 'minimax-h3-image-balanced' or 'minimax-h3-image-quality' (or use the 'h3 balanced'/'h3 quality' aliases) to render through the MiniMax H3 image service; context_ids are forwarded as ordered H3 reference images.",
"inputSchema": {
"properties": {
"context_ids": {
"description": "Design IDs of prior outputs to use as visual context. Use for CG scenes that should match a previously generated character.",
"items": {
"type": "string"
},
"title": "Context Ids",
"type": "array"
},
"context_labels": {
"description": "Optional human labels for each context_id, in the SAME order. When the edit routes to a multi-reference model (gpt-image-2), an ordered legend ('reference image 1 = <label>, ...') is appended to the prompt so the model binds each named subject to its own reference instead of blending identities. Ignored for single-reference edits.",
"items": {
"type": "string"
},
"title": "Context Labels",
"type": "array"
},
"description": {
"description": "What you want - describe the scene, asset, or design in as much detail as needed",
"minLength": 1,
"title": "Description",
"type": "string"
},
"edit_tier": {
"anyOf": [
{
"pattern": "^(fast|pro|expert)$",
"type": "string"
},
{
"type": "null"
}
],
"description": "Quality tier when reference images (context_ids) are supplied. 'expert' routes the edit to gpt-image-2 for high-fidelity output; 'fast'/'pro' use Gemini. Ignored when no references are present.",
"title": "Edit Tier"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional image model override, such as grok-imagine-image-quality, gemini-3.1-flash-image, gpt-image-2, minimax-h3-image-balanced, or minimax-h3-image-quality. H3 aliases are 'h3 balanced' and 'h3 quality'.",
"enum": [
"grok-imagine-image-quality",
"gemini-3.1-flash-image",
"gpt-image-2",
"minimax-h3-image-balanced",
"minimax-h3-image-quality",
"h3 balanced",
"h3 quality"
],
"title": "Model"
},
"reference_labels": {
"description": "Optional labels aligned with reference_urls.",
"items": {
"type": "string"
},
"maxItems": 6,
"title": "Reference Labels",
"type": "array"
},
"reference_roles": {
"description": "Optional roles aligned with reference_urls, such as identity or location.",
"items": {
"type": "string"
},
"maxItems": 6,
"title": "Reference Roles",
"type": "array"
},
"reference_urls": {
"description": "Optional ordered inline or HTTPS image references for direct image-model grounding. Use with reference_labels and reference_roles when supplying cast or location images.",
"items": {
"type": "string"
},
"maxItems": 6,
"title": "Reference Urls",
"type": "array"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Pass the session_id from a prior generate call to continue refining. The model will edit the previous image instead of generating from scratch.",
"title": "Session Id"
},
"skip_prompt_merge": {
"default": false,
"description": "Skip the smart prompt-merge step (which compresses to ~150 words) and send the description through verbatim, with the template's base prompt concatenated for style. Use when the description is already complete and precise — e.g. a multi-character scene where each subject's outfit and a reference->subject legend must survive intact. Ignored on refines.",
"title": "Skip Prompt Merge",
"type": "boolean"
},
"template_id": {
"description": "Template ID from browse_templates",
"minLength": 1,
"title": "Template Id",
"type": "string"
},
"variants": {
"default": [
"default"
],
"description": "For character sheets: expression names e.g. ['neutral','smile','angry']. For backgrounds: time variants e.g. ['day','sunset','night']. For single images: omit or pass ['default'].",
"items": {
"type": "string"
},
"title": "Variants",
"type": "array"
}
},
"required": [
"template_id",
"description"
],
"type": "object"
},
"name": "generate",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Return the authenticated user's current credit balance, usage, and Stripe subscription status. Free to call.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "get_credits",
"outputSchema": null
},
{
"description": "List a template's editable text fields (headline, subhead, CTA, etc.) with their current values. Free. Use right after a template is chosen and BEFORE `generate` when you want to fill the template's fields precisely instead of relying on a freeform description.",
"inputSchema": {
"properties": {
"template_id": {
"description": "The template ID to get text fields for",
"minLength": 1,
"title": "Template Id",
"type": "string"
}
},
"required": [
"template_id"
],
"type": "object"
},
"name": "get_text_fields",
"outputSchema": null
},
{
"description": "Recommend the best matching templates for any use case. Describe what you need and the system auto-detects the category and ranks templates by relevance. Return the recommendations so the user can pick a template from the visual gallery; do not call `generate` in the same turn unless the user explicitly names a template_id or asks you to skip selection.",
"inputSchema": {
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional category override. Auto-detected from use_case if not provided.",
"title": "Category"
},
"needs": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Optional explicit needs such as favicon, navbar, og-image",
"title": "Needs"
},
"subcategory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional subcategory constraint such as lettermark or app_icon",
"title": "Subcategory"
},
"use_case": {
"description": "Describe what you need the template for (e.g. 'Instagram post for a restaurant daily special', 'logo for a fitness brand')",
"minLength": 1,
"title": "Use Case",
"type": "string"
}
},
"required": [
"use_case"
],
"type": "object"
},
"name": "recommend_template",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Generate one fixed-grid visual-novel character sprite sheet, crop it into cell assets, remove the chroma-key background, validate transparent sprites, and return a VN Creator-ready manifest. Base cost: 3 credits. Optional quality.hi_res_cells=true adds a reference-grounded per-cell re-render at full native resolution (fixes cells being limited to ~1/N of the sheet resolution) and bills +2 credits per cell re-rendered. quality.hi_res_model optionally routes the hi-res pass to a specific model (e.g. gpt-image-2 for fabric fidelity).",
"inputSchema": {
"properties": {
"cells": {
"items": {
"properties": {
"camera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Camera"
},
"direction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Direction"
},
"expression": {
"minLength": 1,
"title": "Expression",
"type": "string"
},
"id": {
"minLength": 1,
"title": "Id",
"type": "string"
},
"notes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Notes"
},
"pose": {
"minLength": 1,
"title": "Pose",
"type": "string"
},
"props": {
"items": {
"type": "string"
},
"title": "Props",
"type": "array"
}
},
"required": [
"id",
"pose",
"expression"
],
"title": "VNSpriteCell",
"type": "object"
},
"minItems": 1,
"title": "Cells",
"type": "array"
},
"character": {
"properties": {
"age_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Age Range"
},
"description": {
"additionalProperties": {
"type": "string"
},
"title": "Description",
"type": "object"
},
"id": {
"minLength": 1,
"title": "Id",
"type": "string"
},
"name": {
"minLength": 1,
"title": "Name",
"type": "string"
},
"role": {
"minLength": 1,
"title": "Role",
"type": "string"
}
},
"required": [
"id",
"name",
"role"
],
"title": "VNSpriteCharacter",
"type": "object"
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Image model override for the source sheet, e.g. gemini-3.1-flash-image.",
"title": "Model"
},
"output": {
"properties": {
"format": {
"const": "png",
"default": "png",
"title": "Format",
"type": "string"
},
"include_alpha_sprites": {
"default": true,
"title": "Include Alpha Sprites",
"type": "boolean"
},
"include_contact_sheets": {
"default": true,
"title": "Include Contact Sheets",
"type": "boolean"
},
"include_crops": {
"default": true,
"title": "Include Crops",
"type": "boolean"
},
"include_source_sheet": {
"default": true,
"title": "Include Source Sheet",
"type": "boolean"
}
},
"title": "VNSpriteOutputOptions",
"type": "object"
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Image provider override for the source sheet, e.g. gemini, grok, or a known model alias.",
"title": "Provider"
},
"quality": {
"properties": {
"generation_quality": {
"default": "high",
"title": "Generation Quality",
"type": "string"
},
"hi_res_cells": {
"default": false,
"description": "Opt-in: after cropping each cell from the consistency grid, run a reference-grounded image-to-image re-render of that cell at full native model resolution (the crop is the identity/pose reference). Fixes cells being limited to ~1/N of the sheet resolution. Billed as an extra image call per cell (+2 credits each).",
"title": "Hi Res Cells",
"type": "boolean"
},
"hi_res_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional model override for the per-cell hi-res re-render, e.g. gpt-image-2 for fabric fidelity. Defaults to the source sheet's provider/model. Accepts gemini, grok, and gpt-image-2 aliases.",
"title": "Hi Res Model"
},
"regenerate_on_validation_failure": {
"default": false,
"title": "Regenerate On Validation Failure",
"type": "boolean"
},
"validate_cells": {
"default": true,
"title": "Validate Cells",
"type": "boolean"
}
},
"title": "VNSpriteQualityOptions",
"type": "object"
},
"sheet": {
"properties": {
"background": {
"properties": {
"color": {
"default": "#00ff00",
"title": "Color",
"type": "string"
},
"mode": {
"const": "chroma_key",
"default": "chroma_key",
"title": "Mode",
"type": "string"
}
},
"title": "VNSpriteBackground",
"type": "object"
},
"cell_height": {
"minimum": 32,
"title": "Cell Height",
"type": "integer"
},
"cell_width": {
"minimum": 32,
"title": "Cell Width",
"type": "integer"
},
"full_body": {
"default": true,
"title": "Full Body",
"type": "boolean"
},
"layout": {
"default": "3x2",
"enum": [
"2x2",
"3x2",
"4x2"
],
"title": "Layout",
"type": "string"
},
"padding": {
"default": "generous",
"title": "Padding",
"type": "string"
}
},
"required": [
"cell_width",
"cell_height"
],
"title": "VNSpriteSheetConfig",
"type": "object"
},
"style": {
"properties": {
"consistency_reference_asset_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Consistency Reference Asset Id"
},
"consistency_reference_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Consistency Reference Url"
},
"preset": {
"minLength": 1,
"title": "Preset",
"type": "string"
},
"rendering": {
"minLength": 1,
"title": "Rendering",
"type": "string"
}
},
"required": [
"preset",
"rendering"
],
"title": "VNSpriteStyle",
"type": "object"
}
},
"required": [
"character",
"style",
"sheet",
"cells"
],
"type": "object"
},
"name": "vn_generate_sprite_sheet",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Return a fixed, no-cost DesignForYou widget payload for ChatGPT Apps debugging. Use this only to verify the template gallery/result iframe renders correctly; it does not generate images, use an LLM, or charge credits.",
"inputSchema": {
"properties": {
"mode": {
"default": "templates",
"description": "Which widget payload shape to return without generation.",
"pattern": "^(templates|recommendations|designs)$",
"title": "Mode",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "widget_diagnostic",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:1a3882055db897d2c79a103257dfeae2b0ff7165ba208258fe69cff46b66fd33 | sha256sum