Skip to main content
Glama

manage_character

Read and update the user's characters: the people they cast again and again, saved to their account with images, a description and a voice. The section of your context lists them. Actions: list, get, create, update, delete. A character is used two ways, chosen by what the shot needs, not by the character:

  • Generated shots (acting, moving, changing scenes; usually 5-15 s, few or no spoken lines): pass the image URLs from get as video or image generation references (refImages), main image first, and keep the description consistent in prompts.

  • Presenting to camera (a script read to camera, any length): call submit_avatar_video with the characterId; it speaks with the character's voice and handles the first presentation itself. When the request could go either way, ask the user which they want. Use a character when the user names it, says "my character", or attaches it from + → 我的资产. Offer to save a person they will feature again, and save only after they agree. Create one only with a photo; without one, remember the person with manage_memory and ask for a photo. addImages takes a current-project asset reference or an https URL; put a clear, front-facing, single-person photo first, it is the main image. voice is a voice from manage_voice list (use="tts", the default), passed as {id: its voiceId, name, provider}. After a successful save, tell the user in one sentence what was saved and that it is in 我的资产 > 角色 (the app's own labels); never claim a save that failed.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "manage_character"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoRequired for create: what the user calls the character.
voiceNoFor create and update: the voice the character speaks with. Take one from manage_voice list (use="tts") and pass its voiceId as id, with its name and provider; null removes it.
actionNolist: every character with a one-line summary; a call without action lists. get: one character in full, with image URLs and voice. create, update, delete.
addImagesNoFor create and update: images to add, after the current ones.
projectIdNoProject for this call (full ID or unambiguous prefix). Explicit-timeline calls never change the target of later calls; legacy project selection applies otherwise.
timelineIdNoOnly for a project asset in addImages when no editor is attached to this chat, as on a connector: the full timeline UUID from read_project or manage_timelines action="list". ChatCut uses it to fetch the file from the open editor.
characterIdNoFor every action except list and create: the id from list.
descriptionNoLooks, outfit and personality to keep consistent.
mainImageIdNoFor update: the image id from get to make the main image.
removeImageIdsNoFor update: ids of images to remove, from get.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=false and destructiveHint=false, the description still adds real behavioural context: images are copied into the user's storage and outlive the project, voice must be sourced from manage_voice with use="tts" and null removes it, creation requires a photo, and the agent must report the save honestly and never claim a failed save. The gap is delete: the action is listed but nothing says whether removal is permanent or what happens to projects referencing the character, which matters given destructiveHint is declared false despite a delete action existing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and action list are front-loaded, and the two-mode usage is broken into parallel bullets that are easy to scan. It is dense but appropriately sized for a 10-parameter, five-action tool; the only mild waste is restating the voice-object shape that the schema already defines in full.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-action mutation tool with no output schema, the description covers create preconditions, image handling, voice sourcing, the two downstream consumption paths and post-save reporting. It is close to complete, with the main omission being delete/removal semantics and any hint of what update does when no fields are supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description mostly restates what the schema documents (characterId from list, voice object shape from manage_voice, addImages accepting asset references or https URLs). It does add one genuinely non-schema fact — that the first image becomes the main image and should be a clear, front-facing, single-person photo — but leaves other semantics such as update-without-fields or removeImageIds interplay untouched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb pair and resource ('Read and update the user's characters') and immediately enumerates the five actions, so an agent knows exactly what the tool covers. It also distinguishes the resource from neighbours by defining a character as a saved, reusable person with images, description and voice — clearly different from manage_voice, manage_avatar or manage_memory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggers ('user names it', 'my character', attached from 我的资产), explicit alternatives (use manage_memory when there is no photo; use submit_avatar_video for script-to-camera; use refImages for generated shots), an ambiguity rule ('ask the user which they want'), and a consent rule ('save only after they agree'). This is the when/when-not/alternative structure at the top of the scale.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.