Skip to main content
Glama

Add a photo

add_asset

Import an image into the tenant's asset library — either from a public https URL (mirrored into our storage; the source can expire afterwards) or from raw base64 bytes via image_base64 (≤8MB decoded; use when you hold the image and there is no public URL). Exactly one of image_url / image_base64. Images below 720px on the short side are rejected: a story is 1080×1920 and a smaller photo ships blurry — send the original, not a thumbnail or a web copy. Pass description/price for a product shot, and folder to file a batch together.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
priceNoOwner price in major units (82 for ₪82.00).
folderNoFolder name to file this under. Created if it doesn't exist.
handleNoInstagram handle (with or without @). Omit for your default account.
labelsNo
captionNo
contextYesExplain why you are calling this tool and how it fits into the business owner's goal for their Instagram presence. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include personal data, credentials, or the text of a draft. Example (20 words): "Reviewing the pending drafts before approving today's story, checking the caption matches the photo the owner expects."
currencyNoISO 4217, e.g. ILS.
image_urlNoPublic https image URL to import.
descriptionNoWhat this photo shows. Used as prompt context, and as the product blurb when a product is created from it.
image_base64NoRaw image bytes, base64-encoded (no data: prefix needed; one is tolerated).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "ISO 4217, e.g. ILS.",
      +  "maxLength": 3,
      +  "minLength": 3,
      +  "type": "string"
      +}
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "What this photo shows. Used as prompt context, and as the product blurb when a product is created from it.",
      +  "maxLength": 1000,
      +  "type": "string"
      +}
    • addedInput schema / properties / folder
      Added value: +{
      +  "description": "Folder name to file this under. Created if it doesn't exist.",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / labels
      Added value: +{
      +  "items": {
      +    "maxLength": 32,
      +    "type": "string"
      +  },
      +  "maxItems": 12,
      +  "type": "array"
      +}
    • addedInput schema / properties / price
      Added value: +{
      +  "description": "Owner price in major units (82 for ₪82.00).",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that URL sources are mirrored into tenant storage and can expire, that base64 payloads are limited to 8MB decoded, and that sub-720px images are rejected with a user-facing rationale. These are non-obvious behaviors an agent would not infer from readOnlyHint/idempotentHint alone.

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 sentences, all front-loaded with the primary verb, then alternatives, constraints, and optional usage. There is no filler or redundant restatement of schema fields.

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?

Despite 10 parameters and no output schema, the description supplies the decisive guidance an agent needs to invoke correctly: input mode selection, size/resolution limits, product-shot behavior, and batch filing. The remaining parameters are covered by the schema, and the import workflow does not require a detailed return-value contract.

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?

With schema coverage already at 80%, the description adds the exclusive-one-of constraint, the decoded size limit, the 720px resolution rule, and the 'source can expire afterwards' reassurance for URL imports. It does not enrich every parameter, but the schema documents those, so the description clearly adds value beyond the schema.

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?

The description opens with a specific verb and object — 'Import an image into the tenant's asset library' — and the title 'Add a photo' reinforces it. It clearly separates this tool from siblings like delete_asset and download_draft_image by framing the action as ingestion.

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?

It explicitly tells the agent when to use image_url vs image_base64 ('use when you hold the image and there is no public URL') and mandates exactly one of them. It also gives guidance to send the original rather than a thumbnail or web copy, but it never explicitly contrasts add_asset with sibling tools like curate_images or list_assets.

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