Skip to main content
Glama

Import image

import_image

Upload image files to the permanent workspace media library and receive a reusable asset with a public delivery URL. Add logos, photos, or graphics for slideshows and brands.

Instructions

Upload a new image file into the permanent workspace media library, storing the binary asset on Cloudflare R2 and registering metadata in Directus. Call to add reusable media assets (logos, photos, graphics) for use across slideshow runs and brands. Do NOT use for transient template draft canvas images (use import_template_image instead). Requires workspace write permissions. Returns created Image record with generated imageId and public delivery URL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileNoBase64-encoded image data or local file path.
nameNoHuman-readable asset title in media library.
filenameNoOriginal filename with extension (e.g. header.png).
sourceUrlNoOriginal source URL if importing from web/unsplash/pinterest.
rightsStatusNoRights ownership status: licensed_for_publish | user_owned | generated | rights_unknown

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoPublic delivery URL.
imageIdNoCreated image ID.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.17
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "imageId": {
      +      "description": "Created image ID.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "Public delivery URL.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed5 schema fields changedv0.1.16
    • addedInput schema / properties / file / description
      Added value: +"Base64-encoded image data or local file path."
    • addedInput schema / properties / filename / description
      Added value: +"Original filename with extension (e.g. header.png)."
    • addedInput schema / properties / name / description
      Added value: +"Human-readable asset title in media library."
    • addedInput schema / properties / rightsStatus / description
      Added value: +"Rights ownership status: licensed_for_publish | user_owned | generated | rights_unknown"
    • addedInput schema / properties / sourceUrl / description
      Added value: +"Original source URL if importing from web/unsplash/pinterest."
  3. First observedv0.1.13

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare the safety profile (readOnly false, destructive false, idempotent false). The description adds real behavioral context: the asset is stored on Cloudflare R2 with metadata registered in Directus, write permissions are needed, and it returns a created record with imageId and a public delivery URL. The only gap is that it never addresses idempotency/duplicate handling despite idempotentHint=false.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the core action, then usage, then exclusion, then requirement. Every sentence adds distinct information with no filler.

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?

With annotations, a fully-described 5-param schema, and an output schema present, the description covers everything an agent needs: what it does, when to use it, the sibling alternative, the permission requirement, and the storage/return behavior.

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 all five parameters are already documented in the schema. The description adds no extra syntax, format, or defaulting guidance for file/name/filename/sourceUrl/rightsStatus beyond what structured data provides, which is the baseline 3.

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?

Specific verb+resource: 'Upload a new image file into the permanent workspace media library', and it distinguishes itself from import_template_image by name. An agent can tell it apart from the other image siblings without reading any schema.

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 ('add reusable media assets for slideshow runs and brands') and an explicit when-not with the alternative ('Do NOT use for transient template draft canvas images (use import_template_image instead)'). It also states the permission prerequisite ('Requires workspace write permissions').

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