Skip to main content
Glama

Create an asset

create_asset

Save images or clips as named account assets for reuse as characters, locations, styles, props, or other references, kept until deleted.

Instructions

Save a picture or a clip as an asset of this account, kept until you delete it: a character, location, style, prop or other, with a name. source is {run_id} of a succeeded generate_image or generate_video run of this account, {upload_id} of an upload from upload_image or create_upload, a public https {url} the server downloads (add kind: "video" for an MP4), {base64, media_type} of a PNG or JPEG up to 700000 bytes, or {put: {media_type, bytes, sha256}} to PUT a local file yourself: the answer carries upload.put_url and put_headers; run curl -X PUT -H 'content-type: <media_type>' --data-binary @<file> '<put_url>' within 15 minutes, then call get_asset. On a server running on your machine also {path} of a local PNG, JPEG or MP4. A clip is an MP4 in h264 or hevc, up to 120 seconds and 100 MB; a url clip or a PUT is checked in the background, so the answer says state: "processing" (or "awaiting_upload") and get_asset says ready or failed within minutes. For your own material (upload_id, url, base64, put, path) pass rights_confirmed: true, which states once that you may use the people and works in it. A reference you only want analysed, such as someone else's ad for analyze_reference, takes analysis_only: true instead: no rights claim, and no render or generation ever takes it. Use a picture's asset_id as {asset_id} in references, first_frame or last_frame of quote_image, generate_image, quote_video and generate_video; clips are kept for assembly and are no generation reference yet. Assets are free: creating, storing and using one spends no credits. An account keeps up to 2000 assets and 20 GB, and makes up to 100 new ones per day.

Input Schema

NameRequiredDescriptionDefault
nameYes
roleYes
sourceYes
analysis_onlyNoKeep it for analyze_reference only, without rights_confirmed: it never reaches a render or a generation.
rights_confirmedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.35.0
    • addedInput schema / properties / analysis_only
      Added value: +{
      +  "const": true,
      +  "description": "Keep it for analyze_reference only, without rights_confirmed: it never reaches a render or a generation.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv0.34.0
    • changedInput schema / properties / source / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "run_id": {
      -        "pattern": "^run_[a-zA-Z0-9]+$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "run_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "upload_id": {
      -        "pattern": "^upl_[a-f0-9]{32}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "upload_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "url": {
      -        "format": "starts_with",
      -        "maxLength": 2048,
      -        "pattern": "^https:\\/\\/.*",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "base64": {
      -        "maxLength": 933336,
      -        "minLength": 1,
      -        "pattern": "^[A-Za-z0-9+/]+={0,2}$",
      -        "type": "string"
      -      },
      -      "media_type": {
      -        "enum": [
      -          "image/png",
      -          "image/jpeg"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "base64",
      -      "media_type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "path": {
      -        "description": "Absolute or cwd-relative path to a PNG or JPEG file; only on a server running on your machine",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "path"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "run_id": {
      +        "pattern": "^run_[a-zA-Z0-9]+$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "run_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "upload_id": {
      +        "pattern": "^upl_[a-f0-9]{32}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "upload_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "enum": [
      +          "image",
      +          "video"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "format": "starts_with",
      +        "maxLength": 2048,
      +        "pattern": "^https:\\/\\/.*",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "base64": {
      +        "maxLength": 933336,
      +        "minLength": 1,
      +        "pattern": "^[A-Za-z0-9+/]+={0,2}$",
      +        "type": "string"
      +      },
      +      "media_type": {
      +        "enum": [
      +          "image/png",
      +          "image/jpeg"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "base64",
      +      "media_type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "put": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "bytes": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 104857600,
      +            "type": "integer"
      +          },
      +          "media_type": {
      +            "enum": [
      +              "image/png",
      +              "image/jpeg",
      +              "video/mp4"
      +            ],
      +            "type": "string"
      +          },
      +          "sha256": {
      +            "pattern": "^[a-f0-9]{64}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "media_type",
      +          "bytes",
      +          "sha256"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "put"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "path": {
      +        "description": "Absolute or cwd-relative path to a PNG, JPEG or MP4 file; only on a server running on your machine",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Addedv0.33.0

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the 15-minute PUT window and required curl command, background verification states (processing, awaiting_upload, then ready/failed via get_asset), clip limits (120 seconds, 100 MB, h264/hevc), quota limits (2000 assets, 20 GB, 100/day), and the fact that assets are free. The readOnlyHint=false / destructiveHint=false annotations are consistent with a non-destructive create.

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?

The purpose is front-loaded and every paragraph carries operational value. It is dense and somewhat run-on, especially the source enumeration, so it earns a 4 rather than a 5 for structure.

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 complex five-parameter creation tool with no output schema, the description covers source options, rights behavior, asynchronous processing, follow-up calls, quota constraints, and downstream reference usage. Nothing an agent needs before invoking it appears to be missing.

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

Parameters5/5

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

Schema description coverage is only 20%, but the description compensates by explaining every source variant in detail: run_id, upload_id, url plus kind, base64 plus media_type, put with media_type/bytes/sha256, and path. It also explains rights_confirmed and analysis_only, giving meaning the bare schema does not.

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?

Starts with a specific verb and resource: save a picture or clip as an account asset, kept until deleted. Enumerates the roles (character, location, style, prop, other) and distinguishes the tool from siblings such as analyze_reference, upload_image, create_upload, and get_asset.

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?

Explicitly routes between source types: a succeeded generate_image/generate_video run_id, an upload_id from upload_image/create_upload, a public https URL, base64 bytes, a self-directed PUT, or a local path. It also states when to use rights_confirmed instead of analysis_only, and instructs the follow-up get_asset call after a PUT.

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