Skip to main content
Glama

Create a subject

create_subject
Idempotent

Name an identity so it can be reused. Offer one when something the user brought appears in a second generation, never unasked, and write into its description what it lacks as well as what it has ("no mouth, only a stitched black nose"). Only for people the user has the right to depict; a real person needs their consent. Pass identity images — a generation you just made, or an upload — and every later generation tagged with this subject gets that face without you finding the file again. A subject with no images still travels as its name and description.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>",
      "kind": "<kind>"
    },
    "name": "create_subject"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYes
nameYes
tagsNoThe same tags the account puts on its work, so one tag can group a client's people and products beside what was made of them. Replaces the whole list — send the tags it should end up with.
coverNoThe wide one, behind the name on its card. Null takes it off.
sheetNoA character sheet for a person to read: hero pose, turnaround, palette. Held for a reader and never seated as a model reference — seating a collage teaches the model to render the collage. Null takes it off.
voiceNoA voice to bind, so tagging this subject into a voice-over arms the audio seat as well as the face.
avatarNoThe small round one — a shelf, a rail, a tag. Null takes it off.
identityNoThe face that travels, as references. The first is canonical: it is the one a model is shown.
descriptionNo
prompt_fragmentNoThe words that travel into every prompt this subject is tagged into. The caller's own prompt is never rewritten — only what the provider receives.

Output Schema

NameRequiredDescriptionDefault
messageYes
subjectYesSomeone or something you make again and again. Name it in `subjects` and Kuro brings its face and description.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedOutput schema / properties / subject / description
      Added value: +"Someone or something you make again and again. Name it in `subjects` and Kuro brings its face and description."
    • addedOutput schema / properties / subject / properties / app_url / $ref
      Added value: +"#/properties/subject/properties/preview_url/anyOf/0"
    • removedOutput schema / properties / subject / properties / app_url / format
      Removed value: -"uri"
    • removedOutput schema / properties / subject / properties / app_url / type
      Removed value: -"string"
    • addedOutput schema / properties / subject / properties / created_at
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • addedOutput schema / properties / subject / properties / has_voice
      Added value: +{
      +  "description": "Whether a voice is bound to it, for voice-overs.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / subject / properties / id
      Added value: +{
      +  "format": "uuid",
      +  "type": "string"
      +}
    • addedOutput schema / properties / subject / properties / identity_images / description
      Added value: +"How many reference pictures travel with it. Zero: it travels as words alone."
    • changedOutput schema / properties / subject / properties / identity_images / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / subject / properties / kind / description
      Added value: +"\"character\", \"location\", \"product\", \"prop\" or \"wardrobe\". New values may be added."
    • removedOutput schema / properties / subject / properties / kind / enum
      Removed value: -[
      -  "character",
      -  "location",
      -  "product",
      -  "prop",
      -  "wardrobe"
      -]
    • addedOutput schema / properties / subject / properties / object
      Added value: +{
      +  "const": "subject",
      +  "type": "string"
      +}
    • removedOutput schema / properties / subject / properties / subject_id
      Removed value: -{
      -  "format": "uuid",
      -  "type": "string"
      -}
    • changedOutput schema / properties / subject / required
      Previous value: -[
      -  "subject_id",
      -  "name",
      -  "kind",
      -  "description",
      -  "prompt_fragment",
      -  "identity_images",
      -  "identity_object_ids",
      -  "voice",
      -  "tags",
      -  "favorite",
      -  "preview_url",
      -  "appearance_count",
      -  "subject",
      -  "app_url"
      -]New value: +[
      +  "object",
      +  "id",
      +  "name",
      +  "kind",
      +  "description",
      +  "identity_images",
      +  "has_voice",
      +  "tags",
      +  "preview_url",
      +  "created_at",
      +  "app_url",
      +  "prompt_fragment",
      +  "identity_object_ids",
      +  "voice",
      +  "favorite",
      +  "appearance_count",
      +  "subject"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / tags / description
      Previous value: -"Replaces the whole list — send the tags it should end up with."New value: +"The same tags the account puts on its work, so one tag can group a client's people and products beside what was made of them. Replaces the whole list — send the tags it should end up with."
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the annotations (which declare a non-destructive, idempotent write), the description adds real behavioral context: identity images persist so later generations inherit the face without re-finding the file, and a subject with no images still travels by name and description. It also states a consent/permission gate for real people, which no annotation conveys. Idempotency and the effect of re-calling are left to the annotation.

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?

Core purpose is front-loaded, followed by the when-to-use rule, then the image-reuse behavior, then the constraint — a sensible order with little redundancy. The prose is somewhat literary ('what it lacks as well as what it has', the stitching example) and could be trimmed, but each sentence carries operational content.

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

Completeness5/5

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

For a 10-parameter tool with nested objects, the description covers the non-obvious parts an agent would otherwise get wrong: when to propose a subject, the consent limit, how identity references propagate, and the fact that images are optional. Return values are covered by the output schema and most trivial fields by the schema descriptions, so nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 70%, and the description adds genuine meaning to the ambiguous fields: 'description' should record what the subject lacks as well as what it has (with a worked example), and 'identity' accepts either a fresh generation or an upload and becomes the canonical face used in later prompts. Fields such as tags, cover, sheet, avatar and voice are left entirely to their schema text.

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

Purpose4/5

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

The opening line, 'Name an identity so it can be reused,' states a specific action and the resource's purpose, and the later sentence about faces travelling into tagged generations makes the object concrete. It does not, however, distinguish itself from delete_subject, update_subject, or list_subjects, so the agent gets no explicit boundary against siblings.

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

Usage Guidelines4/5

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

Usage is unusually well signposted: 'Offer one when something the user brought appears in a second generation, never unasked' gives both a trigger condition and an explicit exclusion against proactive creation. What's missing is naming an alternative for the revise case (update_subject) or how this relates to save_subject_performances.

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.

Resources