Skip to main content
Glama

Upload image or file

upload_asset
Destructive

Place the user's own image or SVG file.

Input Schema

NameRequiredDescriptionDefault
xNo
yNo
asNo
fitNo
urlNo
nameNo
scrimNo
widthNo
heightNo
purposeNo
artboardNo
asset_idNo
data_urlNo
shape_idsNo
tile_sizeNo
corner_radiusNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed27 schema fields changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / artboard / anyOf
      Previous value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "maxLength": 120,
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / as / description
      Removed value: -"SVG only: shapes (default, editable) or image (one picture). Rasters are always images."
    • removedInput schema / properties / asset_id / description
      Removed value: -"ast_... from POST /api/v1/assets or an earlier upload_asset reply. Expires after 24 h."
    • removedInput schema / properties / asset_id / pattern
      Removed value: -"^ast_[a-z2-7]{16}$"
    • removedInput schema / properties / corner_radius / description
      Removed value: -"Images only."
    • removedInput schema / properties / corner_radius / minimum
      Removed value: -0
    • removedInput schema / properties / data_url / description
      Removed value: -"data:image/png;base64,... (or image/svg+xml). Small files only; use asset_id for anything over a few KB."
    • removedInput schema / properties / data_url / maxLength
      Removed value: -5592470
    • removedInput schema / properties / fit / description
      Removed value: -"Images only. Default cover."
    • removedInput schema / properties / height / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / name / maxLength
      Removed value: -120
    • removedInput schema / properties / purpose / description
      Removed value: -"artwork (default): place the user's file. pattern_tile: an SVG tile that repeats as the fill of shape_ids (patterns and textures only)."
    • changedInput schema / properties / scrim / anyOf
      Previous value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "color": {
      -        "maxLength": 64,
      -        "type": "string"
      -      },
      -      "direction": {
      -        "enum": [
      -          "bottom",
      -          "top",
      -          "left",
      -          "right"
      -        ],
      -        "type": "string"
      -      },
      -      "opacity": {
      -        "maximum": 1,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "start": {
      -        "maximum": 0.95,
      -        "minimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "description": "Scrim options: docs {tool}.",
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / scrim / description
      Removed value: -"Images only: a gradient wash so text over the picture reads."
    • removedInput schema / properties / shape_ids / description
      Removed value: -"pattern_tile only: the shapes to fill with the repeating tile."
    • removedInput schema / properties / shape_ids / items / maxLength
      Removed value: -128
    • removedInput schema / properties / shape_ids / maxItems
      Removed value: -200
    • removedInput schema / properties / shape_ids / minItems
      Removed value: -1
    • removedInput schema / properties / tile_size / description
      Removed value: -"pattern_tile only: the tile's width in document units (height follows the SVG's aspect). Default: the SVG's own width, capped at 128."
    • removedInput schema / properties / tile_size / maximum
      Removed value: -128
    • removedInput schema / properties / tile_size / minimum
      Removed value: -2
    • removedInput schema / properties / url / description
      Removed value: -"Direct https link to a PNG, JPEG, WebP, GIF or SVG file (not a web page)."
    • removedInput schema / properties / url / format
      Removed value: -"uri"
    • removedInput schema / properties / url / maxLength
      Removed value: -2048
    • removedInput schema / properties / width / exclusiveMinimum
      Removed value: -0
  2. First observed

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds only the 'user's own' sourcing nuance and says nothing about the destructive consequences of placement, how url/data_url/asset_id differ as sources, or what happens when placement overlaps existing shapes.

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

Conciseness2/5

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

It is a single short sentence with no padding, but the brevity comes from under-specification rather than economy; it front-loads nothing about the 16-parameter surface an agent must fill in.

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

Completeness1/5

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

For a 16-parameter, destructive, non-idempotent mutation with no output schema and no schema descriptions, the description is far from sufficient. An agent could not correctly supply placement coordinates, source selection, or fitting behavior from this text.

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

Parameters1/5

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

Sixteen parameters with 0% schema description coverage and no parameter discussion whatsoever in the description. Nothing explains x/y positioning, fit cover vs contain, 'as' auto/shapes/image, purpose artwork vs pattern_tile, tile_size, corner_radius, scrim, or the three mutually exclusive asset sources.

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

Purpose3/5

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

States a verb (place) and resource (image or SVG file) and adds the useful qualifier 'the user's own', distinguishing it from stock sources. But it does not distinguish itself from close siblings like place_image, set_reference_image, add_texture, or get_assets, so an agent cannot confidently pick between them from the description alone.

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

Usage Guidelines2/5

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

There is no indication of when to use this versus place_image, search_photos, get_assets, or add_texture, and no mention of prerequisites such as needing an open project or active artboard. Usage must be inferred entirely from the name.

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.