[ { "type": "function", "function": { "name": "set_name", "description": "Set the agent's name (its display name; export slugifies it).", "parameters": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 128 } }, "required": [ "name" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "set_role", "description": "Set the agent's model-role \u2014 one of: assistant (general), thoughtful-assistant (reasoning general), character (RP/writing-tuned), thoughtful-character (reasoning RP). Export ships it as the native agents.define `role`.", "parameters": { "type": "object", "properties": { "role": { "type": "string", "enum": [ "assistant", "thoughtful-assistant", "character", "thoughtful-character" ] } }, "required": [ "role" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "set_ocean", "description": "Merge OCEAN dials (each in [-1,1]); re-derives the disposition.", "parameters": { "type": "object", "properties": { "O": { "type": "number", "minimum": -1, "maximum": 1 }, "C": { "type": "number", "minimum": -1, "maximum": 1 }, "E": { "type": "number", "minimum": -1, "maximum": 1 }, "A": { "type": "number", "minimum": -1, "maximum": 1 }, "N": { "type": "number", "minimum": -1, "maximum": 1 } }, "minProperties": 1, "additionalProperties": false } } }, { "type": "function", "function": { "name": "edit_prompt", "description": "Replace the authored role/instructions block (the exported system prompt).", "parameters": { "type": "object", "properties": { "system_prompt": { "type": "string", "minLength": 1, "maxLength": 32768 } }, "required": [ "system_prompt" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "attach_tool", "description": "Attach (upsert by id) a tool the designed agent will bind via Bifrost.", "parameters": { "type": "object", "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 256 }, "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "description": { "type": "string", "maxLength": 2048 } }, "required": [ "id", "name" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "author_first_message", "description": "Set the agent's in-character opening turn (tone + format by example).", "parameters": { "type": "object", "properties": { "first_message": { "type": "string", "minLength": 1, "maxLength": 32768 } }, "required": [ "first_message" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "edit_psych_profile", "description": "Author the character's Psychological Profile & Experience \u2014 a ~150-300 word prose lens (the self-report producer reads it every turn) covering four dimensions: disposition/appraisal bent, attention/salience focus, values/yardstick, and formative history. Integrate them as one paragraph and CLOSE ON ATTENTION \u2014 what the character characteristically notices ('...notices who is unwell, what is left unsaid'). Guardrails: (1) NEVER name a per-event output emotion ('is anxious', 'feels hurt') \u2014 naming PRIMES it, so it fires regardless of the event; describe the bent and let emotion follow from the appraisal. (2) Magnitude lives in the OCEAN dials, not the prose (don't narrate 'comes apart'/'takes it hard'). (3) Appraisal-STYLE yes ('reads others charitably until she can't'), output-emotion no. (4) Salience is character-relative \u2014 never rewrite what happened.", "parameters": { "type": "object", "properties": { "psych_profile": { "type": "string", "minLength": 1, "maxLength": 8192 } }, "required": [ "psych_profile" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "generate_portrait", "description": "Generate the agent's persona portrait NOW from a visual `description` you author \u2014 the persona's LOOK (e.g. 'a stern woman in her 40s, short dark hair, sharp jaw'). A persona is personality, not appearance, so YOU compose the appearance in conversation and pass it here; describe only the subject, never the art style. `style_mode` (anime | cartoon | photoreal) selects the curated render style \u2014 the style preset owns the look. Generation runs in the background; the portrait pane shows it when ready. Offer/generate a portrait once the look is settled.", "parameters": { "type": "object", "properties": { "description": { "type": "string", "minLength": 1, "maxLength": 500 }, "style_mode": { "type": "string", "enum": [ "anime", "cartoon", "photoreal" ] } }, "required": [ "description" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "export", "description": "Export the native payload + sidecar bundle (stub \u2014 lands in E5).", "parameters": { "type": "object", "properties": {}, "additionalProperties": false } } } ]