Consistent prompts for one human character across image and video models. Paid per call, x402.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Build a consistent prompt set for one human character: a canonical image prompt with every appearance fact labelled, negative prompts that stop traits like glasses or a cane from vanishing, a video prompt, and optionally a contact sheet that holds everything fixed and walks one axis. Works with any image or video model. Text keeps wardrobe and framing stable; for the same FACE across images, generate the canonical frame once and pass it back as a reference image (has_reference). Paid per call over x402: the first attempt answers HTTP 402 with the price. Invalid arguments are refused before any payment.
What to call the character in the prompt. Optional.
The clip.
Details models tend to drop. Include a key only if the character has it.
The shot. Unset axes use neutral defaults.
Return a contact sheet: one prompt per option of this axis, everything else held.
The canon. Every prompt carries it verbatim. At least one field, or a trait, is required.
True when a canonical image will be attached; the prompts then defer the face to it.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Build a consistent prompt set for one human character: a canonical image prompt with every appearance fact labelled, negative prompts that stop traits like glasses or a cane from vanishing, a video prompt, and optionally a contact sheet that holds everything fixed and walks one axis. Works with any image or video model. Text keeps wardrobe and framing stable; for the same FACE across images, generate the canonical frame once and pass it back as a reference image (has_reference). Paid per call over x402: the first attempt answers HTTP 402 with the price. Invalid arguments are refused before any payment.
| Argument | Type | Description |
|---|---|---|
| name | string | What to call the character in the prompt. Optional. |
| video | object | The clip. |
| traits | object | Details models tend to drop. Include a key only if the character has it. |
| choices | object | The shot. Unset axes use neutral defaults. |
| walk_axis | string | Return a contact sheet: one prompt per option of this axis, everything else held. |
| appearance | object | The canon. Every prompt carries it verbatim. At least one field, or a trait, is required. |
| custom_traits | array | |
| has_reference | boolean | True when a canonical image will be attached; the prompts then defer the face to it. |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "What to call the character in the prompt. Optional."
},
"video": {
"type": "object",
"properties": {
"camera": {
"enum": [
"locked",
"push-in",
"push-out",
"orbit"
],
"type": "string",
"description": "Camera move"
},
"motion": {
"enum": [
"blink",
"breathe",
"weight",
"turn-to",
"look-away",
"smile",
"step",
"speak",
"hair"
],
"type": "string",
"description": "Motion"
},
"ambient": {
"enum": [
"still",
"breeze",
"dust",
"flicker"
],
"type": "string",
"description": "Ambient"
}
},
"description": "The clip.",
"additionalProperties": false
},
"traits": {
"type": "object",
"properties": {
"ink": {
"type": "string",
"description": "where they are, what they show, how visible under clothing. Adds a negative prompt that stops it disappearing between generations."
},
"glasses": {
"type": "string",
"description": "frame shape, colour, thickness, tint. Adds a negative prompt that stops it disappearing between generations."
},
"headwear": {
"type": "string",
"description": "what it is, how it sits, how much hair it covers. Adds a negative prompt that stops it disappearing between generations."
},
"mobility": {
"type": "string",
"description": "wheelchair, cane, crutches, prosthesis — type, material, which side. Adds a negative prompt that stops it disappearing between generations."
},
"facial-hair": {
"type": "string",
"description": "style, length, how grey. Adds a negative prompt that stops it disappearing between generations."
}
},
"description": "Details models tend to drop. Include a key only if the character has it.",
"additionalProperties": false
},
"choices": {
"type": "object",
"properties": {
"lens": {
"enum": [
"35",
"50",
"85",
"135",
"none"
],
"type": "string",
"description": "Lens. One of: 35, 50, 85, 135, none"
},
"seed": {
"type": "string",
"description": "Hold it across a set; a contact sheet is only comparable with the seed fixed."
},
"shot": {
"enum": [
"full",
"three-quarter",
"medium",
"close",
"extreme-close"
],
"type": "string",
"description": "Shot size. One of: full, three-quarter, medium, close, extreme-close"
},
"angle": {
"enum": [
"eye",
"low",
"high",
"three-quarter-turn",
"profile",
"none"
],
"type": "string",
"description": "Camera angle. One of: eye, low, high, three-quarter-turn, profile, none"
},
"style": {
"enum": [
"photo",
"cinematic",
"illustration",
"painterly",
"render3d",
"anime"
],
"type": "string",
"description": "Render style. One of: photo, cinematic, illustration, painterly, render3d, anime"
},
"action": {
"type": "string",
"description": "Action. One of: standing, squared, walking, turning, over-shoulder, seated, leaning, arms-crossed, reaching, crouched, speaking, still-profile, sitting-desk, hands-pockets, laughing — or free text of your own."
},
"lighting": {
"enum": [
"soft-key",
"rim",
"golden",
"overcast",
"low-key",
"practical",
"none"
],
"type": "string",
"description": "Lighting. One of: soft-key, rim, golden, overcast, low-key, practical, none"
},
"environment": {
"type": "string",
"description": "Environment. One of: seamless, neutral, interior, street, landscape, none — or free text of your own."
}
},
"description": "The shot. Unset axes use neutral defaults.",
"additionalProperties": false
},
"walk_axis": {
"enum": [
"action",
"shot",
"angle",
"lens",
"lighting",
"environment",
"style"
],
"type": "string",
"description": "Return a contact sheet: one prompt per option of this axis, everything else held."
},
"appearance": {
"type": "object",
"properties": {
"eyes": {
"type": "string",
"description": "colour, shape, anything unusual"
},
"face": {
"type": "string",
"description": "features, apparent age, how they hold their expression"
},
"hair": {
"type": "string",
"description": "colour, length, style"
},
"held": {
"type": "string",
"description": "bag, phone, cup, tool — what the hands actually hold"
},
"skin": {
"type": "string",
"description": "tone, texture, freckles, scars, lines"
},
"build": {
"type": "string",
"description": "height, frame, posture"
},
"outfit": {
"type": "string",
"description": "materials, colours, silhouette"
},
"distinguishing": {
"type": "string",
"description": "the one detail someone would describe first"
}
},
"description": "The canon. Every prompt carries it verbatim. At least one field, or a trait, is required.",
"additionalProperties": false
},
"custom_traits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "e.g. Scarf"
},
"description": {
"type": "string",
"description": "e.g. Red knit scarf, wrapped twice"
}
},
"description": "A trait not in the list.",
"additionalProperties": false
},
"maxItems": 6
},
"has_reference": {
"type": "boolean",
"description": "True when a canonical image will be attached; the prompts then defer the face to it."
}
},
"additionalProperties": false
}