Skip to main content
Glama

create_character_from_description

Invent a new character from a text description and generate its portrait — the full "make me a character, no photo involved" path in ONE call, instead of gluing together create_character + update_character + generate_character_image yourself.

name: short and unique among YOUR OWN characters (see list_characters()) — how
you'll refer to this character afterwards, e.g. character="detective_marlowe" in
generate_with_face.
description: physical description — build, hair, eyes, clothing, distinguishing
features. Saved on the character's card AND used to generate the portrait, so
write it as concretely as you would any image prompt.
account: Google account (and its project) to create the character under.

The portrait is written to Flow's card exactly ONCE — that slot cannot be
regenerated. Calling this again with the SAME name does not retry it: it fails
fast with a clear message instead of hitting a raw HTTP 500 downstream. Want a
different look? Use a new name.

Returns {"name", "entity_id", "portrait_media_id", "portrait_url", "hint"} once
done. Next step for ANY further image of this character: generate_with_face(
character=name, prompt="...") — never entity_id/character_slot_index, which only
works for that one portrait write and cannot place the character into new scenes.

Input Schema

NameRequiredDescriptionDefault
nameYes
modelNoBELUGA
aspectNoIMAGE_ASPECT_RATIO_PORTRAIT
accountYes
descriptionYes
display_nameNo
portrait_promptNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / aspect / enum
      Previous value: -[
      -  "IMAGE_ASPECT_RATIO_LANDSCAPE",
      -  "IMAGE_ASPECT_RATIO_PORTRAIT",
      -  "IMAGE_ASPECT_RATIO_SQUARE"
      -]New value: +[
      +  "IMAGE_ASPECT_RATIO_LANDSCAPE",
      +  "IMAGE_ASPECT_RATIO_PORTRAIT",
      +  "IMAGE_ASPECT_RATIO_SQUARE",
      +  "IMAGE_ASPECT_RATIO_LANDSCAPE_FOUR_THREE",
      +  "IMAGE_ASPECT_RATIO_PORTRAIT_THREE_FOUR"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / model / default
      Previous value: -"GEM_PIX_2"New value: +"BELUGA"
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "NARWHAL",
      -  "GEM_PIX_2",
      -  "HARBOR_SEAL"
      -]New value: +[
      +  "BELUGA",
      +  "GEM_PIX_2",
      +  "HARBOR_SEAL"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / model / default
      Previous value: -"NARWHAL"New value: +"GEM_PIX_2"
  4. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false, but the description adds critical non-obvious behavior: the portrait slot is written exactly once and cannot be regenerated, and re-calling with the same name fails fast rather than surfacing an HTTP 500. It also documents the return payload shape, going well beyond what the annotations cover.

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?

Front-loads the core purpose and the value proposition in the first sentence, then uses labeled parameter notes and a return/next-step block. It is on the long side, but the labeled structure makes it scannable and most sentences carry needed detail.

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 7-parameter, no-output-schema mutation tool, the description compensates well by explaining the return fields and the mandatory follow-up workflow (use generate_with_face, never entity_id). The main gap is the four undocumented optional parameters (model, aspect, display_name, portrait_prompt), which an agent cannot reason about from the description.

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 0%, so the description carries full burden. It documents name (uniqueness scope), description (dual use for card and portrait, concrete-prompt guidance), and account (Google account/project) well. However, 7 parameters exist and model, aspect, display_name, and portrait_prompt are left entirely undocumented in both schema and description, so it only partially compensates.

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 description states a specific verb and resource ('Invent a new character from a text description and generate its portrait') and explicitly positions it as the 'no photo involved' path, distinct from create_character_from_photo. It also names the sibling tools (create_character, update_character, generate_character_image) it replaces. An agent can tell immediately what this does and how it differs from siblings.

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?

Explicit when-to-use ('make me a character, no photo involved'), names the alternatives it replaces, and provides a clear next step (generate_with_face) plus a when-not condition ('Want a different look? Use a new name'). Nothing is left to inference.

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.