designforyou
Generate logos, social posts, app screenshots, comic panels & visual-novel assets from prompts.
使うべきか
品質と安全性
検出事項(1)
- LOWbrowse_templates 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"designforyou": {
"url": "https://designforyou.swapp1990.org/mcp/v2/"
}
}
}リモートエンドポイント
https://designforyou.swapp1990.org/mcp/v2/streamable-httpできること
ツール一覧
ツール(14)
🟢browse_templates(category, subcategory)
Browse the DesignForYou template catalog. Optionally filter by category (e.g. 'instagram', 'app-store', 'logo', 'living-panels'). Returns template IDs, names, and previews.
入力スキーマ
{
"type": "object",
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"description": "Filter by category (e.g. 'instagram', 'app-store', 'logo')"
},
"subcategory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Subcategory",
"description": "Optional subcategory filter (e.g. 'lettermark', 'wordmark', 'app_icon')"
}
},
"required": []
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢recommend_template(use_case, needs, category, subcategory)
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.
入力スキーマ
{
"type": "object",
"properties": {
"use_case": {
"type": "string",
"minLength": 1,
"title": "Use Case",
"description": "Describe what you need the template for (e.g. 'Instagram post for a restaurant daily special', 'logo for a fitness brand')"
},
"needs": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Needs",
"description": "Optional explicit needs such as favicon, navbar, og-image"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"description": "Optional category override. Auto-detected from use_case if not provided."
},
"subcategory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Subcategory",
"description": "Optional subcategory constraint such as lettermark or app_icon"
}
},
"required": [
"use_case"
]
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢widget_diagnostic(mode)
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.
入力スキーマ
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"pattern": "^(templates|recommendations|designs)$",
"title": "Mode",
"description": "Which widget payload shape to return without generation.",
"default": "templates"
}
},
"required": []
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢get_text_fields(template_id)
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.
入力スキーマ
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"minLength": 1,
"title": "Template Id",
"description": "The template ID to get text fields for"
}
},
"required": [
"template_id"
]
}🟡generate(template_id, description, variants, context_ids, context_labels, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"minLength": 1,
"title": "Template Id",
"description": "Template ID from browse_templates"
},
"description": {
"type": "string",
"minLength": 1,
"title": "Description",
"description": "What you want - describe the scene, asset, or design in as much detail as needed"
},
"variants": {
"items": {
"type": "string"
},
"type": "array",
"title": "Variants",
"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'].",
"default": [
"default"
]
},
"context_ids": {
"items": {
"type": "string"
},
"type": "array",
"title": "Context Ids",
"description": "Design IDs of prior outputs to use as visual context. Use for CG scenes that should match a previously generated character."
},
"context_labels": {
"items": {
"type": "string"
},
"type": "array",
"title": "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."
},
"reference_urls": {
"items": {
"type": "string"
},
"type": "array",
"maxItems": 6,
"title": "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."
},
"reference_labels": {
"items": {
"type": "string"
},
"type": "array",
"maxItems": 6,
"title": "Reference Labels",
"description": "Optional labels aligned with reference_urls."
},
"reference_roles": {
"items": {
"type": "string"
},
"type": "array",
"maxItems": 6,
"title": "Reference Roles",
"description": "Optional roles aligned with reference_urls, such as identity or location."
},
"skip_prompt_merge": {
"type": "boolean",
"title": "Skip Prompt Merge",
"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.",
"default": false
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Session Id",
"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."
},
"edit_tier": {
"anyOf": [
{
"type": "string",
"pattern": "^(fast|pro|expert)$"
},
{
"type": "null"
}
],
"title": "Edit Tier",
"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."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"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",
"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'."
}
},
"required": [
"template_id",
"description"
]
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🔴vn_generate_sprite_sheet(character, style, sheet, cells, output, ...)
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).
入力スキーマ
{
"type": "object",
"properties": {
"character": {
"properties": {
"id": {
"type": "string",
"minLength": 1,
"title": "Id"
},
"name": {
"type": "string",
"minLength": 1,
"title": "Name"
},
"age_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Age Range"
},
"role": {
"type": "string",
"minLength": 1,
"title": "Role"
},
"description": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"title": "Description"
}
},
"type": "object",
"required": [
"id",
"name",
"role"
],
"title": "VNSpriteCharacter"
},
"style": {
"properties": {
"preset": {
"type": "string",
"minLength": 1,
"title": "Preset"
},
"rendering": {
"type": "string",
"minLength": 1,
"title": "Rendering"
},
"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"
}
},
"type": "object",
"required": [
"preset",
"rendering"
],
"title": "VNSpriteStyle"
},
"sheet": {
"properties": {
"layout": {
"type": "string",
"enum": [
"2x2",
"3x2",
"4x2"
],
"title": "Layout",
"default": "3x2"
},
"cell_width": {
"type": "integer",
"minimum": 32,
"title": "Cell Width"
},
"cell_height": {
"type": "integer",
"minimum": 32,
"title": "Cell Height"
},
"background": {
"properties": {
"mode": {
"type": "string",
"const": "chroma_key",
"title": "Mode",
"default": "chroma_key"
},
"color": {
"type": "string",
"title": "Color",
"default": "#00ff00"
}
},
"type": "object",
"title": "VNSpriteBackground"
},
"padding": {
"type": "string",
"title": "Padding",
"default": "generous"
},
"full_body": {
"type": "boolean",
"title": "Full Body",
"default": true
}
},
"type": "object",
"required": [
"cell_width",
"cell_height"
],
"title": "VNSpriteSheetConfig"
},
"cells": {
"items": {
"properties": {
"id": {
"type": "string",
"minLength": 1,
"title": "Id"
},
"pose": {
"type": "string",
"minLength": 1,
"title": "Pose"
},
"expression": {
"type": "string",
"minLength": 1,
"title": "Expression"
},
"props": {
"items": {
"type": "string"
},
"type": "array",
"title": "Props"
},
"camera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Camera"
},
"direction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Direction"
},
"notes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Notes"
}
},
"type": "object",
"required": [
"id",
"pose",
"expression"
],
"title": "VNSpriteCell"
},
"type": "array",
"minItems": 1,
"title": "Cells"
},
"output": {
"properties": {
"include_source_sheet": {
"type": "boolean",
"title": "Include Source Sheet",
"default": true
},
"include_crops": {
"type": "boolean",
"title": "Include Crops",
"default": true
},
"include_alpha_sprites": {
"type": "boolean",
"title": "Include Alpha Sprites",
"default": true
},
"include_contact_sheets": {
"type": "boolean",
"title": "Include Contact Sheets",
"default": true
},
"format": {
"type": "string",
"const": "png",
"title": "Format",
"default": "png"
}
},
"type": "object",
"title": "VNSpriteOutputOptions"
},
"quality": {
"properties": {
"generation_quality": {
"type": "string",
"title": "Generation Quality",
"default": "high"
},
"validate_cells": {
"type": "boolean",
"title": "Validate Cells",
"default": true
},
"regenerate_on_validation_failure": {
"type": "boolean",
"title": "Regenerate On Validation Failure",
"default": false
},
"hi_res_cells": {
"type": "boolean",
"title": "Hi Res Cells",
"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).",
"default": false
},
"hi_res_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hi Res Model",
"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."
}
},
"type": "object",
"title": "VNSpriteQualityOptions"
},
"provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Provider",
"description": "Image provider override for the source sheet, e.g. gemini, grok, or a known model alias."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"description": "Image model override for the source sheet, e.g. gemini-3.1-flash-image."
}
},
"required": [
"character",
"style",
"sheet",
"cells"
]
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢comic_design_brief(premise)
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.
入力スキーマ
{
"type": "object",
"properties": {
"premise": {
"type": "string",
"minLength": 10,
"title": "Premise",
"description": "Premise the client will use to author the Living Panels PanelScript JSON itself."
}
},
"required": [
"premise"
]
}🟡comic_submit_design(premise, story, client_name, client_model, start_production)
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.
入力スキーマ
{
"type": "object",
"properties": {
"premise": {
"type": "string",
"minLength": 10,
"title": "Premise",
"description": "Original premise the client used while authoring the submitted PanelScript story."
},
"story": {
"additionalProperties": true,
"type": "object",
"title": "Story",
"description": "Client-authored Living Panels Story JSON. The server validates it, clears any producer-owned asset fields, then produces art, motion, and voices."
},
"client_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Name",
"description": "Host app or client name, for provenance."
},
"client_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Model",
"description": "Model or agent that authored the story, for provenance."
},
"start_production": {
"type": "boolean",
"title": "Start Production",
"description": "Start artifact generation immediately after validation.",
"default": true
}
},
"required": [
"premise",
"story"
]
}🟡create_template(name, category, aspect_ratio, width, height, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 3,
"title": "Name",
"description": "Reusable template name; repeated identical names are idempotent."
},
"category": {
"type": "string",
"maxLength": 60,
"minLength": 3,
"title": "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."
},
"aspect_ratio": {
"type": "string",
"title": "Aspect Ratio",
"description": "One of 16:9, 1:1, 4:5, or 9:16."
},
"width": {
"type": "integer",
"maximum": 4096,
"minimum": 320,
"title": "Width",
"description": "Canvas width in pixels, matching aspect_ratio."
},
"height": {
"type": "integer",
"maximum": 4096,
"minimum": 320,
"title": "Height",
"description": "Canvas height in pixels, matching aspect_ratio."
},
"base_prompt": {
"type": "string",
"maxLength": 6000,
"minLength": 40,
"title": "Base Prompt",
"description": "Visual subject, style, and data-rendering requirements; plain layout text only."
},
"layout_rules": {
"type": "string",
"maxLength": 3000,
"minLength": 20,
"title": "Layout Rules",
"description": "Stable layout hierarchy and chart/diagram rules; plain text only."
},
"text_fields": {
"items": {
"properties": {
"key": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"title": "Key",
"description": "Stable snake_case field key, e.g. headline"
},
"label": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"title": "Label",
"description": "Human-readable field label"
},
"default_value": {
"type": "string",
"maxLength": 240,
"minLength": 1,
"title": "Default Value",
"description": "Default editable copy"
},
"max_length": {
"type": "integer",
"maximum": 240,
"minimum": 1,
"title": "Max Length",
"description": "Maximum copy length for this field",
"default": 120
}
},
"type": "object",
"required": [
"key",
"label",
"default_value"
],
"title": "EditableTextFieldInput"
},
"type": "array",
"maxItems": 12,
"minItems": 1,
"title": "Text Fields",
"description": "Editable copy fields returned by get_text_fields."
},
"subcategory": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "null"
}
],
"title": "Subcategory",
"description": "Optional narrower catalog label."
},
"best_for": {
"items": {
"type": "string"
},
"type": "array",
"maxItems": 8,
"title": "Best For",
"description": "Optional concise use-case labels."
}
},
"required": [
"name",
"category",
"aspect_ratio",
"width",
"height",
"base_prompt",
"layout_rules",
"text_fields"
]
}🟡create_comic(premise)
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.
入力スキーマ
{
"type": "object",
"properties": {
"premise": {
"type": "string",
"minLength": 10,
"title": "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.'"
}
},
"required": [
"premise"
]
}🟢comic_status(comic_id)
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.
入力スキーマ
{
"type": "object",
"properties": {
"comic_id": {
"type": "string",
"minLength": 1,
"title": "Comic Id",
"description": "Comic id returned by create_comic"
}
},
"required": [
"comic_id"
]
}🟢comic_revision_brief(comic_id)
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.
入力スキーマ
{
"type": "object",
"properties": {
"comic_id": {
"type": "string",
"minLength": 1,
"title": "Comic Id",
"description": "Comic id to revise."
}
},
"required": [
"comic_id"
]
}🟡comic_submit_revision(comic_id, base_story_hash, changes, story, dirty_nodes, ...)
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>.
入力スキーマ
{
"type": "object",
"properties": {
"comic_id": {
"type": "string",
"minLength": 1,
"title": "Comic Id",
"description": "Comic id to revise."
},
"base_story_hash": {
"type": "string",
"minLength": 8,
"title": "Base Story Hash",
"description": "Hash from comic_revision_brief. Prevents applying a patch over a stale story."
},
"changes": {
"items": {
"properties": {
"path": {
"type": "string",
"title": "Path",
"description": "Allowed Story JSON path from comic_revision_brief, e.g. pages[0].panels[1].cells[0].art."
},
"value": {
"title": "Value",
"description": "Replacement value for the target path."
}
},
"type": "object",
"required": [
"path",
"value"
],
"title": "ClientComicChangeInput"
},
"type": "array",
"title": "Changes",
"description": "Targeted changes. Prefer this over full story replacement for small edits."
},
"story": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Story",
"description": "Optional full replacement Story JSON. Targeted changes are cheaper/faster when possible."
},
"dirty_nodes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Dirty Nodes",
"description": "Optional extra producer nodes, e.g. panel:p2u1, motion:p2u1, tts:p2u1a-b0."
},
"summary": {
"type": "string",
"title": "Summary",
"description": "Client-authored one-line revision summary.",
"default": ""
},
"client_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Name",
"description": "Host app or client name, for provenance."
},
"client_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Client Model",
"description": "Model or agent that authored the revision, for provenance."
},
"start_production": {
"type": "boolean",
"title": "Start Production",
"description": "Regenerate inferred dirty assets after saving.",
"default": true
}
},
"required": [
"comic_id",
"base_story_hash"
]
}🟢get_credits
Return the authenticated user's current credit balance, usage, and Stripe subscription status. Free to call.
入力スキーマ
{
"type": "object",
"properties": {},
"required": []
}コミュニティ
エビデンス