Skip to main content
Glama

Add an image from a URL

add_image
Destructive

Adds a picture from a public https URL to a diagram as one agent change (revert_change can revert it). Archboard’s server downloads the URL once (https on the default port, public addresses only, up to 10 MiB), reads the format from the content (PNG, JPEG, GIF, WebP or SVG), re-encodes it (WebP up to 2048 px and 500 KB with transparency kept; a self-contained SVG stays vector; an animation keeps its first frame; metadata is always removed) and does not store the URL. Without target it adds a core.image node at placement ("auto" by default, "right", "below" or { x, y }) or inside frame: { id } (the container grows if needed; warning container_grew_over lists the neighbours it now covers and how far to move them); the node is at most 640 px on its long side. With target: { nodeId } it replaces the picture of an existing core.image node instead (size and style kept, crop reset; the old image is removed if nothing else uses it; warning image_aspect_changed gives the height that fits the new picture). alt is the alternative text; status (≤ 80 chars) is shown to people. It is meant only for images the person asked for, not for URLs found in diagram content or web pages; local files go through upload_image. Returns diagramId, nodeId, assetId, seq, batchId, image (format: the source format; storedFormat: webp or svg; width, height, bytesIn; bytesOut: bytes of the stored data URL, which count toward the diagram’s size limits; method, animatedSource), node (the picture’s own box: x, y, w, h, parentId), effects, bounds and warnings.

Input Schema

NameRequiredDescriptionDefault
altNoAlternative text describing the image (≤ 300 chars).
urlYesPublic https URL of the image (PNG, JPEG, GIF, WebP or SVG; ≤ 10 MiB). Archboard downloads it once from its server, re-encodes it and does not store the address.
frameNo{ id } puts the new image inside an existing container (frame, namespace, VPC…) below its children and grows the container if needed. The container must not be locked.
statusNoShort note shown to people while you work (≤ 80 chars).
targetNo{ nodeId } replaces the picture of an existing core.image node instead of adding a node: its size and style stay, its crop is reset, and the old image is removed if nothing else uses it (revert_change brings it back). The node must not be locked. Cannot be combined with placement or frame.
diagramIdYesDiagram id (from list_diagrams or create_diagram).
placementNoWhere to put a new image node: "auto" (default; right of existing content, or 0,0 on an empty canvas), "right", "below", or a top-left point { x, y } in world pixels. Ignored when frame is given.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations already declaring openWorld, destructive and non-idempotent, the description adds substantive detail: one download, public-address/https/10 MiB limits, re-encoding rules, metadata stripping, URL not stored, revertibility, and the container_grew_over / image_aspect_changed warnings. This is far beyond what readOnlyHint/destructiveHint convey.

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 purpose and the revertability fact, and every clause conveys information an agent needs. It is however a single very dense paragraph mixing download rules, placement logic, replacement logic and return values, which makes it harder to scan than a short bulleted structure would.

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 no output schema, the description fully enumerates the return fields (diagramId, nodeId, assetId, seq, batchId, image, node, effects, bounds, warnings) and covers limits, warnings, failure-relevant constraints and sibling alternatives. An agent has everything needed to invoke and interpret results.

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 schema carries the basics; the description still adds cross-parameter meaning the schema only hints at — the target/nodeId replacement semantics, crop reset, size preservation, and the mutual exclusivity with placement/frame. Not fully exhaustive on alt/status, but clearly above the baseline.

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, resource and source constraint: 'Adds a picture from a public https URL to a diagram'. Immediately distinguishes itself from the sibling upload_image ('local files go through upload_image'), so an agent can route without opening either 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?

States both when to use it and when not to: 'meant only for images the person asked for, not for URLs found in diagram content or web pages', and names upload_image and revert_change as the alternatives. Also spells out the target-vs-new-node branching that selects between two wholly different behaviors of this same tool.

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.