Skip to main content
Glama

Create asset

create_asset

Create an asset (image, logo, video). By reference: body.url is kept as a pointer and fetched when a sync needs the bytes, so it must stay reachable. By bytes: body.data (base64) — or body.url with body.store true — stores the file in Growomat; upload_asset is the simpler door for that. Every response carries previewUrl, a link you can open. Returns the full updated/created object. Scoped to the active Space — see set_active_space to switch, or pass space_id to override for this one call.

Input Schema

NameRequiredDescriptionDefault
bodyYesRequest body matching the AssetCreate schema. Fields below; see the OpenAPI spec for nested object shapes.
space_idNoOverride the active Space for this one call. Defaults to the active Space set via set_active_space (or GROWOMAT_SPACE_ID on the server). Pass to read/write a different Space without changing the session binding.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / body / properties / data
      Added value: +{
      +  "description": "The image itself, base64-encoded (a data: URL is accepted). JPEG, PNG, WebP or GIF, up to 10 MB. Growomat stores it and reads its type, width and height from the bytes. Send this OR url.",
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / fileName
      Added value: +{
      +  "description": "With data: the stored file's name.",
      +  "type": "string"
      +}
    • addedInput schema / properties / body / properties / store
      Added value: +{
      +  "description": "With url: fetch the image once and store it in Growomat, so a link that expires (a chat attachment, a pre-signed URL) keeps working. Images only.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / body / required
      Removed value: -[
      -  "url"
      -]
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare it is a non-read-only, non-destructive write. The description adds real behavior the annotations can't: the URL must stay reachable because it is fetched lazily on sync, store=true snapshots expiring links, every response carries previewUrl, and the full object is returned. That is substantive disclosure beyond structured fields.

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?

Dense but front-loaded: the core create statement and mode split come first, then response and scoping notes. Every sentence carries information, though the phrasing is packed and slightly elliptical ('upload_asset is the simpler door for that').

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 nested-body mutation tool with no output schema, it covers the essential things an agent needs: creation modes, return shape (previewUrl, full object), and Space scoping. It leaves error/failure handling and the optional field set to the schema but nothing critical 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 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema by explaining how url, data and store interact (pointer vs stored bytes) and the ephemeral-URL failure mode. Not a 5 because it repeats somewhat and omits any framing of the remaining optional fields.

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?

Opens with a specific verb and resource plus the concrete asset kinds (image, logo, video), and immediately distinguishes itself from the sibling upload_asset. An agent can tell create_asset apart from upload_asset/update_asset without opening a 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?

Explicitly lays out the two operating modes: by-reference (body.url kept as a pointer) versus by-bytes (body.data base64, or url with store=true). It names the alternative ('upload_asset is the simpler door for that') and explains override behavior via space_id vs set_active_space.

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