{"name":"org.swapp1990.designforyou/designforyou","slug":"designforyou","title":null,"description":"Generate logos, social posts, app screenshots, comic panels & visual-novel assets from prompts.","url":"https://mcp.market/server/designforyou","rating":null,"grade":"B","score":76,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":18,"stars":0,"forks":1,"downloads_week":null,"last_push_at":"2026-07-29T21:46:44.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T10:55:40.655Z","last_ok_at":"2026-11-04T10:55:40.655Z","latency_ms":53},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/swapp1990/designforyou-mcp","website":"https://designforyou.swapp1990.org","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://designforyou.swapp1990.org/mcp/v2/"}],"packages":[],"tools":[{"name":"audition","description":"Start a casting audition: the chosen actor performs your cue in a short (~8-10s) vertical video. Billed. Returns audition_id immediately; poll audition_status every few seconds until status=ready, then share video_url. Get actor_id from casting_roster.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"batch_approved":{"type":"boolean","title":"Batch Approved","description":"Required after five Omni launches by this user within one hour.","default":false},"actor_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Actor Id","description":"Actor id from casting_roster/create_actor. Omit when casting_id is provided."},"casting_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Casting Id","description":"Story-character casting id from cast_character. Preferred for repeatable story takes."},"cue":{"type":"string","maxLength":600,"minLength":3,"title":"Cue","description":"The scene the actor performs — a short direction, e.g. 'reads a rejection letter and slowly crumples it'."},"emotion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emotion","description":"Emotional register for the take. Suggested values: Dramatic, Comedy, Villain, Tearful, Action, Romantic."},"line":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Line","description":"Optional single spoken line the actor delivers aloud during the take."},"direction_notes":{"anyOf":[{"type":"string","maxLength":600},{"type":"null"}],"title":"Direction Notes","description":"Optional director note applied to this take while preserving actor identity and casting."}},"required":["cue"]}},{"name":"audition_status","description":"Check a casting audition started with audition: status (rendering / ready / failed) and, when ready, the video_url to share. Free to call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"audition_id":{"type":"string","minLength":1,"title":"Audition Id","description":"Audition id returned by audition"}},"required":["audition_id"]}},{"name":"browse_templates","description":"Browse the DesignForYou template catalog. Optionally filter by category (e.g. 'instagram', 'app-store', 'logo', 'living-panels'). Returns template IDs, names, and previews.","write_action":false,"price_micros":0,"input_schema":{"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":[]}},{"name":"cast_character","description":"Bind a seeded or private actor to one story character. Returns a casting_id that keeps character identity and story provenance across takes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"actor_id":{"type":"string","minLength":1,"title":"Actor Id"},"story_id":{"type":"string","maxLength":128,"minLength":1,"title":"Story Id"},"character_name":{"type":"string","maxLength":80,"minLength":1,"title":"Character Name"},"character_description":{"type":"string","maxLength":1200,"minLength":10,"title":"Character Description","description":"Story-facing character identity, role, wardrobe, voice, and performance constraints. The actor's face remains unchanged."},"source_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Source Url"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes"}},"required":["actor_id","story_id","character_name","character_description"]}},{"name":"casting_roster","description":"List only the public seeded LetMeActForYou casting roster with headshots, type, and bio. This public catalog never includes a user's private actors; authenticated users can retrieve those with my_actors. Call this first, show the user the seed actors, then call audition with the chosen actor_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"castingrosterinput":{"properties":{},"type":"object","title":"CastingRosterInput"}},"required":[]}},{"name":"comic_design_brief","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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"comic_revision_brief","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"comic_id":{"type":"string","minLength":1,"title":"Comic Id","description":"Comic id to revise."}},"required":["comic_id"]}},{"name":"comic_status","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"comic_id":{"type":"string","minLength":1,"title":"Comic Id","description":"Comic id returned by create_comic"}},"required":["comic_id"]}},{"name":"comic_submit_design","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.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"comic_submit_revision","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>.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_actor","description":"Create a private LetMeActForYou actor draft. Generates a casting headshot, stores it on S3, and returns actor_id for cast_character or audition. Draft actors never appear in the public feed; an authorized operator can call publish_actor with an approved seamless idle-loop URL when the actor is ready. When available, provide a saved full-body standing performance_reference_url; all generated clips prioritize it over the profile headshot. The default casting template produces an original Pixar-quality 3D animated feature-film headshot; pass stable fictional physical identity, not performance direction. Apparent age may be child, teen, adult, or elderly.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"},"visual_description":{"type":"string","maxLength":600,"minLength":20,"title":"Visual Description","description":"Stable physical identity for the actor headshot and later takes: apparent age (child, teen, adult, or elderly), ethnicity, facial structure, hair, build, and baseline wardrobe. Keep identities fictional. Use one concise identity description only; do not include a scene, cue, dialogue, camera direction, other people, props, logos, or a request to imitate an existing character."},"actor_type":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Actor Type"},"bio":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bio"},"emoji":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Emoji"},"headshot_template_id":{"type":"string","maxLength":100,"minLength":1,"title":"Headshot Template Id","description":"Character References template used to generate the actor headshot.","default":"acting_casting_headshot"},"performance_reference_url":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Performance Reference Url","description":"Saved full-body standing reference image URL used as the starting frame for every performance clip. Keep this separate from the profile headshot."}},"required":["name","visual_description"]}},{"name":"create_comic","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.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"create_template","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.","write_action":true,"price_micros":0,"input_schema":{"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"]}},{"name":"delete_actor","description":"Delete an unused private actor and headshot. Refuses seeded actors and actors referenced by active castings or auditions. Destructive and free.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"actor_id":{"type":"string","maxLength":80,"minLength":1,"title":"Actor Id"}},"required":["actor_id"]}},{"name":"delete_audition","description":"Permanently remove the authenticated user's media and user-authored direction for one ready or refunded-failed audition. Keeps a minimal tombstone for billing, refund, and lineage audit. Destructive and free.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"audition_id":{"type":"string","maxLength":80,"minLength":1,"title":"Audition Id"}},"required":["audition_id"]}},{"name":"delete_casting","description":"Delete an unused authenticated-user casting. Refuses while active auditions reference it. Destructive and free.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"casting_id":{"type":"string","maxLength":80,"minLength":1,"title":"Casting Id"}},"required":["casting_id"]}},{"name":"generate","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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"generate_scene_frame","description":"Generate one actor-grounded narrative first frame from one to four existing LetMeActForYou actor_ids plus location, wardrobe, pose, and composition. Uses actor headshots as image references and returns a stored image_url. For multi-shot continuity, first generate a wide scene reference, then pass its scene_frame_id as continuity_scene_frame_id while specifying a fresh camera setup in composition and fresh blocking in pose for every shot. Pass only the actor_ids that should be visible in that shot. Pass composition_reference_url to preserve a Blender previs frame's camera and blocking while replacing proxy geometry with actors and the finished set. Defaults to Gemini; pass provider='grok' to use Grok Imagine. Use this before animation when a close-up headshot is not enough.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"actor_ids":{"items":{"type":"string"},"type":"array","maxItems":4,"minItems":1,"title":"Actor Ids","description":"One to four actor ids from casting_roster, my_actors, or create_actor. The generated frame uses their headshots as identity references."},"location":{"type":"string","maxLength":500,"minLength":3,"title":"Location","description":"Physical set or location for the narrative frame."},"wardrobe":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Wardrobe","description":"Wardrobe direction for the actor(s), if different from their baseline identity."},"pose":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Pose","description":"Body pose, blocking, or pre-action moment to capture."},"composition":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Composition","description":"Camera framing and layout, e.g. wide two-shot, over-the-shoulder, low angle."},"mood":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Mood","description":"Optional lighting or emotional tone."},"continuity_scene_frame_id":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Continuity Scene Frame Id","description":"Optional scene_frame_id owned by the caller to use as a scene-continuity reference. It preserves set topology, fixed furniture, props, lighting motivation, and wardrobe, but pose and composition define a new camera setup and new actor blocking. Pass only the actors visible in this shot."},"composition_reference_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Composition Reference Url","description":"Optional HTTPS image URL for a previs frame whose camera, blocking, subject scale, screen positions, and visible landmarks should be preserved."},"aspect_ratio":{"type":"string","enum":["16:9","9:16"],"title":"Aspect Ratio","description":"Output canvas. Use 16:9 for landscape film/TV coverage.","default":"9:16"},"provider":{"type":"string","enum":["gemini","grok"],"title":"Provider","description":"Image provider for actor-grounded frame generation. Use 'grok' to route to Grok Imagine; Grok supports up to 3 actor reference images.","default":"gemini"},"model":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Model","description":"Optional image model override, e.g. gemini-3.1-flash-image or grok-imagine-image-quality."}},"required":["actor_ids","location"]}},{"name":"get_credits","description":"Return the authenticated user's current credit balance, usage, and Stripe subscription status. Free to call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"required":[]}},{"name":"get_text_fields","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"template_id":{"type":"string","minLength":1,"title":"Template Id","description":"The template ID to get text fields for"}},"required":["template_id"]}},{"name":"my_actors","description":"List only the authenticated user's private reusable LetMeActForYou actors, newest first. Free. Supports bounded offset pagination and never returns internal identity prompts or visual descriptions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"title":"Limit","description":"Maximum private actors to return.","default":20},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"Zero-based actor offset.","default":0}},"required":[]}},{"name":"my_auditions","description":"List only the authenticated user's LetMeActForYou audition history, newest first. Free. Supports bounded offset pagination and an optional queued, rendering, ready, or failed status filter.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"title":"Limit","description":"Maximum auditions to return.","default":20},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"Zero-based audition offset.","default":0},"status":{"anyOf":[{"type":"string","pattern":"^(queued|rendering|ready|failed)$"},{"type":"null"}],"title":"Status","description":"Optional exact audition status filter."}},"required":[]}},{"name":"publish_actor","description":"Promote an operator-owned actor draft into the shared public LetMeActForYou roster and bind its approved seamless idle-loop video. Only configured public actor publishers and first-party internal services can call this tool. Auditions remain private to the user who generated them.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"actor_id":{"type":"string","maxLength":80,"minLength":1,"title":"Actor Id","description":"Private actor draft id returned by create_actor."},"idle_video_url":{"type":"string","maxLength":4000,"minLength":12,"title":"Idle Video Url","description":"HTTPS URL for the actor's approved seamless idle-loop MP4."},"order":{"type":"integer","maximum":100000,"minimum":0,"title":"Order","description":"Public feed ordering; lower values appear first.","default":1000}},"required":["actor_id","idle_video_url"]}},{"name":"recommend_template","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.","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"report_casting_abuse","description":"Report a visible LetMeActForYou actor or an audition owned by the authenticated user. Free. Stores bounded triage metadata without copying prompts, media URLs, billing data, or account identity.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"target_type":{"type":"string","enum":["actor","audition"],"title":"Target Type"},"target_id":{"type":"string","maxLength":80,"minLength":1,"title":"Target Id"},"reason":{"type":"string","enum":["sexual_content","minor_safety","impersonation","violence","harassment","other"],"title":"Reason"},"details":{"type":"string","maxLength":1000,"title":"Details","default":""}},"required":["target_type","target_id","reason"]}},{"name":"revise_audition","description":"Create a child take from an existing audition. Inherits actor, story casting, cue, emotion, and line unless overrides are supplied, while preserving parent/root ids and the director note.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"batch_approved":{"type":"boolean","title":"Batch Approved","description":"Required after five Omni launches by this user within one hour.","default":false},"parent_audition_id":{"type":"string","minLength":1,"title":"Parent Audition Id"},"direction_notes":{"type":"string","maxLength":600,"minLength":3,"title":"Direction Notes"},"cue":{"anyOf":[{"type":"string","maxLength":600,"minLength":3},{"type":"null"}],"title":"Cue"},"emotion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emotion"},"line":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Line"}},"required":["parent_audition_id","direction_notes"]}},{"name":"vn_generate_sprite_sheet","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).","write_action":false,"price_micros":0,"input_schema":{"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"]}},{"name":"widget_diagnostic","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mode":{"type":"string","pattern":"^(templates|recommendations|designs)$","title":"Mode","description":"Which widget payload shape to return without generation.","default":"templates"}},"required":[]}}],"scan":{"score":76,"grade":"B","scanned_at":"2026-09-26T21:22:40.469Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T21:22:40.460Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 403ms"]},"poisoning":{"score":15,"max":15,"notes":["28 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 10 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 59 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://designforyou.swapp1990.org/mcp/v2/","reachable":true,"authRequired":false,"latencyMs":403,"serverInfo":{"name":"designforyou","version":"3.4.7"}}],"packages":[],"repo":{"found":true,"owner":"swapp1990","repo":"designforyou-mcp","archived":false,"pushedAt":"2026-07-29T21:46:44Z","stars":0,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/13361505?v=4","ownerCreatedAt":"2015-07-16T07:02:47Z","license":"MIT"},"icon":{"url":"https://designforyou.swapp1990.org/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":0,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-29T21:46:44.000Z","score":18}}}},"grade_history":[],"reviews":[]}