Skip to main content
Glama

Upload an image

traceable_image_upload

Upload an image to a document and get back the src to place it with. Pass the image as base64 in content with its name. PNG, JPEG, GIF, WebP or AVIF, detected from the bytes, not the name; SVG is not accepted. At most 3 MB. The result's trmd is alt: write it in a text row, a table cell or an ID row's text cell with traceable_block_write, traceable_block_update, traceable_segment_write or traceable_grid_cell, adding {width=60%,align=center} after it to size it. Uploading places nothing by itself. A write may only place an image the application holds: a src on another site or a data: URI is refused. Calling it twice uploads twice. In an organisation under controlled releases this tool works once an admin turns it on in Org settings > Releases.

Input Schema

NameRequiredDescriptionDefault
altNoAlternative text for the image; defaults to the file name
nameYesThe file name, e.g. "system-context.png"
contentYesThe image, base64-encoded (a data: URL prefix is accepted)
documentIdYesThe document the image will be placed in

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations mark it as a non-read, non-idempotent, non-destructive write, and the description adds real substance beyond that: format is detected from bytes not name, a 3 MB cap, that calling twice uploads twice (consistent with idempotentHint=false), foreign/data: URI refusal, and the controlled-release gate. This is rich context the annotations alone do not 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?

The purpose and return value are front-loaded in the first sentence, and subsequent sentences each carry distinct constraints (formats, size, placement, permission). It is dense and long for a single paragraph, but almost no sentence is redundant.

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?

There is no output schema, yet the description fully describes the return shape ('The result's `trmd` is ![alt](src)') plus the width/align suffix syntax, so an agent knows how to consume and place the result. Combined with format, size, and permission constraints, nothing needed to call it correctly 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: format is inferred from the bytes rather than the `name`, and `content` is base64 with an accepted data: prefix. It also explains what `name` drives (the default alt) and that only app-held srcs are writable.

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 specific verb and resource ('Upload an image to a document') and names the concrete outcome ('get back the src to place it with'). This clearly separates it from traceable_image_view, traceable_library_upload, and traceable_test_plan_evidence_upload, so an agent can select it without opening schemas.

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 says uploading places nothing by itself and names the four tools that actually place the image (traceable_block_write/update, traceable_segment_write, traceable_grid_cell), including where the src goes. It also gives the when-not condition (SVG refused, external/data: URIs refused) and the admin-enablement prerequisite.

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