Skip to main content
Glama

Add an image you generated to this R3 account

r3_image_create

Store a small image YOU generated in this R3 account's image library and get back the URL for it — the value R3ComponentTexture.url takes. This is how you make a checkerboard, a gradient, a test grid or a noise tile and then actually put it on something with r3_component_set.

Pass the image as a base64 data URL (data:image/png;base64,…), up to 1MB decoded. PNG, JPEG, GIF and WebP are stored; PNG is the right choice for a generated pattern.

This is NOT a way to upload an image file you already have. You would have to emit every byte of it as base64, which for a real texture is far more output than a reply can hold — and this server cannot read your disk. A person uploads real artwork in the R3 app, and r3_image_list shows what they have already put there: the account's own artwork, where there is some, beats a generated substitute.

Each call stores a NEW image, so calling it twice with the same bytes leaves two rows. The name you give is what appears in the owner's Images browser, prefixed with "agent-" so they can tell where it came from; a descriptive one says what it is.

For a material's texture set (colour + normal + roughness that tile), use r3_texture_create instead: R3 renders it, so no bytes go through you.

Input Schema

NameRequiredDescriptionDefault
nameYesA short plain-language name, e.g. "checkerboard 512". Stored as agent-checkerboard-512.png and shown to the account owner, so describe what the image IS.
dataUrlYesThe image, as data:image/png;base64,… — up to 1MB once decoded.

Output Schema

NameRequiredDescriptionDefault
urlYes
answerYesThis answer in words: what was done, what R3 measured, decided or refused, and what to do next. The same text as the result's text block. Read it: the fields beside it are the data, this is the guidance.
imageIdYes
filenameYes
mimeTypeYes
sizeBytesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / answer
      Added value: +{
      +  "description": "This answer in words: what was done, what R3 measured, decided or refused, and what to do next. The same text as the result's text block. Read it: the fields beside it are the data, this is the guidance.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "imageId",
      -  "url",
      -  "filename",
      -  "mimeType",
      -  "sizeBytes"
      -]New value: +[
      +  "imageId",
      +  "url",
      +  "filename",
      +  "mimeType",
      +  "sizeBytes",
      +  "answer"
      +]
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare non-readonly, non-idempotent, non-destructive and open-world; the description adds real behavioural context beyond them: the 1MB decoded limit, accepted formats, PNG as the recommended choice, that each call creates a NEW row even with identical bytes, and that the name is surfaced to the owner with an 'agent-' prefix. This is exactly the kind of consequence-level detail annotations cannot carry.

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?

Front-loaded with the core action and return value, then constraints, then exclusions/alternatives — a sensible order. It is on the long side at four paragraphs and repeats the 1MB/base64 point that the schema also states, but every remaining sentence carries information an agent needs.

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?

An output schema exists and the description still names the returned value (the URL for R3ComponentTexture.url), so return semantics are covered. Limits, formats, naming side effects, non-idempotency and sibling routing are all present; nothing material is missing for correct invocation.

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 baseline is 3; the description goes further by stating the exact data-URL form (data:image/png;base64,…), the decoded size ceiling, and the user-visible effect of 'name' (stored as agent-<name>.png and shown in the owner's browser), which the schema only partially conveys.

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?

States a concrete verb+resource ('Store a small image ... in this R3 account's image library and get back the URL') and explicitly frames its role in the workflow with r3_component_set. It is clearly distinguishable from r3_image_list (reading existing art) and r3_texture_create (server-rendered texture sets).

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 names the negative case ('NOT a way to upload an image file you already have') with the reason (base64 byte cost, no disk access) and routes to alternatives: r3_image_list for existing artwork, r3_texture_create for tiling material sets. The use case (checkerboard, gradient, test grid, noise tile) is spelled out.

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