Acting direction for AI video and voice: state-based behaviour kits and a free prompt linter.
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.
Buy 20 paid calls for $1.00 in one x402 payment (USDC on Base). Returns an API key: send it as an `Authorization: Bearer <key>` header (or in params._meta["creatinginai/pack"]) on atlas_kit or atlas_draft instead of paying per call. Each successful call uses one credit; failed calls are free.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Buy 20 paid calls for $1.00 in one x402 payment (USDC on Base). Returns an API key: send it as an `Authorization: Bearer <key>` header (or in params._meta["creatinginai/pack"]) on atlas_kit or atlas_draft instead of paying per call. Each successful call uses one credit; failed calls are free.
No arguments.
{
"type": "object",
"properties": {}
}A first-draft acting paragraph assembled from the kit and fitted to the target's character cap, already linted. It reads mechanically: rewrite it as prose. A voice target gets the delivery line instead. Paid: $0.10 per call via x402 (USDC on Base), or prepaid credits with an API key (`Authorization: Bearer <key>`): 20 for $1.00 with atlas_buy_pack, or by card at https://creatinginai.com/agents#credits.
| Argument | Type | Description |
|---|---|---|
| name | string | Character name as it should appear in the prompt. |
| shot | string | Shot size, tightest to widest. Default MCU. |
| beats | integer | Beats in the kit. Default 3. |
| state* | object | The character's state for one beat. Only feels is required. |
| target | string | Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets. |
| element | string | Element handle for Elements mode, e.g. @char_noah. |
| eyeline | string | e.g. 'Mum is off frame LEFT; his eyes go LEFT to her' |
| pronoun | string | Default they. |
| modifiers | array | Modifier ids such as exhausted or child (atlas_search with table modifiers). |
{
"type": "object",
"required": [
"state"
],
"properties": {
"name": {
"type": "string",
"description": "Character name as it should appear in the prompt."
},
"shot": {
"enum": [
"ECU",
"CU",
"MCU",
"MS",
"WS"
],
"type": "string",
"description": "Shot size, tightest to widest. Default MCU."
},
"beats": {
"type": "integer",
"maximum": 4,
"minimum": 2,
"description": "Beats in the kit. Default 3."
},
"state": {
"type": "object",
"required": [
"feels"
],
"properties": {
"tell": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Size of the tell: 1 trace, 2 flicker, 3 slip, 4 crack, 5 break. Default: suggested from intensity and control."
},
"with": {
"type": "string",
"description": "For mask-with: the emotion shown instead."
},
"alone": {
"type": "string",
"description": "the private beat after the listener leaves"
},
"event": {
"type": "string",
"description": "what just happened"
},
"feels": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "object",
"required": [
"emotion"
],
"properties": {
"emotion": {
"type": "string"
},
"intensity": {
"type": "integer",
"maximum": 5,
"minimum": 1
}
}
}
}
],
"description": "What they feel inside, each with intensity 1-5: a string such as 'fear 4, guilt 3', or a list of {emotion, intensity}."
},
"shows": {
"type": "string",
"description": "What they show instead: open | deamplify | neutralize | mask-with | amplify | qualify. For mask-with, write 'mask-with:<emotion>' or set with. Default open."
},
"control": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Capacity to hold it right now. Default 3."
},
"journey": {
"type": "string",
"description": "arc stage and what they carry in"
},
"reveals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "the person present"
},
"will": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they are willing to show that person"
},
"wont": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they won't reveal to that person"
},
"because": {
"type": "string",
"description": "why they hide it, from this person, now"
},
"cracks_if": {
"type": "string",
"description": "what would crack the mask"
}
}
},
"description": "Who is present, and what is shown or hidden from them."
},
"direction": {
"enum": [
"opening",
"holding",
"closing",
"breaking"
],
"type": "string"
}
},
"description": "The character's state for one beat. Only feels is required."
},
"target": {
"type": "string",
"description": "Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets."
},
"element": {
"type": "string",
"description": "Element handle for Elements mode, e.g. @char_noah."
},
"eyeline": {
"type": "string",
"description": "e.g. 'Mum is off frame LEFT; his eyes go LEFT to her'"
},
"pronoun": {
"enum": [
"he",
"she",
"they"
],
"type": "string",
"description": "Default they."
},
"modifiers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modifier ids such as exhausted or child (atlas_search with table modifiers)."
}
}
}A character's arc beat by beat, with continuity flags: reset (intensity drops with no event), breach (a hidden feeling shown to the person it's hidden from), overshoot (a tell bigger than the feeling) and flat (beats that never change). Fields a beat leaves out carry over from the beat before. Free.
| Argument | Type | Description |
|---|---|---|
| project | string | Local only: a production folder holding journey.yaml. |
| character | string | Only this character. |
| characters | object | Character id -> list of beats. Each beat is a state (feels, shows, control, tell, reveals...) plus at (beat id) and event. |
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "Local only: a production folder holding journey.yaml."
},
"character": {
"type": "string",
"description": "Only this character."
},
"characters": {
"type": "object",
"description": "Character id -> list of beats. Each beat is a state (feels, shows, control, tell, reveals...) plus at (beat id) and event.",
"additionalProperties": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}The direction kit for a character state: beat-by-beat behaviour fitted to the shot size (where the tell can be seen), eye life, breath, the target model's rules and a voice delivery line. Write the acting prose from it, then atlas_lint the prose. Paid: $0.10 per call via x402 (USDC on Base), or prepaid credits with an API key (`Authorization: Bearer <key>`): 20 for $1.00 with atlas_buy_pack, or by card at https://creatinginai.com/agents#credits.
| Argument | Type | Description |
|---|---|---|
| name | string | Character name as it should appear in the prompt. |
| shot | string | Shot size, tightest to widest. Default MCU. |
| beats | integer | Beats in the kit. Default 3. |
| state* | object | The character's state for one beat. Only feels is required. |
| target | string | Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets. |
| element | string | Element handle for Elements mode, e.g. @char_noah. |
| eyeline | string | e.g. 'Mum is off frame LEFT; his eyes go LEFT to her' |
| pronoun |
Check an acting paragraph or voice direction before spending credits: emotion labels, mugging, looks into the lens, quoted speech on hosts that block it, a tell bigger than the state allows, and the target's character cap. ok is true when there are no errors; each finding carries its fix. Free.
| Argument | Type | Description |
|---|---|---|
| shot | string | Shot size, tightest to widest. Default MCU. |
| tell | integer | Optional, without a state: the largest tell allowed. |
| text* | string | The paragraph or voice direction to check. |
| allow | array | Anti-pattern ids to allow deliberately. |
| state | object | Optional: the state the text performs, to check the tell size. |
| target | string | Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets. |
| cracks_if | string | Optional, with tell: what cracks the mask. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"shot": {
"enum": [
"ECU",
"CU",
"MCU",
"MS",
"WS"
],
"type": "string",
"description": "Shot size, tightest to widest. Default MCU."
},
"tell": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Optional, without a state: the largest tell allowed."
},
"text": {
"type": "string",
"description": "The paragraph or voice direction to check."
},
"allow": {
"type": "array",
"items": {
"type": "string"
},
"description": "Anti-pattern ids to allow deliberately."
},
"state": {
"type": "object",
"required": [
"feels"
],
"properties": {
"tell": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Size of the tell: 1 trace, 2 flicker, 3 slip, 4 crack, 5 break. Default: suggested from intensity and control."
},
"with": {
"type": "string",
"description": "For mask-with: the emotion shown instead."
},
"alone": {
"type": "string",
"description": "the private beat after the listener leaves"
},
"event": {
"type": "string",
"description": "what just happened"
},
"feels": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "object",
"required": [
"emotion"
],
"properties": {
"emotion": {
"type": "string"
},
"intensity": {
"type": "integer",
"maximum": 5,
"minimum": 1
}
}
}
}
],
"description": "What they feel inside, each with intensity 1-5: a string such as 'fear 4, guilt 3', or a list of {emotion, intensity}."
},
"shows": {
"type": "string",
"description": "What they show instead: open | deamplify | neutralize | mask-with | amplify | qualify. For mask-with, write 'mask-with:<emotion>' or set with. Default open."
},
"control": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Capacity to hold it right now. Default 3."
},
"journey": {
"type": "string",
"description": "arc stage and what they carry in"
},
"reveals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "the person present"
},
"will": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they are willing to show that person"
},
"wont": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they won't reveal to that person"
},
"because": {
"type": "string",
"description": "why they hide it, from this person, now"
},
"cracks_if": {
"type": "string",
"description": "what would crack the mask"
}
}
},
"description": "Who is present, and what is shown or hidden from them."
},
"direction": {
"enum": [
"opening",
"holding",
"closing",
"breaking"
],
"type": "string"
}
},
"description": "Optional: the state the text performs, to check the tell size."
},
"target": {
"type": "string",
"description": "Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets."
},
"cracks_if": {
"type": "string",
"description": "Optional, with tell: what cracks the mask."
}
}
}Full-text search across behaviour cues, FACS action units, expressions, display strategies, emotions, situations, modifiers, model notes and targets. Search by emotion or situation; what comes back is behaviour. Free.
| Argument | Type | Description |
|---|---|---|
| shot | string | Shot size, tightest to widest. Default MCU. |
| text* | string | e.g. 'caught lying' |
| limit | integer | Default 15. |
| table | string | Limit to one table, e.g. cues, action_units, expressions, emotions, situations, modifiers, model_notes, targets. |
| channel | string | Limit to one leak channel id, e.g. lc-hands. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"shot": {
"enum": [
"ECU",
"CU",
"MCU",
"MS",
"WS"
],
"type": "string",
"description": "Shot size, tightest to widest. Default MCU."
},
"text": {
"type": "string",
"description": "e.g. 'caught lying'"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Default 15."
},
"table": {
"type": "string",
"description": "Limit to one table, e.g. cues, action_units, expressions, emotions, situations, modifiers, model_notes, targets."
},
"channel": {
"type": "string",
"description": "Limit to one leak channel id, e.g. lc-hands."
}
}
}One atlas record by id (or an emotion by name), with the records that use it. Free.
| Argument | Type | Description |
|---|---|---|
| id* | string | A record id from a kit or search, or an emotion name. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "A record id from a kit or search, or an emotion name."
}
}
}The target models the atlas knows, with each prompt field's character cap and what the model needs. Pass a target id to atlas_kit, atlas_draft and atlas_lint. Free.
No arguments.
{
"type": "object",
"properties": {}
}| string |
| Default they. |
| modifiers | array | Modifier ids such as exhausted or child (atlas_search with table modifiers). |
{
"type": "object",
"required": [
"state"
],
"properties": {
"name": {
"type": "string",
"description": "Character name as it should appear in the prompt."
},
"shot": {
"enum": [
"ECU",
"CU",
"MCU",
"MS",
"WS"
],
"type": "string",
"description": "Shot size, tightest to widest. Default MCU."
},
"beats": {
"type": "integer",
"maximum": 4,
"minimum": 2,
"description": "Beats in the kit. Default 3."
},
"state": {
"type": "object",
"required": [
"feels"
],
"properties": {
"tell": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Size of the tell: 1 trace, 2 flicker, 3 slip, 4 crack, 5 break. Default: suggested from intensity and control."
},
"with": {
"type": "string",
"description": "For mask-with: the emotion shown instead."
},
"alone": {
"type": "string",
"description": "the private beat after the listener leaves"
},
"event": {
"type": "string",
"description": "what just happened"
},
"feels": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "object",
"required": [
"emotion"
],
"properties": {
"emotion": {
"type": "string"
},
"intensity": {
"type": "integer",
"maximum": 5,
"minimum": 1
}
}
}
}
],
"description": "What they feel inside, each with intensity 1-5: a string such as 'fear 4, guilt 3', or a list of {emotion, intensity}."
},
"shows": {
"type": "string",
"description": "What they show instead: open | deamplify | neutralize | mask-with | amplify | qualify. For mask-with, write 'mask-with:<emotion>' or set with. Default open."
},
"control": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Capacity to hold it right now. Default 3."
},
"journey": {
"type": "string",
"description": "arc stage and what they carry in"
},
"reveals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "the person present"
},
"will": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they are willing to show that person"
},
"wont": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "feelings they won't reveal to that person"
},
"because": {
"type": "string",
"description": "why they hide it, from this person, now"
},
"cracks_if": {
"type": "string",
"description": "what would crack the mask"
}
}
},
"description": "Who is present, and what is shown or hidden from them."
},
"direction": {
"enum": [
"opening",
"holding",
"closing",
"breaking"
],
"type": "string"
}
},
"description": "The character's state for one beat. Only feels is required."
},
"target": {
"type": "string",
"description": "Target model id, e.g. kling-omni-single, seedance-2, generic-video, qwen-tts, elevenlabs-v3. See atlas_targets."
},
"element": {
"type": "string",
"description": "Element handle for Elements mode, e.g. @char_noah."
},
"eyeline": {
"type": "string",
"description": "e.g. 'Mum is off frame LEFT; his eyes go LEFT to her'"
},
"pronoun": {
"enum": [
"he",
"she",
"they"
],
"type": "string",
"description": "Default they."
},
"modifiers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modifier ids such as exhausted or child (atlas_search with table modifiers)."
}
}
}